#author("2023-03-31T23:04:32+09:00;2021-08-28T09:52:27+09:00","default:kaw","kaw") #topicpath *河豚板のアップデートツール *河豚板のアップデートツール [#b98a98c4] RIGHT:EBUG 第78回会合(オンライン) ~ 2021年8月28日 ~ 川俣吉広、kaw@on.rim.or.jp **OpenBSDネイティブのアップデートツール **OpenBSDネイティブのアップデートツール [#h3f59b3c] OpenBSDでは、現在、以下のようなアップデートツールが提供されている。 -sysupdate ... リリースの更新時に使用 -sysupgrade ... リリースの更新時に使用 -sysmerge ... リリース更新時、/etc 以下の更新に使用。更新部分とサイト独自の設定をマージする。現在はsysupdateから自動的に起動される。 -sysmerge ... リリース更新時、/etc 以下の更新に使用。更新部分とサイト独自の設定をマージする。現在はsysupgradeから自動的に起動される。 -syspatch ... Erattaの適用に使用 -pkg_add -u ... packagesの更新に使用 これらのツールのうち、sysupdateとsyspatchは河豚板では使用できない。~ これらのツールのうち、sysupgradeとsyspatchは河豚板では使用できない。~ Vanilla OpenBSDとは、カーネルの設定とファイルシステムのレイアウトが異なるため。 sysmergeとpkg_addは河豚板でも問題なく使用することができる。 **fiupdate - 河豚板のアップデートツール **fiupdate - 河豚板のアップデートツール [#y5d65cf1] 河豚板は、OpenBSDに追従して年に2回リリースを更新する。~ また、その間にEratta対応(patch適用)や河豚板自身の機能追加・バグフィクスなどがあり、概ね十数回以上のアップデートを行っている。 LiveUSBに対して、このような修正を容易に行うため、FuguIta-6.7-*-202010071よりfiupdate (FuguIta Update)というツールを作成し、配布物に同梱している。 fiupdateは、LiveUSB中のカーネルとファイルシステム・イメージ全体を新しいもので置き換える。そのため、基本的には同一バージョンのOpenBSDがベースになっていれば、任意のリリースに更新することができる。ダウングレードも可能。~ (OpenBSDのsyspatchは、step by stepで1つづつ新しいリリースに更新することが必須で、一足飛びに最新リリースに更新することはできない) LiveDVDについてはコンテンツの上書きが物理的に不可能なため、従来どおり、メディアを最新版に作り直すこととなる。 ***fiupdateの実行 ***fiupdateの実行 [#v1cd981e] 配布サイトよりISOイメージファイルとMD5をダウンロードし、[[fiupdateを実行する>FuguIta/BBS/10#kc657395]]。 # ftp https://jp1.dl.fuguita.org/FuguIta-6.9-amd64-202108131.iso.gz # ftp https://jp2.dl.fuguita.org/MD5 # fiupdate 202108131 ダウンロードするファイルはLiveUSB用の''*.img.gzではなく''、LiveDVD用の''*.iso.gzファイルである''ことに注意。 fiupdate実行中は、以下のような処理が行われる - ダウンロードしたファイルのMD5検査 - 実行環境(起動モード、現行バージョン、対象アーキテクチャなど)のチェック - デーモン類の停止 - カーネルとファイルシステム・イメージの更新 - リブート ***設計と実装 ''エラー検出'' fiupdateの動作は、基本的には現行のカーネルとファイルシステム・イメージをダウンロードしたISOイメージの中のもので上書きするだけで、原理は非常に単純である。~ ただし、ファイルの上書きが失敗することは致命的であるため、極力避けなければならない。そのため、fiupdateは、大部分が実行環境のチェックとエラーの検出・処理のためのコードとなっている。 ''ライブアップデートにした理由'' アップデートの方法として、現在稼働していない別のメディアに対して適用を行う、というやりかたも考えられるが、以下のようなデメリットがある --適用対象のデバイスの他に、fiupdateを実行するデバイスを別に用意する必要がある --対象とするバージョンやアーキテクチャを取り違えて実行するリスクがある そのため、fiupdateでは「今、動いている」メディアのみを対象としてアップデートを行うこととした。 ''ライブアップデートの検討事項'' fiupdateが上書きするファイルシステム・イメージは、OpenBSDのファイルツリー全体が格納されており、上書きされている時もマウントされてアクティブな状態にある。そのため、イメージファイルが上書きされるとシステムはまともに動かなくなる。 -ファイルシステムイメージ自体は、Read Onlyでマウントされている。~ ... ファイルシステムに不整合が発生することはない -実行中のプロセスが正常に稼動しなくなったり、異常終了したりする。~ ... ファイル上書き前に、全てのデーモンを停止する -新たにコマンドが起動できなくなる ~ ... fiupdateの実行に必要なコマンドは、あらかじめtmpfsにコピーしておき、そちらを使うようにする ''制限事項'' -Xのセッションやリモートログイン時にfiupdateを実行すると、デーモンが停止した時点でセッションが途切れ、アップデートが失敗する。~ ... 制御端末が擬似端末の場合は、アップデートが失敗する旨ユーザに通知し、アップデートの中止とコンソールデバイスからの再実行を促す。 -LiveUSBで起動しLiveSDで運用する、というような変則的な運用には未対応 ~ ... そういう環境で運用できているユーザは、手動でアップデートできるでしょう... :-) -河豚板の利用形態の一つとして、gzip展開したISOイメージをそのままOpenBSDのFFS/Linux EXT-fs/FAT/NTFSに置いておき、それをマウントして使うという方法がある。~ この場合、EXT-3/4, NTFSについてはfiupdateは利用できない。これらのFSは、OpenBSDではRead Onlyマウントしかサポートしてないため。 -現状、*.tar.gz形式で配布している FuguIta/arm64 には未対応 ---- #topicpath