
次のようにUbuntu 22.04サーバー用のPXEブートを設定しようとしています。このガイドライン。これは私のものです/srv/tftp
:
root@vogon:~# ll /srv/tftp
total 1444
drwxr-xr-x 3 root root 4096 Jul 15 2022 boot/
drwxr-xr-x 3 root root 4096 Jul 1 2022 debian/
drwxrwxrwx 3 root root 4096 Jul 8 2022 debian-installer/
lrwxrwxrwx 1 root root 36 Jul 8 2022 grub.cfg -> debian-installer/amd64/grub/grub.cfg
-rw-r--r-- 1 root root 9278 Jul 1 2022 grub.cfg.bk
-rw-r--r-- 1 root root 1426816 Jan 25 13:44 grubx64.efi
drwx------ 2 root root 16384 Jul 8 2022 lost+found/
drwxr-xr-x 2 root root 4096 Jan 25 13:22 save/
drwxr-xr-x 4 root root 4096 Jan 25 12:52 ubuntu/
アイデアは、いくつかのディストリビューションの中から選択できるということです。これはDebian 11とUbuntu 20.04で動作します。私はUbuntu 22.04を追加したいと思います。ここに私のものがありますgrub.cfg
。
root@vogon:~# cat /srv/tftp/grub.cfg
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
set gfxpayload=text
set timeout=-1
menuentry 'Debian 11'{
set background_color=black
linux /debian/11/amd64/linux priority=low vga=788 ---
initrd /debian/11/amd64/initrd.gz
}
menuentry "Ubuntu 20.04" {
linux /ubuntu/20.04/amd64/linux only-ubiquity ip=dhcp ---
initrd /ubuntu/20.04/amd64/initrd.gz
}
menuentry "Ubuntu 22.04 Server" {
linux /srv/tftp/ubuntu/22.04-srv/vmlinuz url=https://www.releases.ubuntu.com/22.04/ubuntu-22.04.1-live-server-amd64.iso only-ubiquity ip=dhcp ---
initrd=/srv/tftp/ubuntu/22.04-srv/initrd
}
メニューはうまく表示されますが、を選択するとUbuntu 22.04 Server
しばらくメッセージが表示されますが、File not found
どのファイルに関する情報も表示されません。このエントリの行がlinux ...
複数回変更され、すべて同じエラーが表示されます。で言及された最後のファイルはsyslog
次のとおりです/srv/tftp/ubuntu/22.04-srv/vmlinuz
。
...
Jan 25 13:18:52 vogon in.tftpd[376344]: RRQ from 192.168.50.96 filename grubx64.efi
Jan 25 13:18:52 vogon in.tftpd[376345]: RRQ from 192.168.50.96 filename /debian-installer/amd64/grub/x86_64-efi/command.lst
Jan 25 13:18:52 vogon in.tftpd[376346]: RRQ from 192.168.50.96 filename /debian-installer/amd64/grub/x86_64-efi/fs.lst
Jan 25 13:18:52 vogon in.tftpd[376347]: RRQ from 192.168.50.96 filename /debian-installer/amd64/grub/x86_64-efi/crypto.lst
Jan 25 13:18:52 vogon in.tftpd[376348]: RRQ from 192.168.50.96 filename /debian-installer/amd64/grub/x86_64-efi/terminal.lst
Jan 25 13:18:52 vogon in.tftpd[376349]: RRQ from 192.168.50.96 filename /debian-installer/amd64/grub/grub.cfg
Jan 25 13:19:00 vogon in.tftpd[376358]: RRQ from 192.168.50.96 filename /srv/tftp/ubuntu/22.04-srv/vmlinuz
...
vmlinux
ロードされているようですが、url=...
わかりません。しかし、何をすべきですか?
答え1
grubx64.efi
TFTPサーバーが要求するとファイルを提供します/srv/tftp/grubx64.efi
。
要求すると/debian-installer/amd64/grub/x86_64-efi/command.lst
ファイルを提供します/srv/tftp/debian-installer/amd64/grub/x86_64-efi/command.lst
。パターンが見えますか?
TFTPサーバーは、/srv/tftp/
受信したすべての要求のパス名にプレフィックスを追加し、/srv/tftp/
その下のディレクトリにのみTFTPアクセスを効果的に制限するようです。これは/srv/tftp
あなたのサーバーだと言うことができますTFTPルートディレクトリ。
Ubuntu 22.04用のメニュー項目を作成するときに、他のメニュー項目とは異なり、このプレフィックスを作成しました。 TFTP サーバーが要求を受信すると、/srv/tftp/ubuntu/22.04-srv/vmlinuz
プレフィックスを再度追加し、最終的には/srv/tftp/srv/tftp/ubuntu/22.04-srv/vmlinuz
存在しない読み取りを試みます。
/srv/tftp/grub.cfg
Ubuntu 22.04の項目を次に変更することをお勧めします。
menuentry "Ubuntu 22.04 Server" {
linux /ubuntu/22.04-srv/vmlinuz url=https://www.releases.ubuntu.com/22.04/ubuntu-22.04.1-live-server-amd64.iso only-ubiquity ip=dhcp ---
initrd /ubuntu/22.04-srv/initrd
}
キーワードの後のファイル名は、PXEブートGRUBにTFTPを介してこれらのファイルをダウンロードするように指示するlinux
ため、initrd
これらのパス名はサーバーのTFTPルートと相対的でなければなりません。
この時点では、url=
GRUBが起動しようとしているカーネルに解釈されずにそのまま渡されるデータ文字列です。カーネルが起動し、ファイルのスクリプトとツールがinitrd
起動し始めると(つまり、initramfsの起動段階で)、/proc/cmdline
Ubuntuネットワークインストールファイルがないため、initrd
確認のために抽出できません。しかし、オプションが存在するようです。url=
同様のツールを使用するか、curl
このwget
URLの内容をRAMディスクにダウンロードするためにいくつかのスクリプトが実行されます。
URLが指定されているため、https://
TFTPとは何の関係もありません。インターネット接続が最も速くない場合は、ISOを一度ダウンロードし、かなりローカルのHTTPまたはHTTPSサーバーでホストし、url=
それに応じてパラメータを調整する必要があります。これにより、少なくともインストールプロセスの初期部分の速度が速くなります。