個人的OpenBSDアップレード兼アーカイブ手順(DVDメディア版)

目次

1. この記事について

個人用途のOpenBSDサーバについて、 バージョンアップとシステム全体のアーカイブ作成を行う手順のメモ。

2. 前提など

  • 文字列「76」はメモ作成時のアップグレード先バージョンなので、都度読み替えてください
  • 作業用のOpenBSD環境があり、そこでの作業していることを想定しています
  • 新バージョンにおける後方互換性のない変更があるか事前に確認する必要があります
    • 旧バージョン上システムのバックアップをリストアすることによるシステムの再現が手順に含まれるため
  • バックアップによるシステム全体の再現が可能かの確認を兼ねてクリーンインストールとリストアの流れにしています
  • この手順で作成したオリジナルインストールISO、カスタムインストールISO、フルバックアップのデータDVDを保管すればシステム全体のアーカイブとして機能します
    • PortsパッケージのキャッシュをカスタムインストールISOに含めているため、オフラインでのシステムリストアが可能になります

3. OpenBSD76による再構築時の手順書(DVD-R版)

  • 作業用のOpenBSD環境があり、そこでの作業していることを想定しています
  • 新バージョンにおける後方互換性のない変更があるか事前に確認する必要があります
    • 旧バージョン上システムのバックアップをリストアすることによるシステムの再現が手順に含まれるため
  • バックアップによるシステム全体の再現が可能かの確認を兼ねてクリーンインストールとリストアの流れにしています
  • この手順で作成したオリジナルインストールISO、カスタムインストールISO、フルバックアップのデータDVDを保管すればシステム全体のアーカイブとして機能します
    • PortsパッケージのキャッシュをカスタムインストールISOに含めているため、オフラインでのシステムリストアが可能になります

3.1. 手順

  1. 既存マシンで期待する機能とデータを再現できるバックアップを作成しておく
  2. https://www.openbsd.org/ から install76.iso をダウンロードしてDVD-Rに焼く
    • 作業マシンに dvd+rw-tools パッケージがインストールされていることを期待している。
    • ftp -o /root/obsd76_orig.iso https://cdn.openbsd.org/pub/OpenBSD/7.6/amd64/install76.iso
    • growisofs -dry-run -dvd-compat -Z /dev/rcd0c=/root/obsd76_orig.iso
    • growisofs -dvd-compat -Z /dev/rcd0c=/root/obsd76_orig.iso
  3. 作成した新バージョンのインストール用ISOイメージでOpenBSDをクリーンインストールする
  4. 「パッケージインストールスクリプト」でパッケージのキャッシュを作成しつつ新パッケージをインストール
  5. 事前に作成しておいたバックアップから旧バージョンシステムの機能とデータを復元する
    • バックアップ先ととして用いるシステムやリストア手順書などは別途用意しておく
  6. 「dvd用分割バックアップファイル作成スクリプト」でシステムのフルバックアップを作成する
    • 分割対象のフルバックアップ作成用スクリプトは復元されたシステムに含まれるようにしておく
  7. 分割したフルバックアップをDVD-Rに焼いていく、xaa部分は連番ファイル名なので都度読み換える
    • growisofs -dry-run -dvd-compat -Z /dev/rcd0c dvd-files/xaa
    • growisofs -dvd-compat -Z /dev/rcd0c dvd-files/xaa
  8. キャッシュしたPortsパッケージやシステムリストア用スクリプトなどを収めたカスタムインストールISOを作成する
    1. vnconfig vnd0 /root/obsd76_orig.iso
    2. mount -t cd9660 /dev/vnd0c /mnt
    3. mkdir /root/obsd76_custom
    4. cp -a /mnt/* /root/obsd76_custom
    5. (cd /; tar czf /root/obsd76_custom/7.6/amd64/site76.tgz root/pkg_cache root/install_pkg.sh fullpath/to/other_file)
    6. (cd /root/obsd76_custom; growisofs -dvd-compat -J -R -no-emul-boot -b 7.6/amd64/cdboot -Z /dev/rcd0c -R .)
    7. umount /mnt
  9. 作成したカスタムインストールISOで再度クリーンインストールし、フルバックアップのデータDVDから再度リストアを行います
    • これにより再構築されたシステムを新バージョンの環境として利用します
    • site76.tgz を有効にして再クリーンインストール
    • 必要に応じてキャッシュを利用しつつ、Portsパッケージをインストール
    • mount -t cd9660 /dev/cd0a /mnt でマウントしてデータバックアップの分割ファイルをコピーしてデータや設定ファイルなどをリストア

3.2. パッケージインストールスクリプト

#!/bin/sh

### Cache downloaded packages for another off-line install
[ ! -e /root/pkg_cache ] && mkdir /root/pkg_cache
PKG_CACHE=/root/pkg_cache; export PKG_CACHE

### Comment in bellow line if you want to install packages from PKG_CACHE
# PKG_PATH=/root/pkg_cache; export PKG_PATH

pkg_add -z \
        emacs-29.3-gtk3 \
        zsh \
        git \
        tig-2.5.8 \
        fzy \
        rsync-3.2.7p1-iconv \
        autossh \
        nmap \
        dvd+rw-tools \
        jq \
        unzip-6.0p16-iconv \
        xz \
        curl \
        wget \
        mutt-2.2.12v3-gpgme-sasl \
        lego

3.3. dvd用分割バックアップファイル作成スクリプト

  • /root/make_backup.sh に別途 tgz としてバックアップを出力するスクリプトを用意してある前提
  • 別途安全に保管されているパスワードを都度入力して暗号化を施す
#!/bin/sh

read PASSWORD; export PASSWORD
mkdir dvd-files
(sh /root/make_backup.sh | openssl enc -e -aes256 -k $PASSWORD) | (cd dvd-files && split -b 4096m)