前回の記事の続き。
ベースOSの初期設定
ユーザの追加
初期登録ではorangepiで自動ログインされてしまうので普通のサーバの設定に変更しておく。
- ユーザの登録(orangepiの初期パスワードはorangepi)
- sudoグループへ登録してsudoコマンドを利用可能に
- rootパスワードを登録
- 自動起動を無効に(公式マニュアル 3.4.2節 p.145に記載)
- ホスト名変更
- 再起動
- orangepiユーザの削除
- パッケージの更新
<code>$ sudo su - # adduser user_name <省略> # vi /etc/group <グループにユーザを登録> # passwd <ユーザのパスワードを登録> # auto_login_cli.sh -d <自動ログイン無効化> # vi /etc/hostname <ホスト名変更> # shutdown -r now <再起動> <一般ユーザでログイン> $ sudo deluser orangepi <orangepiの削除> $ sudo apt update $ sudo apt upgrade</code>
Debian系は、sudoersで以下の設定がなされているため、group sudoに登録すればよい。
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
M.2 SSDからの起動
信頼性からmicroSSDでの運用は避けることにして(とはいえ、自宅ラボのラズパイは実験用なのでmicroSSDで動かしちゃってますが。。。OSが入っているだけのただのコンピュートノードなので壊れたら上位をマイグレーションさせて、取り替えればよいだけですからね。)
なんですが。。。これ、いろいろ失敗したのですよね。。。なので、その部分はもしかすると手順ちょっと間違っている可能性があります。。。orz
ブートローダーの更新
では開始。公式マニュアル / 公式Wiki 2.6節に記述があります。SSDから起動できるようにブートローダーを更新します。
$ sudo nand-sata-install

図のように7を選択して更新する。WARNINGの後、更新が始まっても画面が全く変わらないので焦るのだけど、数分待つと終わる。これで取り付けてあるM.2 SSDから起動もできるようになっています。
起動ディスクイメージの書き込み
起動ディスクイメージはこの状態で、/dev/nvme0n1が、M.2 SSDなので、ここに直接ddコマンドで書き込む。公式では落としてきたファイルで書き込め、とあるが、今、microSDにイメージがあるので、そのイメージを直接書き込んだ。と書いていて思ったのだが、結果としては動いているけど、動作中のディスクダンプなので本当はあまりよろしくないような気がする。そうすると、初期設定前のブートした直後にイメージをファイルシステム内にダウンロードして書き込むのが正統派なんだと思われ。なんでこの方法にしたのか思い出せない。。。
$ sudo dd bs=4M if=/dev/mmcblk1 of=/dev/nvme01n1
ともあれ、これで再起動するとSSDから起動します。初回起動で容量調整もやってくれます。
proxmox用のlocal-lvm領域確保
Proxmox VEは、OS起動ディスク内にVM/コンテナ用のローカル割り当て領域を作成する(local-lvm)。通常のamd64用の公式インストーラを利用しないで今回のように非公式レポジトリからのインストールインストールするとこの領域は作成されない。raspberry piなら、小さいmicroSDで運用して、データはCephを利用するというのは有力だが、今回の用途ではローカル動作のコンテナ/VMを作りたい。そこで、あらかじめ、OS領域以外のディスクパーティションを開けておき、後で、local-lvmを作成することにする。
今回の方法だと/dev/nvme01p1が、/bootで、/dev/nvme01p2が、/となり、p2に残領域が割り当てられている。そこで、/dev/nvme01p2を縮小し、残りをねん出する、と書いたのだが、一旦動かし始めるとこれは結構難しい。実は失敗して壊してしまい、結局、microSDでブートしなおしてから、サイズを切りなおした、/dev/nvme01n1p2へ、/dev/mmcblk1p2をコピーして事なきを得た。動かしながら縮小することはできないので、やるとするとinitramfs内で処理するしかないのだけど、難易度が高そうなので、/dev/nvme01p1、/dev/nvme01p2を作成してからパーティションごとにコピーするのがよさそうである。ちなみに、proxmoxを動作させても/は、5GB弱で済んでいる。私の環境では32GiBで用意した。
Kernelコンパイル
いきなり、カーネルコンパイルの話になる。というのも、rasbian OSや、orange pi 向けDebianの公式イメージに含まれているカーネルはhypervisorで利用することを想定しておらず、今回だとvhost_netモジュールが見つからないとpve-clusterが起動しなかったためである。そこで、あらかじめカーネルを更新しておく。(実際の順序としては、動かしてから気が付いて後から用意して対処したが、そのあとで上で書いたlocal-lvm領域のためのサイズ縮小で全部壊してしまい次からやるときは先に用意しておいたものを使った、という順)これは、raspberry piでも同様だが、コンパイルのやり方は異なる。
コンパイルの方法は公式マニュアル/公式Wikiの6章に記載がある。ここの記載の6.1,6.2,6.4の順に実施すればよい。raspberry piの場合は、ボード上でコンパイルができたが、Orange Pi 5 Plusの場合は、Ubuntu 22.04 LTSのクロスコンパイル環境が必要。なので、私の場合は自宅ラボ内のamd64のサーバで、専用のコンテナを用意した。
マニュアル通りでしかも長いので省略するが、Ubuntuに精華大学のレポジトリを設定し(なんか仕込まれてそうですが。。。)、GitHubのOrange PI buildを落としてきてビルドする。
$ sudo ./build.sh
Kernel packageを選択、orangepi5plusを選択、カーネル設定はできるが、たぶんデフォルトでもVirtualizationが*つけられているのでそのままで動作しそう。コンパイルが終わるとoutput/debsにDebianのパッケージの形で出力されるので、それをscpでコピーしてインストールする。
user@arm64cc:~/orangepi-build$ ls output/debs/ extra linux-dtb-legacy-rockchip-rk3588_1.0.8_arm64.deb linux-headers-legacy-rockchip-rk3588_1.0.8_arm64.deb linux-image-legacy-rockchip-rk3588_1.0.8_arm64.deb u-boot user@arm64cc:~/orangepi-build$ scp *.deb target_ip:/home/user_name <target_ipはorangepiのIPアドレス、/home/user_nameは適当に。/tmpとかでもよい>
dpkgでインストールした後、再起動。これでようやく準備終了。長くなったので次の記事で。
コメントを残す