OpenBSD 6.7 from 6.6
sysupgrade
OpenBSD 6.7がやっとやって来た。コロナの影響で遅延したんでしょうか?
今回は6.6からのupgradeって事で、 Upgrade Guide: 6.6 to 6.7 を参考に、sysupgradeを使ってみる。
run
6.6の状態。
ob$ df Filesystem 512-blocks Used Avail Capacity Mounted on /dev/wd0a 23710364 15565552 6959296 69% /
いざ実行。-kは、残骸を残してねの指示。
ob$ doas sysupgrade -k doas (sakae@ob.localdomain) password: SHA256.sig 100% |*************************************| 2141 00:00 Signature Verified INSTALL.amd64 100% |************************************| 43512 00:00 base67.tgz 20% |******* | 50688 KB 01:24 ETA :
この後接続が切れて(sshしてた)、勝手にrebootしてたよ。大事な事は、コンソール上でやれってのが鉄則だな。
しょうがないので、コンソールからlogin。まだ6.6のままだったので、再びsysupgrade。そしたら、落として来てあった6.7のセットのインストールが始まった。 そして、無事に6.7になった。
が、sshでlogin出来ないぞ。動いているプロセスも少なすぎる。
PuTTYな端末からlogin出来なくなった。何でもキーシーケンスが違うですって。古すぎる端末になってしまったのかな。WSLの方からは無事にlogin出来たからね。それからMobaXtermでも大丈夫だった。
まあいい、取り合えず先に進むとする。
pkg_add -u
途中で、ipythonだったかの所で、リペアするかって聞かれた。そんな事もあるんで、近くで見守っていた方が良いと思われる。随分と時間がかかった。色々入れてたからね。
ob$ uname -a OpenBSD ob.localdomain 6.7 GENERIC.MP#182 amd64
何気に、182回もコンパイルしてるって事は、裏で色々有ったんでしょうか?
ob$ df Filesystem 512-blocks Used Avail Capacity Mounted on /dev/wd0a 23710364 17709044 4815804 79% /
随分と太った。こんなに増えるものか? /var/sysmergeの下に大事な部分のバックアップが残るのね。
pkg_add
-u した時の残骸が残っていた。 pkg_delete
-a して、未使用の依存関係を削除したら、使用量が70%まで落ちた。
pkg_add
したら、増えたような気がしたんで、localのサイズを確認。4.9Gも有った。
「OpenBSD 6.7」リリース によると、SMP関係が強化されたみたい。その為に、あーでもない、こーでもないと、コンパイルを繰り返していて、いつの間にか182回もカーネルをコンパイルし直したんだな。納得しましただ。
Windows Terminal
PuTTYが悲しい事になってしまったので、これを転機に MS製のWindows Terminalとやらを入れてみた。
Windows Terminal (v0.7 ~ v1.0) メモ このあたりを見て、コピペの設定だな。Windows ターミナルでの SSH こんなのも有った。 なんでも、このターミナル、数日前に1.0の正式板が出たそうで、Good timming でしたね。
"copyOnSelect": true, "initialCols": 80, "initialRows": 40, "defaultProfile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", // cmd.exe
コピペをイネーブル。端末サイズ、初期起動でcmd.exe。パワーシェルって重そうだから。
{ "hidden": false, "name": "OpenBSD", "commandline": "ssh xxx.xxx.xxx.xxx" },
起動用のメニューに上記を追加(profile:の場所内)。こうしておけば、このメニューを選ぶだけで、OpenBSDのパスワードを聞いてくる。PuTTYとほぼ同じ挙動で使える。
cmd.exeからsshで入って、ちゃんとコピペ出来る。
fontsの視認性が良いので12ptでも十分。ギリシャ文字もちゃんと表示する。日本語の表示は流石に無理だけど。プログラミング主体だから、潔く日本語は諦める(怪しげな英語で、コメントを書く == 日本の恥ですよ)
コロナの影響で、世の中がチェンジするんです。9月の入学になったら、就職戦線も様変わりするだろうね。こういうのが無ければ絶対無理ですから。
使うフォントサイズを動的に変えられる。C+= で、サイズが大きくなる。C+- で、小さくなる。 その日の眼の調子でご自由に。
ob$ stty -a speed 9600 baud; 40 rows; 80 columns;
これが起動時の端末状況
ob$ stty -a speed 9600 baud; 35 rows; 73 columns;
こちらは、Ctl = キーを押して、フォントサイズを動的に大きくした場合。文字サイズが大きくなった代わりに、収容状況が追従して少なくなった。
どんな機構になってるんすかね? プチ興味あります。
非常に残念な事であるが、emacsとすこぶる相性が悪い。例えば、Ctl-spaceでマーク出来ないとか、Ctl-h i で、info出来ないとかだ。きっと誰かが、このあたりを克服する方法を発表してくれるに違いない(そんなの無理無理、今時Windowsやってる人でemacsでこのターミナルに興味有るなんて、数える程しかいないだろうから)。
sysupgrade.sh
sbinの下にある sysupgrade.sh と言うksh用のシェルスクリプトだった。難しい事をやる訳ではなく、手動でキーを叩くのの自動化だな。
NEXT_VERSION=$(echo ${_KERNV[0]} + 0.1 | bc)
次のバージョンは、現行のバージョンに 0.1 を足した物ですってのが、淡々としててOpenBSDらしい。 どこかのデストリみたいに、新しいLTSが出たから、祭りをしましょなんて、浮かれていないよ。
/etc/installurlで指定されたサイトからtar玉をftpを使って取ってきて、改変されてないか確認。最後は、
cat <<__EOT >/auto_upgrade.conf Location of sets = disk Pathname to the sets = /home/_sysupgrade/ Set name(s) = done Directory does not contain SHA256.sig. Continue without verification = yes __EOT if ! ${KEEP}; then CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g') cat <<__EOT > /etc/rc.firsttime rm -f /home/_sysupgrade/{${CLEAN}} __EOT fi echo Fetching updated firmware. fw_update || echo "Warning: firmware not updated." install -F -m 700 bsd.rd /bsd.upgrade sync if ${REBOOT}; then echo Upgrading. exec reboot else echo "Will upgrade on next reboot" fi
小さな仕様書 /auto_upgrade_conf
ファイルを作成してから、インストーラー用のkernelであるbsd.rdを/bsd.upgradeへコピー。これで、次回の起動時に、実作業のupgradeが行われるとな。スッキリさっぱりなスクリプトでした。
reinstall
このバージョンから、ファイルシステムが新しい物になったと言うので、それに追従すべく、一からインストールしてみる。ついでに、VMWareから割り当ててるDISK容量も増やしておいた。
そこで注意が発生。全DISK容量を割り当てようとしても、謎の制限があって割り当てられられない。それで調べてみたら、インストール途中に起動する disklabel editor で、最初にOpenBSDのバウンダリーを設定しておく。そうすれば、大丈夫だぁーー。
Suffixes can be used to indicate units other than sectors: 'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes) 'c' (cylinders), '%' (% of total disk), '&' (% of free space). Values in non-sector units are truncated to the nearest cylinder boundary. wd0> b Starting sector: [64] Size ('*' for entire disk): [41942976] *
この技は、 openbsd growfs で、何気に、披露されてた。助かりました。
man disklabel
b Set OpenBSD disk boundaries. This option tells disklabel which parts of the disk it is allowed to modify. This option is probably only useful for ports with fdisk(8) partition tables where the ending sector in the MBR is incorrect. The user may enter `*' at the "Size" prompt to indicate the entire size of the disk (minus the starting sector). This is useful for disks where the fdisk partition table is incapable of storing the real size. Note: data may become corrupted if boundaries are extended such that they overlap with other resident operating systems.
MBRがおかしい時の救済策な訳ね。大容量のDISKを使う時の必須コマンドだな。
ob$ df -k Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/wd0a 19812670 1327698 17494340 7% /
これがインストール直後の状態。kerlelのパッチが何個か出てて、当ててある。
ob$ uname -a OpenBSD ob.localdomain 6.7 GENERIC.MP#1 amd64
入れ直したカーネルは、何故かコンパイル回数が1回になっていた。upgrade時と挙動が違うのか?
そういうのを調べようとして、qemuをインストール。そして、i386なシステムを作ったんだけど、挙動が極端に遅い。何故だろう? qemuがおかしいのかな? debian機のqemuでも同様だ。どうやって調べよう。良いアイデアが湧いてこない。
記念にR
図書館がやっと解禁になった。とは言え、滞在時間は30分以内を厳守してください。よって閲覧室は当然のごとく閉鎖。爺の楽しみ、新聞読み比べも暫くはお預け。
オイラーは、そくさくと図書を選んで退散。そんな本の中に、統計学図鑑 が混じっていた。 後半部分はRを使って実習しましょ、だった。
記念にオイラーもRを入れてみたよ。R-3.6.3にgcc-8.3やらtexliveとかclispと豪華なお供を連れてきたぞ。 大きなアプリは、とかく色々な物を使いがちだなあ。octaveしかりです。
デモを楽しんでいないで、期限内に最後まで実習し終われよ。