つれづれ日記 2020年8月

予定

毎日


2020年8月30日 (日曜日)

15:48:06 # Life golang Debian package. golang-golang-x-text-devパッケージをインストールしてどうやって使うのかなと試行錯誤したんだけど GOPATHに/usr/share/gocodeをたしたら使えた。 なんでデフォルトのGOROOTに含まれてないんだろうか。 デフォルトのGOPATHは~/goなので触れないのでGOROOTにいれるかGOPATH標準にするのが良さそうな気がするんだけど。 ドキュメントを眺めていたら、開発者はgo getを使えと主張している。 Debianにある開発パッケージはDebianパッケージのビルドのためだけに存在しておりユーザが利用することは装丁していないとのこと。うーむ。

2020年8月29日 (土曜日)

14:57:03 # Life Bashで変数の中身を小文字と大文字にする。 ^と,でできるみたい。一個だけだと頭文字だけ二個あると全部大文字か小文字にする。 使う場面あるかなと思って調べたら結局使わなかった。 trを使わなくてもよいのか、便利、かな?

$ A=hello
$ echo ${A^}
Hello
$ echo ${A^^}
HELLO
	

2020年8月27日 (木曜日)

18:53:21 # Life 自宅ネットワークでバッグ用のスクリプトの一部としてDLNAデバイスを発見したくてSSDPを実装。 先日実装してみたんだけどいまいち動かないなぁとおもったらリク エストが間違っていたので修正。MANが二回指定してあってSTが指 定してなかった。 Braviaから返事があって満足。Nasneはリクエスト無茶苦茶でも反応してくれていた。ルーターとかも返事を返してくれる。

2020年8月23日 (日曜日)

11:13:32 # Life Chrome OS デバイスであるChromebook Plus(Kevin)で任意のカーネルをブートする方法について。 夏休みの宿題にしていたのだがあまり詳しくない分野で力尽きたので力尽きたところまでメモ。 任意のOSをブートする方法を調べていたら結局任意のカーネルをブートする方法が必要なのに気づいた。 Debianのイメージをmicro sd cardから起動させようとして調べたところどうもCorebootだとかDepthchargeとかUBootとかいろいろあるみたいだが結局適切に署名された起動パーティションというのが必要らしい。 Verified Bootの仕組みとして署名されているバイナリしかロードしてくれない。 Developer Mode 開発者モードというのがあるのでそのモードに入ると署名の確認がシンプルになる。 署名自体は開発用のプライベート鍵(?kernel.keyblock とkernel_data_key.vbprivk )というのが配布されているのでそれを使うとブートローダーはあまり気にせず起動してくれる。鍵はひょっとして何でもいいのかもしれない。 vbutil_kernelというツールで署名してそれをddで書き込めば良い。 パーティション自体のメタデータにChrome OS Kernelであるというフラグを指定するのにcgptでタイプを指定する必要がある。 vbutil_kernelで書き込むためにはカーネルイメージが必要なんだけどそのイメージ自体はu-boot-toolsのmkimageを利用して作成、Device TreeとLinux Kernelを組み合わせたファイルを生成してくれる。設定ファイルはdebian.its--config cmdlineのところはカーネルの起動パラメーターで試行錯誤した結果initrdでうまく起動できなかった。何かがたりていない。 多分起動できるところまでいったんだけど画面に何も表示できていないのでこれはシリアルケーブルがないとデバッグ不可能ではないかというところに至る。

$ sudo apt install u-boot-tools
$ cgpt create /dev/sde  # GPTのパーティションテーブル自体の作成
$ parted -a optimal /dev/sde unit mib mkpart Kernel 1 65  # GPTのカーネルパーティション作成
$ parted -a optimal /dev/sde unit mib mkpart Root 65 100% # root file system 
$ cgpt add -i 1 -t kernel -S 1 -T 5 -P 15 /dev/sde  # add flags  # GPTのカーネルパーティションにタイプとかを設定
$ mkfs.ext4 /dev/sde2
$ mkimage -D "-I dts -O dtb -p 2048" -f debian.its vmlinux.uimg
$ vbutil_kernel \
        --pack vmlinux.kpart \
        --version 1 \
        --vmlinuz vmlinux.uimg \
        --arch aarch64 \
        --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
        --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
        --config cmdline \
        --bootloader bootloader.bin
$ dd if=vmlinux.kpart of=/dev/sde1
	

15:26:20 # Life vmc の使いかた。 Crostiniは使っていたけどTerminaは全然触ってなかったので使い方メモ。 Crostiniは標準のDebianイメージをTerminaというCrOSイメージの仮想マシンのうえで動くLXC環境で動作しているもの。 Termina VMの上でLXCが動いているので任意のLinuxコンテナを動かすことが大体可能。 あと「Termina」以外のVMを走らせることも可能みたい。 Chrome OSでひらくCrosh(ctrl-alt-t)を使って操作。 とりあえず例えばBullseyeインスタンスを作成したければlxc launch images:debian/bullseye ... とか指定すれば良い。 一度作成してしまえば起動したければcroshからvmc container termina bullseyeで起動する(がコマンドが帰ってこなくてタイムアウトする)。 これタイムアウトするのは多分何かのシグナルを待っているんだが何も設定していないためそのシグナルを送ってないからなんだろうな。 たぶん一番よいドキュメントはこれ。 CrostiniからTerminaのレイヤにアクセスする方法がない気がするのでそうするとスクリプトとかはTerminaのレイヤにないといかんのか?

	  crosh$ vmc list  # 仮想マシンのリスト、terminaだけがおそらくある。
	  crosh$ vsh termina  # terminaのvshに接続
	  termina$ lxc list  # terminaで動いているインスタンスの一覧
	  termina$ lxc launch images:debian/bullseye bullseye  # インスタンスの作成
	  termina$ run_container.sh --container_name bullseye --shell --user root  # ログイン
	

2020年8月13日 (木曜日)

18:26:59 # Life elpa-magitの挙動がなんか変。git rebase todo mode とかになったあと、C-x Prefixが使えなくなる気がする。

2020年8月12日 (水曜日)

15:22:42 # Life sshfs と ssh。リモート環境でローカルのファイルシステムをマウントしているビルド環境を手元で試行錯誤。こんなシェルがあると便利かなとおもって作ってみたらいまいちだったり。 なんか便利かなとおもっているツールも僕がEmacsを使っているから便利なだけなのかもしれない。

2020年8月10日 (月曜日)

10:44:20 # Life コミット供養。 何年も熟成させていたパッチを腰を上げて10日ほど前に プルリクエストの投げ方を調べて投げてみたのがマージされていた。 libfuseをよくいじっていた日々に書いてたドキュメントの修正。マージされてしまうとPull requestに入っていた以前のコミットメッセージが全てなくなってしまってSquashされているけどこれはこういうもんなのかな。 もともとのコミットメッセージは4年前くらいの。

2020年8月9日 (日曜日)

16:36:01 # Life Golangでちょっとしたツールを書いてみる。まぁ並列処理とChannelを使うとシェルよりはエラー処理がまともにかける気がする。

2020年8月1日 (土曜日)

09:53:34 # Life 8月か。夏にやっとなった感じ。梅雨があけずに7月が終わってしまった。


Junichi Uekawa