スキップしてメイン コンテンツに移動

投稿

ConnectX-4 VPIを使い ipoib + iPXE にて Ubuntu 24.04 を iSCSI root で セキュアブート

細かいところで Debian 12 と Ubuntu 24.04 には違いがあり、たとえば /etc/resolv.conf なんですが、Ubuntu では 最小インストールでも systemd-resolved を使うので /etc/resolv.conf へは直接値を書き込んでも systemd-resolved が上書きします。このため Debian 12 用のインストールスクリプトを変更する必要が若干ですがあります。 今回は簡易インストールで iSCSI root にて起動することを主題に置いたので、systemd-resolved については削除し、iSCSI root で最小限の Ubuntu 環境を作成するようにしました。また、initramfs-toolsも Ubuntu では debootstrap ではインストールされないので、これは追加でインストールしています。 とはいえ、大まかな流れは同じなので、dhcp サーバと apache2 および ipxe メニューについては割愛していますので、これらについては 以前の投稿 を参考にしてください。 なお、作業は Debian 12 で行いましたが、Ubuntu 向けの debootstrap deb 玉を 引っ張ってきて展開し、スクリプトを配置すると Debian 上でも Ubuntu 24.04 の debootstrap も OK でした。 また、今回は ipoib インターフェースは一枚で iBFT の情報の受け渡しに問題がないことを前提としています。さらに、オンボードの NIC は BIOSで Disableにして有効なインターフェースは ipoib 一枚だけを使用する事を前提としています。 以下設定詳細です。 #### disk image # on target i51 ( Debian 12 ) # apache2 の設定などについては以前の投稿を参照してください。 #apt-get install targetcli-fb qemu-utils tftpd-hpa apache2 REL=noble IMG=ub2404.amd64.01.img tNAME=ub2404-amd64-01 tHOSTNAME=i51 tADDR=10.1.40.51 tBASE=iq...
最近の投稿

Gnome Terminal で ssh 経由のシリアルコンソール使用時、太文字をハイライト表示させる

表題だとなんの事かわかりにくいのですが、Gnome Terminal からサーバへssh 経由でシリアルコンソールに接続すると、何もしていないときは太字が隠れてしまい、現在選択している項目が何なのかわかりません。文で説明するとわかりにくいのですが、画像ではこのようになります。 この画像だと、現在 "Save Changes and Exit"を選択しているのですが、全く見えません。Windowsのパワーシェル経由だと見えるので始めは True Color が必要なのかと思っていたのですが、power shell のシーケンス詳細を見た所、そうではなく、どうやら太字をハイライト表示させれば良さそうでした。 Gnome ターミナルの場合、"太字のテキストを明るい色で表示する"にチェックをいれます。チェックを入れると以下のようになりました。 ちょっとしたことなんですが、これでテキストコンソール経由での BIOS 設定で慌てなくてすみますね。今回も備忘録として挙げてみました。以上です。それでは。

initramfs 上で tcp iSCSI root から iSER root に切替

iPXEでセキュアブートした TCP iSCSI root は 前回の方法 で一息ついたのですが、ConnectX VPI は rdma が使えるのに使わないのは勿体ないと思いました。なので一旦 iPXE で iBFT を登録・ iscsiでboot してから、initramfs 上で SRP root に切替た所、上手くいったのですが、SRPで複数ターゲット・複数イニシエータがある場合、ターゲットの探索を行うと、複数のターゲットが検出される上、/dev/disk/by-pathがローカルのデバイスと判別がつきにくく、さらに srptoolsには含まれるイニシエータプログラムが2つあり、それぞれ異なるaclを投げてくる為、管理が非常に面倒だということが分かったので、こちらはボツネタにしました。 そこで今度は iSER でテストし、/dev/disk/by-path での管理も特に問題はなさそうでしたので、initramfs 上で iBFT の情報( iscsistart -f )を元に tcp ISCSI root から ISER rootに切替したところ、上手くいきましたので本稿を挙げてみることにしました。 基本的には、 前回の方法 と同じなのですが、おさらいの意味も兼ねて今回は全体の詳細を挙げます。なお、今回はターゲット・tftp/httpサーバは同一の 10.1.40.51 ( i51 ) で、イニシエータは 10.1.40.114 ( sv114 ) で共にDebian 12 としています。また、dhcp server だけは Debian 12 の isc-dhcp-server が ipoib での bootps に対応していないので、別のサーバ ( 10.1.40.50, i50 Ubuntu24.04 ) としています。また、イニシエータは今回 2 ポートの Connectx-3 VPI で試したのですが、 uefi ロム が見つかったので、セキュアブートもOKでした。 # ターゲットイメージの作成等 ( on target 10.1.40.51 i51 ) apt-get install targetcli-fb qemu-utils tftpd-hpa apache2 REL=bookworm IMG=deb12.amd64.04.i...

ConnectX-4 VPIを使い ipoib + iPXE にて Debian 12 を iSCSI root で セキュアブート

ファームウェアを 2025/03 現在で最新のものにアップデートした ConnectX-4 VPI は、Flexboot が UEFI に対応しているとのこですが、当方の環境では ConnectX-3 VPI が BIOS モードで立ち上がるような CUI は 立ち上がらず、また、BIOSでも設定項目はみつかりませんでした。その代わり、サーバ上で Networking stack を Enabled にして iPXEではなくPXEブートする方法では確かにPXEパケットはやり取りできています。( 参考までにCX3ではブートメニューに現れませんでした。 こちらの uefi rom を焼いたところ、CX3 もブートメニューに現れました。) しかし、iPXEではなくPXE ブートでは iSCSI 接続を iBFT として登録する方法はBIOS上で設定項目がない限りありません。そこで、PXEから bootfileを signed ipxe.efi にし、 sanhook で iscsi root イメージを ibft に登録してからブートしたところ、今度は上手く行きました。(2025/04/05:訂正:当方のapache2 の コンフィグミスで、signed ipxe.efiにて直接 IPoIB 経由で Altiris/iPXE/GetPxeScript.aspx (menu.ipxe相当)にアクセスできましたので、表題および本文を訂正しました。) 基本的には iPXE経由でセキュアブートする方法 とあまり違いはありませんが、(2025/04/07 大幅加筆修正:)こちらでも詳細を挙げておくことにしました。 # iscsi root memo 01 #### disk image の作成等 # on target i50 ( ubuntu 24.04 ) apt-get install targetcli-fb qemu-utils tftpd-hpa apache2 isc-dhcp-server REL=bookworm IMG=deb12.amd64.01.img tNAME=deb12-amd64-01 tHOSTNAME=i50 tADDR=10.1.40.50 tBASE=iqn.1868-01.com.example iHOSTNAME=sv112...

最小限のgrub.cfgでシリアルコンソールを設定

とある iSCSI root の環境では、サーバが kvm リダイレクションに対応していないものの、シリアルコンソールリダイレクションには対応しているので、シリアル経由で操作できる最小限の grub.cfg を記述しました。といっても大したことではないのですが、update-grubを使わずに、手動で grub.cfg を設定する方法はあまり見かけないので備忘録として挙げてみることにしました。 # /boot/grub/grub.cfg insmod serial serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 terminal_input --append "console serial" terminal_output --append "console serial" set default="0" set timeout=20 menuentry 'Debian 12 iSCSI root'{ linux /boot/vmlinuz-6.1.0-29-amd64 root=UUID=efde20a1-b46c-4a51-86d0-xxxxxxxxxxxx rw ip=::::::dhcp iscsi_auto net.ifnames=0 rootfstype=xfs rootwait console=tty0 console=ttyS0,115200n8 initrd /boot/initrd.img-6.1.0-29-amd64.ib } 最初の4行が grub をシリアルコンソールで操作する設定で、linux 行の最後の console=tty0 console=ttyS0,115200n8 が linux をシリアルコンソールで操作する設定です。console が2つありますが、tty0 と ttyS0 の2つをそれぞれ console として登録する設定になります。 簡単ですが、今回は以上です。それでは。

ConnectX-3 VPIを使い ipoib 経由にて Debian 12 を iSCSI root で boot

ConnectX-3 VPIなんですが、 uefi の rom はあるだろうと思っていたのですが、調べた所、どうやら Legacy rom しかないらしく、セキュアーブートはできないのですが、ipoib 経由で iSCSI root はできたので、備忘録として挙げてみることにしました。 uefi rom が こちら にありましたが、本稿はレガシーブートの例として残しておくことにしました。 まず、大まかな流れですが、iSCSI target 上で disk イメージを作成し targetcli をつかってアクセスできるようにしておきます。 なお disk imageは uefiクライントも共有できるように gptでパーティションを作成し grub(uefi) を設定していますが、今回は pxelinux が kernel と initrd を直接読み込むので問題はありません。 次に、ConnectX-3の場合 ブートデバイスとして起動すると、flexboot ( iPXE ) が立ち上がるのですが、Legacy ブート なのでサーバ側は 前述のように grub ではなく、 pxelinux を tftp サーバ上で設定します。なお今回は menu.ipxe 経由で disk イメージを iSCSIデバイスとしてフックして iBFT を登録させておいてから、 pxelinux にhttpでチェーンするようにしました。( http server ( apache2 ) の設定は前回を参照してください。 ) 次に、dhcp サーバを設定し、menu.ipxe を取得できるようにしておきます。なお、 dhcpサーバーについては、残念ながら Debian 12 の isc-dhcp-server 場合 ipoib での bootp/dhcp には対応しておらず、今回は Ubuntu 24.04 LTS で構成 しました。また今回はiSCSIターゲットは 別セグメントにありますが、dhcpd.conf が正しく default gw を指定しルーティングが機能していれば問題はありません。 以下設定詳細です。iSCSI イニシエータ(クライアント) が 10.1.40.112/sv112, iSCSI ターゲット(サーバ)が10.1.56.106/sv106, tftp/...

targetcli コマンドをシェルから直接実行する

targetcliは非常にわかりやすいインターフェースを持っているのですが、iSCSI ターゲットの数が増えてくると、例えば ls コマンドでは対象となる表示項目も増えてしまい少し操作がわかりにくくなってしまいますし、そもそもコマンドを一々打つのは面倒なのが正直なところです。なので、直接シェルからtargetcliのコマンドを打てないかとおもい、helpを見たところ" CMD Run targetcli shell command and exit"とありました。そこで試しに以下のようなコマンドをシェルから打った所、成功しましたので備忘録として挙げてみることにしました。 $ sudo targetcli /backstores/fileio/ create deb1290-amd64-dvd1 /srv/tftp/debian-12.9.0-amd64-DVD-1.iso Created fileio deb1290-amd64-dvd1 with size 3981279232 $ sudo targetcli ls /backstores/fileio | grep iso o- deb1290-amd64-dvd1 .................................. [/srv/tftp/debian-12.9.0-amd64-DVD-1.iso (3.7GiB) write-back deactivated] o- deb1290ni-80 ................................... [/srv/tftp/debian-12.9.0-amd64-netinst.80.iso (632.0MiB) write-back activated] o- deb1290ni-81 ................................... [/srv/tftp/debian-12.9.0-amd64-netinst.81.iso (632.0MiB) write-back activated] o- ubuntu-24.04.2-desktop-amd64 ....................... [/srv/tftp/ubuntu-24.04.2-deskt...