การบูต PXE ที่ 18.04 ISO


12

ก่อนหน้านี้ฉันได้ตั้งค่าการบูต PXE ของ Ubuntu LiveCD โดยแยก ISO ไปยัง NFS mount และคัดลอก vmlinuz.efi และ initrd.gz จากแคสเปอร์ไปยังไดเรกทอรี tftpboot ด้วยเวทมนตร์การเขียนสคริปต์ iPXE

สิ่งนี้ทำงานได้อย่างไม่มีที่ติสำหรับ 16.04, 16.10 และ 17.10 (เก่ง)

ด้วย 18.04 ฉันแรกพบว่า vmlinuz.efi ไม่มีอยู่ในแคสเปอร์ แต่ 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:

รหัสสคริปต์ที่ใช้ในการแยก ISO สำหรับการติดตั้ง PXE (TARGET ตั้งเป็นชื่อภาพเช่นไบโอนิค):

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.

นี่เป็นการติดตั้งที่ "สะอาด" ซึ่งหมายความว่าไดรฟ์ที่ kernal เปิดอยู่ถูกฟอร์แมตใหม่หรือไม่ หรือมันเป็นข้าง / overtop ระบบปฏิบัติการอื่นได้หรือไม่
Jonathan

1
เครื่องเป้าหมายที่สงสัยไม่มีฮาร์ดไดรฟ์และกำลังโหลดเดสก์ท็อป LiveCD ขนาด 18.04 ผ่านการบู๊ตเครือข่าย ไม่มีการกำหนดค่าก่อนหน้านี้ ลองนึกภาพกลุ่มของเครื่องที่แทนที่จะใช้ปุ่ม USB หรือซีดีเพื่อบู๊ตไลฟ์ซีดีให้บู๊ตซีดีสดโดยใช้ iPXE ผ่านเครือข่ายแทน
Joe Marley

คำตอบ:


7

ผมทำงานแก้ไขปัญหานี้ใน iPXE โดยทำตามคำแนะนำของ "วูดโรว์ Shen" มากกว่าที่บั๊ก Launchpad

โดยทั่วไปฉันปรับรายการเก่าของเราสำหรับ 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

บันทึกการเปลี่ยนแปลงต่อไปนี้:

  • เปลี่ยนชื่อvmlinuz.efiเป็นvmlinuxสาย 4 และ 6
  • เพิ่มtoramตัวเลือกในบรรทัด 6
  • เห็นได้ชัดว่าเปลี่ยนnfs_pathเพื่อให้ตรงกับที่ตั้งของสารสกัด ISO ใหม่

โปรดทราบว่าตามที่ระบุไว้บน Launchpad toramตัวเลือกนี้ต้องใช้ RAM เพิ่มเติม ในการทดสอบของฉันฉันต้องการเพื่อให้แน่ใจว่าเครื่องเสมือนของฉันมีการจัดสรร RAM 4GB

โปรดทราบว่าวิธีนี้ใช้ได้กับทั้ง EFI และระบบ BIOS ดั้งเดิมของเรา


1
ขอบคุณ DrGecko - toramตัวเลือกที่เหมาะกับฉันด้วยมิ้นต์ 19!
Brian Sidebotham

สิ่งนี้ใช้ได้กับ lubuntu 18.04.1 (LTS) ซึ่งเป็นสิ่งที่ฉันต้องการ ขอขอบคุณ!
Joe Marley

1
มีตัวเลือกอื่นซึ่งไม่ต้องการtoramและอนุญาตให้บูตคอมพิวเตอร์ที่มี RAM น้อยกว่ามาก: เปลี่ยนจุดสิ้นสุดของบรรทัดที่ 6 เป็นip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag

@Ricflomag ขอบคุณมากฉันมีกองคอมพิวเตอร์ที่มี RAM 2GB ทดสอบและใช้งานบน Ubuntu MATE 18.04.1 และ Linux Mint 19.1 ซึ่งมีปัญหาเดียวกันเนื่องจากใช้งานกับ Ubuntu 18.04
Skylar Ittner

2

หลังจากสุดสัปดาห์ฉันพบข้อผิดพลาดที่รายงานซึ่งอธิบายอาการที่แน่นอนของฉัน (และให้วิธีแก้ปัญหาแบบโต้ตอบ)

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

เห็นได้ชัดว่าฉันจะรอ 18.04.1 อย่างน้อยตอนนี้ฉันก็รู้ว่าฉันไม่ได้บ้าอย่างสิ้นเชิง!


ฉันควรคลิกที่ลิงก์ก่อน - ใช้เวลาค่อนข้างมากในการหา ฉันใช้ AIO Boot ขอบคุณ
Regmi

0

อัปเดตด้านล่าง - อย่าใช้ iso สดใช้อันดั้งเดิมที่สามารถบูตด้วย PXE ได้อย่างที่ฉันเคยทำ


สำหรับอูบุนตู 14.04 และ 16.04 ฉันเพียงแค่วนลูปแบ็คติดตั้งเซิร์ฟเวอร์ DVD ISO เต็มรูปแบบเพื่อให้สามารถเข้าถึงได้ผ่านเว็บเซิร์ฟเวอร์และตั้งค่าการบูต PXE ตามปกติ (คัดลอกเคอร์เนลและ initrd ไปยัง tftp daemon, DHCP ตัวเลือกเซิร์ฟเวอร์ถัดไป เมนู pxe เป็นต้น)

เรามีกระบวนการเริ่มต้นเพื่อให้การปรับใช้โหนดโดยอัตโนมัติ

สิ่งนี้ใช้ไม่ได้กับ 18.04 ไม่มีเคอร์เนลในไดเร็กทอรีการติดตั้งและไม่มีไดเร็กทอรีการติดตั้ง / netboot / ubuntu-installer / amd64! ดังนั้นฉันจึงลองใช้เคอร์เนลและเริ่มจากไดเรกทอรีแคสเปอร์ แต่นั่นก็ไร้ประโยชน์เช่นกัน ฉันคว้า iso netinstall DVD และใช้เคอร์เนลและเริ่มจากนั้น อันที่จริงมันทำให้ไฟติดตั้งข้อความ แต่ยืนยันว่ามิร์เรอร์หายไปจากไฟล์ แต่บันทึกจากเซิร์ฟเวอร์ http ของฉันไม่ได้ให้ 404 ใด ๆ !

โดยรวมแล้วฉันรู้สึกว่าเซิร์ฟเวอร์ ISO Ubuntu 18.04 เป็นขั้นตอนย้อนหลังสำหรับผู้ที่ต้องการทำการติดตั้งอัตโนมัติ


ฉันยังพยายามเพิ่มสิ่งนี้ลงในคิกสตาร์ท

สตริงการแสดงสด live-installer / net-image http: //myreposerver/ubuntu-18.04-live-server-amd64/casper/filesystem.squashfs

ซึ่งค่อนข้างเหมือนสิ่งที่ฉันต้องทำเพื่อให้ Ubuntu 14.04 PXE boot อัตโนมัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.