それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

aptインストールを速くする(no-install をデフォルト設定とする)

急いでいるときに、すこしでもaptを速くしたい

apt の src を高速なミラーとかローカルミラーを使えば少し早くなる。んだけど、それだけだとまだ足りない。

Aptで余計なものを入れなければいいんだと思うんですよね。

apt.conf にrecommends と suggestを除外する設定を書く

tee を使って apt に no-recommends と no-suggests を書き込む

echo -e  "APT::Install-Suggests 0;\nAPT::Install-Recommends 0;" | sudo tee /etc/apt/apt.conf.d/00-no-install-recommends

実際にコマンドを実行するとこんな感じ.

takuya@ubuntu01:/etc/apt/apt.conf.d$ echo -e  "APT::Install-Suggests 0;\nAPT::Install-Recommends 0;" | sudo tee /etc/apt/apt.conf.d/00-no-install-recommends
APT::Install-Suggests 0;
APT::Install-Recommends 0;

最後に設定が有効になったか確認

apt の設定が有効になったかは、apt-config コマンドを使えばわかる。

apt-config dump  | grep Install

次のように、recommends と suggest がインストール無効(0)が有効になったのがわかる。

takuya@ubuntu01:/etc/apt/apt.conf.d$ apt-config dump  | grep Install
APT::Install-Recommends "0";
APT::Install-Suggests "0";
DPkg::Pre-Install-Pkgs "";
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";
AptCli::Hooks::Install "";
AptCli::Hooks::Install:: "[ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true";

ついでに ミラーサーバも設定しておく

URL=http://ftp.jaist.ac.jp/pub/Linux/ubuntu/
sed -i "s|http://archive.ubuntu.com/ubuntu/\?|${URL}|" /etc/apt/sources.list

または mirror+http://mirrors.ubuntu.com/mirrors.txt を使う。

コピペ用

sudo su
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
echo -e  "APT::Install-Suggests 0;\nAPT::Install-Recommends 0;" |  tee /etc/apt/apt.conf.d/00-no-install-recommends
URL=http://ftp.jaist.ac.jp/pub/Linux/ubuntu/
sed -i -r "s|http://(jp.)?archive.ubuntu.com/ubuntu/?|${URL}|" /etc/apt/sources.list
sed -i -r "s|http://security.ubuntu.com/ubuntu/?|${URL}|" /etc/apt/sources.list
apt update 
apt upgrade

manページもインストールしないほうが速い。

いらないときは、入れないほうが作業速いよ。

/etc/dpkg/dpkg.cfg.d/01-nodoc または /etc/dpkg/dpkg.conf.d/01-nodoc

# Delete locales
path-exclude=/usr/share/locale/*

# Delete man pages
path-exclude=/usr/share/man/*

# Delete docs
path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyright

コピペ用

 cat <<EOF > 01-nodoc
# Delete locales
path-exclude=/usr/share/locale/*

# Delete man pages
path-exclude=/usr/share/man/*

# Delete docs
path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyrigh

EOF
sudo mv 01-nodoc /etc/dpkg/dpkg.cfg.d/01-nodoc

参考資料

man apt-config

tpm デバイスでパスワード入力省略でcryptrootをブートさせられる。

tpmバイスLinuxでも使いたい。

TPM搭載されてるんだ。だからWindowsのbitlocker的な暗号化デバイスのパスワード入力レスの起動をやりたかった。

ずっとやりたかった。でもあまりに手間が多かったので見送っていた。

気づいたら、専用のツールが公開されていました。早速使ってみました。

TPMを使ってdm-crypt を解除したい!

windows BitLocker のようにLinuxでもluks/dm-cryptの 暗号化ストレージを起動時にTPMでアンロックしたい。

パスワードなしでTPMでアンロックできれば、とても気軽に暗号化ストレージを使えるようになる。

TPMバイスでアンロックする。

tpm2KeyUnlockというレポジトリが出現していた。これを使えば、誰でも簡単にLUKSのdm-cryptデバイスを透過的に扱えるようになる。

簡単な概要

まず、Ubuntuをインストールします。ストレージ選択時に、dm-cryptをチェックします。暗号化ストレージのパスワードを決めておきます。

ここまで暗号化ストレージを作ってインストールができます。

しかし、OS起動時に/boot/efi が / にアクセスするために、起動にロック解除が必要です。

この起動時のロック解除に使う「キー(鍵)」をTPMバイスに入れて起動時に利用します。TPMから鍵を取得して、LUKSのルートのアンロックを行って通常通り起動が可能になります。またTPMバイスとOSはセキュアブートで保護し第三者のアクセスを排斥します。

使い方。

対応ファイルを github から取ってきます。

git clone https://github.com/anedward01/tpm2KeyUnlock
cd tpm2KeyUnlock

github のファイルには exec のパーミッションがないので付与します。

find -type f | xargs -I@ chmod 755 @

./setup をします。これで設定が始まります。

sudo ./setup

私の環境の場合、 sudo ./setup では動作しませんでした。

次のコマンドを入れて、hookをコピーしないとだめだった。tpm取得に失敗してた。

sudo cp tpm2Hook /etc/initramfs-tools/hooks/tpm2
sudo cp tpm2Hook /usr/share/initramfs-tools/hooks/tpm2

crypttab にアンロックコマンドを設定します。

crypttab の暗号化ストレージのUnlock設定で、tpm を使ったアンロックを指定しました。

sudo -E  vim /etc/crypttab
## 
dm_crypt-0 UUID=XXXX luks,discard,keyscript=/usr/local/bin/passphrase-from-tpm
takuya@ubuntu01:~$ sudo cat /etc/crypttab
dm_crypt-0 UUID=XXXXXX /usr/local/var/tpm-manager/secret.bin luks,discard,keyscript=/usr/local/bin/passphrase-from-tpm
takuya@ubuntu01:~$

これで再起動したら、TPMのキーを使ってパスワードを入れなくても暗号化ストレージがロック解除されてブートされました。感動。

万が一動かない場合。

efibootmgr でブート順を変更すればいい。

私の環境ではすでにインストールされていた EFI-manager が ubuntu の通常のブートローダーを使って起動するように設定されていたので、再起動してもブートローダーが有効にならなかった。なのでEFIの起動順序を変更しておいた。UEFIの一覧を取得したり、EFIのデバイスの一覧を取得したり、EFIの起動順を設定するにはefibootmgrというEFIを管理するコマンドを使う。

takuya@ubuntu01:~$ sudo efibootmgr -a -b 0005
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0005,
Boot0000* ubuntu
Boot0005* TPM2 EFI Stub

## 整理統合し直して次のようにした。

takuya@ubuntu01:~$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0000
Boot0000* ubuntu
Boot0002* TPM2 EFI Stub


ここで、TPM2を使う設定になっているので、ubuntu を使って起動すれば、cryptroot の unlock が聞かれるはずである。 また、dm-crypt デバイスパスフレーズやキーファイルは予備で作って厳重に保存しておく必要がありますね。

問題は、tpm のアンロックが、他のOSからできないようにしてあるかというところや耐タンパ性ですね。 まぁそこはtpm を信じるしかないですね。

必要であれば

EFIの設定よりBIOSで指定した順序が優先されることがあるので、BIOS画面に変更し、ブートを変更する必要がある。 SecureBootをONにして、UEFIの順序をTPM最優先する。

参考資料

https://threat.tevora.com/secure-boot-tpm-2/

カーネルのバージョンアップが来ても対応できるんですよね。

2020-12-15カーネルのバージョンアップが来ても起動してました。マイナーバージョンアップなら対応できそうです。

まだ、1ヶ月くらいしか運用してないので、長期間に亘りアップデートなどに対応しながら継続的稼働が可能なのか、これは結論が出てません。

2021-11-11

EFI/UEFIのキーワードで検索マッチせず、efibootmgrのコマンドが思い出せなくて困ったのでひたすらキーワードを追加

2021-12-22

apt upgrade したら efi が壊れたのでtmp2ツールをいれなおして再構成した。

takuya@ubuntu01:~$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002
Boot0002* Ubuntu

2022-01-04

tpm2-initramfs-tools がリリースされてて、debain のパッケージにあるけど、まだ誰も使ってない。

2023-04-24

ubuntu のアップグレードをしたら、ビルド失敗した

‘RAND_get_rand_method’
src/tss2-esys/esys_crypto_ossl.c: In function ‘iesys_cryptossl_random2b’:
src/tss2-esys/esys_crypto_ossl.c:519:5: error: ‘RAND_get_rand_method’ is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
  519 |     const RAND_METHOD *rand_save = RAND_get_rand_method();
      |     ^~~~~
      

最新版で以下の準備をして再ビルドしたらうまく行った。

sudo apt install tpm2-openssl
sudo rm /usr/local/src/tpm2-tss

EFIが再構成されダブリが出たので調整し直した

sudo efibootmgr
[sudo] password for takuya:
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0000
Boot0000* TPM2 EFI Stub
Boot0001* Ubuntu

Evernoteでブログが更新できなくなりました。

evernoteが使えない。

作業しながらメモとスクショを保存しておき、あとでまとめてEvernoteからはてなブログに投稿していました。

ところが、Evernote社がクライアントソフトを互換性なく更新したため、過去のマークダウン記事が喪失してしまいました。

マークダウンをつけ直しになっています。

Evernote 社の変更

Evernote社がソフトとAPIのLimitを変更したので、はてなブログ経由でEvernoteの記事を挿入する機能が全くうまく動かないようになっています。

記事がかけない。

Evernoteのソフトウェアが変更されたせいで、記事を書くのにすごく時間がかかっています。

記事を書くために、作業中のメモから直接投稿ができなくなくなって、記事を書く負担が増大していて更新がどんどん遅れています。。。。

php xdebug の接続(localhost/phpstorm/php-builtin webserver)

IDEphp-xdebugブレークポイントを使いたい。

IDEphp-debug を使ってブレークポイントを設定し任意の場所で変数の内容をダンプしたい。

はじめに

phpxdebug を使えば phpstorm や vscode などでブレークポイントを使うことができる。

接続形態

xdebugphp のプロセスは、次のような(ちょっと特殊?)接続の形態をとる。

phpstorm ( IDE/debugger )  127.0.0.0:9000   <----connect --- phpサーバー

ここでは、矢印が右から左につながっていることがポイント。

PHPのランタイム(インタプリタ)がソースコードの実行時に、phpstorm(IDE)に接続することでデバッグ機構が動作する。

手順の概要(やること)

全体の流れは、こんな感じになる。

ここでの、ポイント

  • IDEがポートをリッスンして待ち受ける
  • PHPが実行時にXdebug経由で、IDEのポートへ接続する

接続がポイントになります。「IDEがポートをリッスンして待ち受ける」ということを忘れないでください。

builtin-sever と phpstorm の接続

phpにバンドルされている builtin-web-server  とphpstorm を接続する。

ここでやること

  • builtin-web-server   を xdebug 有効で起動する。
  • phpstorm がxdebug を待ち受ける。
  • ブラウザで起動した builtin-web-server に接続する。
  • ビルトインWebServerを起動する -ビルトインWebServerでphpのWEBアプリケーションを動かす。

builtin-web-server  を起動して動作チェック。

最初に、空っぽのPHPプロジェクトを作っておく

f:id:takuya_1st:20201215001225p:plain

プロジェクト内に、コンテンツを作る。

f:id:takuya_1st:20201215001229p:plain

ビルトインWebServerをxdebug 付きで起動して、動作チェックする。

php -S 127.0.0.1:8000 -t public

起動した。

f:id:takuya_1st:20201215001236p:plain

ブラウザで接続して起動をチェックする

f:id:takuya_1st:20201215001232p:plain

ビルトインWebServerが動いたたら、今度はXdebugを有効にして起動する。

これで、Xdebugが有効になって起動する。

php -d xdebug.remote_autostart=1 \ 
-d xdebug.remote_enable=1 \ 
-d xdebug.remote_host=127.0.0.1 \ 
-d xdebug.remote_port=9000 \ 
-d xdebug.remote_connect_back=1 \ 
-d xdebug.remote_log=/tmp/xdebug.log \ 
\ 
-S 127.0.0.1:8000 \ 
-t public

もちろん、php-xdebug がインストールされている必要があるので、インストールされていない場合は、 有効にしておく。 例は、WSL1  のdebian/ubuntu です。

sudo apt install php-xdebug
sudo phpenmod xdebug

phpstorm でXdebugの接続を受け入れる

右上のボタンを押して、ポートをリッスンして受け入れる。

初期状態

f:id:takuya_1st:20201215001240p:plain

リッスン中

f:id:takuya_1st:20201215001244p:plain

リッスンしたらブラウザからアクセス。

ブラウザから、ビルトインWebServerにアクセス

f:id:takuya_1st:20201215001251p:plain

すると、ビルトインWebServerのXdebugが、PHPStormに接続に行く。

PHPStormがこの接続を受け入れるか聞いてくる。Acceptすると接続され、許可設定が記憶される。

f:id:takuya_1st:20201215001247p:plain

ブレークポイントを設定する。

php側にブレークポイントを設定しておく。

f:id:takuya_1st:20201215001254p:plain

再度、ブラウザで開く。すると実行は一旦停止される。

phpstorm がアクティブになり、ブレークポイントで止まっていることがわかる。

f:id:takuya_1st:20201215001259p:plain

ブレークポイントをResume(再開)してあげる

f:id:takuya_1st:20201215001304p:plain

最後まで実行されると、ブラウザに結果が表示される。

f:id:takuya_1st:20201215001308p:plain

Xdebugって超簡単に接続できます。

他の言語のデバッガと大きく異る。

phpXdebugはちょっと癖があります。他の言語がSSH経由でサーバーとして起動中のプロセスにアタッチするのにたいし、PHP-Xdebug はサーバーがIDEへアタッチしてきます。理屈がわかればかんたんです。

今回のポイント

xdebugリモートデバッグではXdebugがIDEへ接続へ行く

使うにはXdebugがロードされる環境であればいい、サーバーはApacheでもビルトインWebServerでもphp-fpm でも php-cgi でもなんでもいい。IDEはリッスンが必須。。VisualStudio CodeでもPHPStormでもなんでもいい

次は、Laravelの起動とLaravelからのXdebugです。

Laravelのartisan serve は、その内部でシェル 経由でビルトインWebServerを起動するため、少し挙動が異なります。注意が必要です。

qemu-img コマンドをubuntuにインストールする方法

qemu-img コマンドを入れたい。

qemu-imgがどこにあったかなと忘れてしまったので、探した。

apt-file で検索。

takuya@ubuntu01:~$ apt-file search qemu-img
qemu-utils: /usr/bin/qemu-img
qemu-utils: /usr/share/man/man1/qemu-img.1.gz

なるほど qemu-utils か

qemu-utils をインストール

sudo apt install qemu-img

これで、コマンドを使えるようになった。 apt-file 便利

grub の起動メニューを一覧してデフォルト起動を変更する

grub メニューを毎回選ばずに済ませたい。

カーネルを更新したり、デュアルブートをしていると、起動デフォルトを変えたい時がある。 そのときは、grub-set-default を使う。そのさいに、起動メニューの番号を取得したい。

grub の設定ファイルを取ってくる。

export GRUB_CONFIG=`sudo find /boot -name "grub.cfg"`

中身をgrep する。

sudo grep 'menuentry ' $GRUB_CONFIG | cut -f 2 -d "'" | nl -v 0

メニューはこんなかんじ

     0  Ubuntu
     1  Ubuntu, with Linux 5.4.0-59-generic
     2  Ubuntu, with Linux 5.4.0-59-generic (recovery mode)
     3  Ubuntu, with Linux 5.4.0-58-generic
     4  Ubuntu, with Linux 5.4.0-58-generic (recovery mode)
     5  Ubuntu, with Linux 5.4.0-54-generic
     6  Ubuntu, with Linux 5.4.0-54-generic (recovery mode)

一時的な変更

sudo grub-reboot 3

デフォルトを変更する。

sudo grub-set-default 3
sudo reboot

永続的な変更

Grubはここを基準に設定されているので、初期値としての0を除外しなくちゃいけないみたい。

sudo vim /etc/default/grub
#GRUB_DEFAULT=0
GRUB_DEFAULT=3
sudo update-grub

参考資料

https://unix.stackexchange.com/questions/43196/how-can-i-tell-grub-i-want-to-reboot-into-windows-before-i-reboot

https://www.digitalocean.com/docs/droplets/how-to/kernel/use-non-default/

phpstorm でシンプルなコンソール実行デバッグ設定

phpstorm でphpデバッグ phpstorm で コマンドラインのコンソールで実行したphpデバッグする設定。

実行環境には、phpstorm 20202.2 と WSL でインストールしたphp を用いる

wsl のphp を使ったときに、ファイルを実行してブレークポイントで止めることをする。

wsl を使う場合のプロジェクト設定。

新規作成でプロジェクトを選ぶ。

f:id:takuya_1st:20210113100922p:plain新規で空のphpプロジェクト

f:id:takuya_1st:20210113100925p:plain デバッグしたいスクリプトを作る。 f:id:takuya_1st:20210113100929p:plain Run→ debug を選ぶ f:id:takuya_1st:20210113100933p:plain

ファイルをどうやって実行するかを選ぶ。

ここで、インタプリタを設定する。

f:id:takuya_1st:20210113100937p:plain なにもしてないと、インストール済みのPHPを探してくれるが、WSLの場合は自分で指定しないと探してくれない。 f:id:takuya_1st:20210113100940p:plain

f:id:takuya_1st:20210113100944p:plain インタプリタを設定する。

f:id:takuya_1st:20210113100948p:plain インタプリタの種類を選ぶ。WSLやVagrantSSHはここで設定する。 f:id:takuya_1st:20210113100951p:plain

WSLを選ぶと、WSLの中から which php して自動的に選んでくれる。

f:id:takuya_1st:20210113100955p:plain ここでは、プロジェクト単位の設定になる。もし全体に設定して使いまわしたいときはチェックを外せばいい。いつでもできるので確実に動くのを確認してから外したらいい。

f:id:takuya_1st:20210113100959p:plain 設定が終わったら、インタプリタが設定される。インタプリタとコード分析のベースとなるバージョンを選んで・・・ f:id:takuya_1st:20210113101005p:plain これでデバッグが実行できるようになる。いん f:id:takuya_1st:20210113101009p:plain

デバッグで実行すると次のような画面になる。下側にデバッグウインドウが表示される。

f:id:takuya_1st:20210113101013p:plain ブレークポイントを設定してデバッグで実行すると、ブレークポイントでちゃんと止まるようになる。

f:id:takuya_1st:20210113101019p:plain

ここでは、phpはシンプルにコマンドから php-cli を実行している。

phpstorm が php-cliを実行するときにデバッガを有効にして起動してくれる。

デバッグが実行されると次のようなプロセスが生えている。 f:id:takuya_1st:20210113101033p:plain このコマンド実行から、分かる通り、PHPStormがデバッグ起動時にphpデバッグオプションを渡して起動している。 さらに言えば、php-cliCLIphpデバッグで使っているのは xdebug である。

グローバル設定のxdebug が有効無効にかからわず、起動時にXdebugを有効にして起動しているのである。

この起動時に「Xdebug」を有効にして起動する。という考え方は ビルトインサーバーやLaravel artisan でサーバー起動するときにも使えるので覚えておくと便利だと思う。

当然だが、xdebugをインストールしていないとデバッグはできないのでエラーになる。(インストールして使用可能が大事なので、有効無効は問わない)

f:id:takuya_1st:20210113101025p:plain

そして、Xdebugのリモートデバッッグではあるのだが、PHPStormのリモートデバッグのリッスンは内部的に自動で行われるらしく おもしろいことに、デバッグ中でもリッスンのアイコンはDisconnectedのママである。

f:id:takuya_1st:20210113101029p:plain また、デバッグ中にnc でコネクションを張ろうと思っても、refuseされた。WSLのポートの取り扱いのせいかもしれない。

f:id:takuya_1st:20210113101037p:plain

Cloudflareのリクエストがまれに、500エラーになるので調べていた.

結論から言うと。Apacheが、H2をリッスンできなくて詰んでた

Cloudflare の 500 エラーになる。

Cloudflareのリクエストがまれに、500エラーになるので調べていたら

Cloudflare→nginx→ apache とリバプロを構成しているのが原因らしい。 そしてさらにエラーを見ていると http/2 のリクエストが一部エラーになっている。

HTTP/2の捌き方の問題。

cloudflare側がhtttp/2でリクエストを投げてくるのだが、こちらが非対応であればCloudflare側が制御してエラーが出ないようにしてくれる。しかし、Cloudflare側の制御が間に合わなくて500エラーになることが多いようですね。

リクエスト1000件に対して、約10%がエラーになっていました。

CloudflareのCDNのうち、10%に設定ミスがあるようで、HTTP/2をうまく捌いてくれないようでした。

http_upgrade

そこで、リバプロを構成しているnginx をhttp_upgrade を有効にして

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

本体であるApacheに、h2 のプロトコルを捌くよう設定した

<VirtualHost *:443 >
  Protocols http/1.1 h2c h2

これで、cloudflareの500エラーが大幅に減った。

cloudflareの500エラーについてはいろいろと原因が考えられるが、調べているとCloudflareも完璧ではないことがわかる。

コマンドが含まれるパッケージを探す。apt-file

このコマンドは、どのパッケージ?

「えっと、いつも使うコマンド入れたいんだけど」というときに、パッケージ名とコマンド名が違う事がある。そのときにいちいちGoogle検索がだるいので、Aptで検索したい。

コマンドやファイルががどのパッケージに含まれるか検索する apt-file

ファイル一覧から検索してくる。

インストール

sudo apt install apt-file
sudo apt-file update

実際使った例

$ apt-file search qemu-img
qemu-utils: /usr/bin/qemu-img
qemu-utils: /usr/share/man/man1/qemu-img.1.gz

apt-file 自身を apt-file で探してみるなど。

$ apt-file search apt-file
aide-common: /usr/share/aide/config/aide/aide.conf.d/31_aide_apt-file
apt-file: /etc/apt/apt.conf.d/50apt-file.conf
apt-file: /usr/bin/apt-file
apt-file: /usr/share/apt-file/is-cache-empty
apt-file: /usr/share/bash-completion/completions/apt-file
apt-file: /usr/share/doc/apt-file/NEWS.Debian.gz
apt-file: /usr/share/doc/apt-file/README.md.gz
apt-file: /usr/share/doc/apt-file/changelog.gz
apt-file: /usr/share/doc/apt-file/copyright
apt-file: /usr/share/doc/apt-file/examples/60disable-contents-fetching.conf
apt-file: /usr/share/doc/apt-file/examples/apt-file-2-update.sh
apt-file: /usr/share/doc/apt-file/examples/apt-file.conf
apt-file: /usr/share/man/man1/apt-file.1.gz
cruft-common: /usr/lib/cruft/filters-unex/apt-file
fish-common: /usr/share/fish/completions/apt-file.fish
live-build: /usr/share/live/build/hooks/normal/0400-update-apt-file-cache.hook.chroot
open-infrastructure-system-build: /usr/share/live/build/hooks/normal/0400-update-apt-file-cache.hook.chroot
zsh-common: /usr/share/zsh/functions/Completion/Debian/_apt-file

だたし、特徴のないコマンド名だと大変よ。

$sudo apt-file search dig

dig だと大量の出力 がやばい

digest とか digital までヒットしちゃう。

$sudo apt-file search dig
zfs-dkms: /usr/src/zfs-0.8.3/module/icp/api/kcf_digest.c

コマンド名が短いとき本当に大変です。

コマンドを検索したいときは bin とかつけたほうが良さそう。

takuya@ubuntu01:~$ sudo apt-file search /bin/dig
bind9-dnsutils: /usr/bin/dig
digikam: /usr/bin/digikam
digikam: /usr/bin/digitaglinktree
digitemp: /usr/bin/digitemp_DS2490
digitemp: /usr/bin/digitemp_DS9097
digitemp: /usr/bin/digitemp_DS9097U
golang-golang-x-tools: /usr/bin/digraph
tomcat9-common: /usr/share/tomcat9/bin/digest.sh

dpkg -L / -S  もいい

dpkg -S $(which lsusb)
dpkg -L util-linux | grep bin/

なぜ再びかいたのか

自分で過去にメモをブログに投稿していたけど、検索で出てこないし、サイト内検索でマッチしなかったので、再度書くことにした。Googleさんは過去記事をインデックスから削除して存在しないことにするからまじ困る。

関連資料

https://takuya-1st.hatenablog.jp/entry/2016/06/03/000000

wget が ipv6 につないでしまう。aliasでIPv4 に限定する

wget が v6アドレスを使ってしまう。

wgetで、v6アドレスを呼びに行ってしまう。NTTの壊れたフレッツ v6 ネットワークで大問題が起きている。

IPoEに早く対応させたほうがいいけど。v6のアドレスをIoT家電が山盛りの家庭内に頒布するのは躊躇われる。

wget をv4アドレスに限定する。

alias wget='wget --inet4-only'

wgetrc を書く方法もある。

参考資料

https://techpiezo.com/linux/wget-force-ipv4-ipv6-connection/

ddしたイメージを qcow / vmdk に変換する

dd イメージは、raw イメージと呼びます。

raw イメージでググれば出てきます。

qemu-img convert -f raw dd-rescued.img -O qcow2 output-qcow.img

ポイント -f でインプット側のフォーマットを指定する。dd したデータは raw です。

参考資料。

http://www.tuxfixer.com/convert-qcow2-to-raw-image-raw-to-qcow2-image/

wsl でリモートのX11転送を行う。

windowsx11 転送

windows とWSL で X11 転送をやりたいなと。xming とか cygwin でやってたけど、WSLでもできるのでやってみた

手順

  • vcxsrv をインストール
  • Xlaunch を設定
  • wsl に x11-appsを犬
  • DISPLAY設定
  • 起動

準備 ( vcxsrv )

vcxsrv を使います。

choco install vcxsrv

Xlaunch を初期設定。

Xlaunch を起動します

f:id:takuya_1st:20201108134402p:plain

ウインドウをタイプを聞かれたら、Multipleにしておくと無難。

f:id:takuya_1st:20201108134416p:plain

タスクバーにXが常駐したら準備完了

f:id:takuya_1st:20201108134712p:plain

WSL側から使えるようにする

sudo apt install x11-apps

DISPLAY 環境変数を設定する。

echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc
source ~/.bashrc

ローカルX11準備完了を確認

いったん、ローカルで、X11-app を起動してチェックする。

takuya@wsl : xeyes
takuya@wsl : xcalc

f:id:takuya_1st:20211209151405p:plain

ssh でX転送する

ssh -X user@myserver

適当なX11アプリを起動する

takuya@myserver $ xeyes
takuya@myserver $ nautilus
takuya@myserver $ virt-manager

f:id:takuya_1st:20201108135030p:plain

これでVirt-managerをリモート転送で使えました。

2021-12-09 追記

X11 forwarding がエラーになった。 f:id:takuya_1st:20211209150539p:plain

Warning: No xauth data; using fake authentication data for X11 forwarding.
X11 forwarding request failed on channel 0

対策 クライアント側

ログイン時にエラー・メッセージが次のとき

 No xauth data; using fake authentication data for X11 forwarding.
xauth generate $DISPLAY

対策 sshd_config 側

ログイン時に、エラー・メッセージが次のとき

X11 forwarding request failed on channel 0

ssh サーバー側の設定で次の設定を入れる。

X11UseLocalhost no

この設定で

X11 forwarding request failed on channel 0

これで再度動くようになった。

2021-12-09 追記

  • ローカルでの動作チェックについて追記
  • フルスクリーンへのリンクを作成
  • サーバー側設定を追記

chocolatey でインストール済みのパッケージを一覧する。

chocolately でインストールしたソフトを表示したい。

表示の仕方をいつも忘れるのでメモしておく。

choco list --localonly

インストール済みの一覧をふだん見ることはないんだけど、Windowsのインストール済みソフトの管理を見ていると、あれこれってchoco install してたっけと考え直すことがあるので。

choco でインストールしたはずだけど、きえてたりするのもあって、記憶が曖昧になってるときに使える。

実際の動作例

PS C:\WINDOWS\system32> choco list --localonly
Chocolatey v0.10.15
autohotkey 1.1.33.02
autohotkey.install 1.1.33.02
barrier 2.3.2
chocolatey 0.10.15
chocolatey-core.extension 1.3.5.1
chocolatey-windowsupdate.extension 1.0.4
cpu-z 1.94.0.20201009
cpu-z.install 1.94.0.20201106
docker-desktop 2.4.0.0
DotNet4.5.2 4.5.2.20140902
foxitreader 10.1.0.37527
git 2.26.2
git.install 2.26.2
gpg4win-vanilla 2.3.4.20191021
hyper 3.0.2
KB2919355 1.0.20160915
KB2919442 1.0.20160915
KB2999226 1.0.20181019
KB3033929 1.0.5
KB3035131 1.0.3
mamp 4.2.0
mattermost-desktop 4.4.2
mingw 8.1.0
nodejs 14.6.0
nodejs.install 14.6.0
obs 0.659.20200402
obs-studio 25.0.8
obs-studio.install 25.0.8
openvpn 2.4.7
putty 0.74
putty.portable 0.74
pyenv-win 1.2.4.20200318
python 3.8.5.20200721
python3 3.8.5.20200721
rlogin 2.25.0
selenium 3.141.59
selenium-chrome-driver 83.0.4103.39
selenium-chromium-edge-driver 81.0.416.77
selenium-ie-driver 3.150.1
slack 4.6.0
teraterm 4.105
vcredist140 14.26.28720.3
vcredist2015 14.0.24215.20170201
vcredist2017 14.16.27033
virt-viewer 8.0.256
vlc 3.0.10
vscode 1.45.1
vscode.install 1.45.1
winrar 5.91.0.20200917
winscp 5.17.6
winscp.install 5.17.6
Xming 6.9.0.31
52 packages installed.
PS C:\WINDOWS\system32> choco search virt

choco したパッケージの更新(アップグレード)ーself all

chocolately 便利ですよね。

chocolately のパッケージ管理とインストールが便利なので、Windowsを使うときはいつも使っています。

chocolately 自身の更新

chocolately を使って、chocolately を更新できます。

choco upgrade chocolately 

self-upgrade ができるのはとても便利。

インストール済みのパッケージをすべてアップグレードする

更新作業をアプリ毎にされるのはめんどくさいので、まとめてアップグレードしてしまいます。

このコマンドで、すべてのchocolately インストール済みパッケージを更新できます。

choco upgrade all

でかけている間に終わらせたいときは、すべてをyes としておく

choco upgrade all -y

これで、chocolately をつかったパッケージを便利地に使えるようになります。

こうなると、ブラウザでファイルをダウンロードしてインストールが煩わしく感じますね。

参考資料

https://chocolatey.org/courses/installation/upgrading

https://chocolatey.org/docs/commandsupgrade

エポスカード

広告です。

エポスカード(まるい)

エポスカード(EPARK)