web-dev-qa-db-ja.com

18.04 ISOのPXEブート

以前、ISOをNFSマウントに抽出し、vmlinuz.efiとinitrd.gzをcasperからtftpbootディレクトリにコピーして、iPXEスクリプトマジックを使用してUbuntu LiveCDのPXEブートを設定しました。

これは、16.04、16.10、および17.10(Artful)でも問題なく機能しました。

18.04では、最初にvmlinuz.efiがcasperに存在しなくなりましたが、vmlinuzは存在します。だから、私はいくつかの名前を変更して再試行します...

そして今ではまだ起動が完了していません。 「緊急モード」になります。 「journalctl -xb」(緊急モードのプロンプトで提案されているとおり)を入力して参照すると、次のようになります。

Unit sys-fs-Fuse-connections has begun starting up.
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
sys-kernel-config.mount: Mount process finished, but there is no mount.
sys-kernel-config.mount: Failed with result 'protocol'.
Failed to mount Kernel Configuration File System.

助けて!

2018-04-30を追加:

PXEマウント用にISOを抽出するために使用されるスクリプトコード(イメージ名に設定されたターゲット、例:バイオニック):

set -e

# Look for bionic.iso as the ISO I am going to extract.
TARGET=invalid.iso
[ -f bionic.iso ] && TARGET=bionic
echo TARGET=$TARGET

# Mount the ISO to the /tmp directory
Sudo rm -rf /var/nfs/$TARGET/*
Sudo rm -rf /tmp/$TARGET
mkdir /tmp/$TARGET
Sudo mount -o loop ~/$TARGET.iso /tmp/$TARGET

# Clear up the NFS directory where things will be copied (and copy them)
Sudo rm -rf /var/nfs/$TARGET
Sudo mkdir /var/nfs/$TARGET
Sudo rsync -avH /tmp/$TARGET/ /var/nfs/$TARGET

# I've not had luck with iPXE changing filesystems to find
# vmlinuz, vmlinuz.efi, or initrd.gz... so I copy those files
# specifically to the tftp directory structure so the boot loader
# can load them.
Sudo rm -rf /var/lib/tftpboot/$TARGET
Sudo mkdir /var/lib/tftpboot/$TARGET
Sudo cp /tmp/$TARGET/casper/vmlinuz* /var/lib/tftpboot/$TARGET/.
Sudo cp /tmp/$TARGET/casper/initrd.lz /var/lib/tftpboot/$TARGET/.

# Cleanup: unmount the ISO and remove the temp directory
Sudo umount /tmp/$TARGET/
Sudo rm -rf /tmp/$TARGET/
echo Done.
12
Joe Marley

Launchpadバグトラッカー で「Woodrow Shen」のアドバイスに従って、iPXEでこの問題を回避しました。

基本的に、ubuntu 16.04.3の古いエントリを変更しました。

:deployUbuntu-x64-16.04.3
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-16.04.3
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz.efi || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz.efi initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet -- || read void
boot || read void

Ubuntu 18.04でこのように表示するには:

:deployUbuntu-x64-18.04
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-18.04
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet toram -- || read void
boot || read void

次の変更点に注意してください。

  • 4行目と6行目でvmlinuz.efiの名前をvmlinuxに変更します
  • toramオプションを6行目に追加します
  • 新しい抽出ISOの場所に一致するようにnfs_pathを明らかに変更する

launchpadで指摘されているように、このtoramオプションには追加のRAMが必要であることに注意してください。テストでは、仮想マシンに4GBのRAMが割り当てられていることを確認する必要がありました

これは、EFIシステムとレガシーBIOSシステムの両方で機能することに注意してください。

7
DrGecko

週末の後、正確な症状を説明するバグが報告されました(インタラクティブな回避策を提供します)。

https://bugs.launchpad.net/ubuntu/+source/casper/+bug/175586

どうやら18.04.1で待つことになります。少なくとも、私は(完全に)狂っていないことを知っています!

2
Joe Marley

以下の更新-ライブisoを使用しないでください。従来のPXEブートが可能なものを使用してください。


ubuntu 14.04および16.04の場合、Webサーバー経由でアクセスできるようにフルサーバーDVD ISOをループバックマウントし、通常の方法でPXEブートを設定しました(カーネルとinitrdをtftpデーモンにコピーし、DHCP next-serverオプション、pxeメニューなど)。

ノードの展開を完全に自動化するキックスタートプロセスがあります。

これは18.04では動作しません。インストールディレクトリにカーネルがなく、install/netboot/ubuntu-installer/AMD64ディレクトリがありません。だから、私はcasperディレクトリからカーネルとinitrdを試しましたが、それも役に立たないです。 netinstall DVD isoを入手し、そこからカーネルとinitrdを使用しました。実際にテキストインストーラーを起動しますが、ミラーにはファイルが欠落していると主張しますが、httpサーバーからのログは404を提供しません!

全体として、ubuntu 18.04サーバーISOは、自動インストールを行いたい人にとって逆行性のステップだと感じています。


これをキックスタートに追加してみました

preseed live-installer/net-image文字列 http://myreposerver/ubuntu-18.04-live-server-AMD64/casper/filesystem.squashfs

これは、Ubuntu 14.04 PXEブートを自動化できるようにするためにやらなければならなかったことに少し似ています。

0
Paul M