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

投稿

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経由でセキュアブートする方法 とあまり違いはありません。 # /etc/dhcp/dhcpd.conf --snip subnet 10.1.40.0 netmask 255.255.255.0 { option domain-name-servers 10.1.1.64; option domain-name "example.com"; option routers 10.1.40.50; option broadcast-address 10.1.40.255; next-server 10.1.40.50; if substring(vendorclass, 0, 9)="PXEClient" { if pxetype=0...

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

とある iSCSI root の環境では、サーバが kvm リダイレクションに対応していないものの、シリアルコンソールリダイレクションには対応しているので、シリアル経由で操作できる最小限の grub.cfg を記述しました。といっても大したことではないのですが、update-grubを使わずに、手動で grub.cfg を設定する方法はあまり見かけないので備忘録として挙げてみることにしました。 # /boot/grub/grub.cfg 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-cf7b3cc9f39c 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 } 最初の3行が 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...

iPXE経由で iSCSI root にて Debian を セキュアブート

セキュアブートに対応した iPXE バイナリは公式サイトにはないのですが、調べていると サイン済みのバイナリが broadcom 社の KB に あると ipxe.org の bbs に記載がありました。該当の kb は こちら です。早速、この kb にリンクのある "64bit_ipxe_efi.zip" をブラウザでダウロードし、tftp/http サーバー上で解凍、dhcp サーバを設定して、tftp で取得・起動させた所、起動はするものの次のステージへは、特定のhttp ポート ( 4433 ) の固定パス ( Altiris/iPXE/GetPxeScript.aspx ) を参照するため、何もしていないと connection がリセットされてしまいます。 なので、apache2を 4433でもリッスンするようにして Altiris/iPXE/GetPxeScript.aspx を配置し、中身を shell が起動するだけの menu.ipxe にしたところ、シェルに入れました。 これでOKだと思ったのですが、実はここからが難題でした。 というのも、サイン済みの bootnetx64.efi や linux カーネルをブートしようとしても、exec format error になり起動できません。機種によっては wimboot すら起動しません。それでも CDぐらいはブートできるだろうと思い直し、インストーラの iso ファイルの起動を sanboot コマンドにて試してみたところ、起動はするものの今度はインストーラまで到達できません。ただ、grubとカーネルまでは起動はしているので、iso ファイルを自前で作成し、前回のように nfsroot で立ち上げた所、システムも起動できましたが、isoファイルの作成だと grubのメニュー項目が read only なので、編集したい場合は iso ファイルを再作成しなければならず、実用的ではないなとこれはボツネタにしました。 そこで気を改めて r/w 可能な iSCSI で試してみることにしました。まず、始めは netinst cd イメージを targetcli で エクスポートした所、isoファイルの sanboot とほぼ同じで、grubとカーネルまでは起動できますが、cdr...

Ubuntu 24.04 Desktop Live をSecure boot が有効な状態で nfsroot にて Netboot

最近の Ubuntu は Netboot で Secure boot をサポートしているとのことだったので、Ubuntu 24.04 Desktop Live を Netboot + NFS root で試してみました。なお、dhcp server は kea dhcp4 をつかい、ipxe ではなく サイン済みの bootx64.efi 経由でブートさせていますので 直接 grub のメニューに入ります。なお今回の環境はサーバはUbuntu 24.04 で構成しています。 早速ですが設定です。まず tftpd-hpa をインストールします。 apt-get install tftpd-hpa 続いて net boot する iso イメージファイルをダウンロードしマウントしておきます。 cd /srv/tftp wget https://releases.ubuntu.com/24.04.2/ubuntu-24.04.2-desktop-amd64.iso mkdir -p /srv/tftp/ubuntu-24.04.2-desktop-amd64 mount -o loop /srv/tftp/ubuntu-24.04.2-desktop-amd64.iso /srv/tftp/ubuntu-24.04.2-desktop-amd64 さらに Netbootで使用するファイル類を取得し展開・配置等しておきます。 cd /srv/tftp wget https://releases.ubuntu.com/24.04/ubuntu-24.04.2-netboot-amd64.tar.gz tar xzvpf ubuntu-24.04.2-netboot-amd64.tar.gz cp -a amd64/bootx64.efi /srv/tftp/ cp -a amd64/grubx64.efi /srv/tftp/ grub-mknetdir --net-directory=/srv/tftp cp -a /srv/tftp/boot/grub /srv/tftp/ cat > /srv/tftp/grub/grub.cfg << EOF menuentry 'Ubuntu 24.04.2 amd64 nfsroot...