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しかりです。

デモを楽しんでいないで、期限内に最後まで実習し終われよ。


This year's Index

Home