Boot NVME SSD จากคีย์ USB


1

tl; dr - วิธีบู๊ตการติดตั้ง Ubuntu Server จากคีย์ USB

ฉันกำลังพยายามบูต Ubuntu Server 18.04 LTS ที่ติดตั้งบนเซิร์ฟเวอร์ที่ไม่อนุญาตให้ทำการบูทจากไดรฟ์ NVMe เนื่องจากไดรฟ์สามารถมองเห็นการโพสต์บูต (หลังจากบูตไปยัง Live CD เป็นต้น) ฉันคิดว่ามันจะทำงานได้โดยการโหลดระบบปฏิบัติการจากดิสก์ / คีย์ USB ที่ฉันเสียบไว้ตลอดเวลา

ฉัน scoured ผ่านเว็บสำหรับคำแนะนำเกี่ยวกับวิธีการทำเช่นนี้ แต่ทุกสิ่งที่ฉันได้พบอยู่ในระดับแนวคิดมาก ฉันกำลังมองหาใครสักคนที่จะให้ลิงก์ไปยังเอกสารหรือคำแนะนำทีละขั้นตอน

ข้อกำหนดฮาร์ดแวร์ (ถ้าจำเป็น):

Dell Poweredge R230 Startech x4 PCI Express ถึง M.2 PCIe SSD การ์ดอะแดปเตอร์ Samsung 970 EVO NVMe (M.2) 250 GB Kingston DataTraveler SE9 16GB

คำตอบ:


-1

ฉันมีไดรฟ์ USB ที่ฉันใช้ในการบูตจากแล็ปท็อปของฉันซึ่งมีปัญหาต่อเนื่องกับฮาร์ดไดรฟ์ภายใน บางครั้งมันจะไม่ถูกตรวจพบใน BIOS แต่มันจะถูกตรวจพบเสมอเมื่อบู๊ตแล้ว

หากคุณติดตั้ง systemd-boot ไว้ในไดรฟ์ภายในให้ทำตามคำแนะนำแรก ถ้าไม่ข้ามไปที่วิธีที่สอง การติดตั้ง systemd-boot บนไดรฟ์ภายในเป็นวิธีที่แนะนำ

คู่มือ 1: Systemd-boot บนไดรฟ์ภายใน

  1. บูตเครื่องเข้าสู่ซีดีสดบนคอมพิวเตอร์ ใส่ไดรฟ์ USB ที่คุณใช้เพื่อบู๊ตจากไดรฟ์ NVMe

  2. สร้างพาร์ติชัน FAT32 บนไดรฟ์ USB ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการบูทและแฟล็ก esp วิธีที่ง่ายที่สุดในการทำเช่นนี้คือกับ gparted

  3. เมาท์พาร์ติชัน FAT32 สำหรับขั้นตอนที่เหลือฉันจะถือว่ามันติดตั้งที่ / mnt / usbboot

  4. เพิ่มพาร์ติชันสำหรับเริ่มระบบ USB ของคุณไปยัง fstab เพื่อให้มันถูกเมาท์โดยอัตโนมัติ วิธีที่ง่ายที่สุดที่จะทำนี้คือการ chroot (ใช้ซุ้มประตู chroot ก็ง่าย) sudo genfstab -U / > /etc/fstabลงในไดรฟ์ภายในของคุณและเรียกใช้

  5. สร้างไฟล์นี้บนไดรฟ์ภายใน: `/etc/systemd/system/boot-sync.service '

    หมายเหตุ: คุณจะต้องติดตั้ง rsync สำหรับหน่วย systemd นี้

  6. วางสิ่งต่อไปนี้ลงในไฟล์ที่คุณเพิ่งสร้างขึ้น:

[Unit]

คำอธิบาย = "ซิงค์ไฟล์บูตจากไดรฟ์ภายในกับไดรฟ์ usb"

RequiresMountsFor = / mnt / usbboot

[บริการ]

พิมพ์ = Oneshot

ExecStart = / bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"

ExecStart = / bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /

ExecStart = / bin / rsync -rlgopuv / boot / EFI / mnt / usbboot /

ExecStart = / bin / rsync -rlgopuv / boot / loader / mnt / usbboot /

[ติดตั้ง] WantedBy = multi-user.target

  1. Chroot ลงในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้: sudo systemctl enable --now boot-sync.service

  2. รีบูทและเลือกไดรฟ์ USB ที่คุณเพิ่งสร้างเป็นอุปกรณ์บู๊ตเริ่มต้น


คู่มือ 2: Systemd-boot บนไดรฟ์ USB - ไม่แนะนำ

  1. บูตเครื่องเข้าสู่ซีดีสดบนคอมพิวเตอร์ ใส่ไดรฟ์ USB ที่คุณใช้เพื่อบู๊ตจากไดรฟ์ NVMe

  2. สร้างพาร์ติชัน FAT32 บนไดรฟ์ USB ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการบูทและแฟล็ก esp วิธีที่ง่ายที่สุดในการทำเช่นนี้คือกับ gparted

  3. เมาท์พาร์ติชัน FAT32 สำหรับขั้นตอนที่เหลือฉันจะถือว่ามันติดตั้งที่ / mnt / usbboot

  4. เจาะเข้าไปในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้ sudo bootctl --path=/mnt/usbboot install

  5. เรียกใช้คำสั่งนี้ (ภายใน chroot บนไดรฟ์ภายในของคุณ) sudo bootctl update(หมายเหตุ: สิ่งนี้อาจไม่จำเป็น แต่จะไม่เจ็บ)

  6. สร้างรายการสำหรับไดรฟ์ NVMe ของคุณที่ /mnt/usb/loader/entries/ubuntu_server.conf

ควรมีลักษณะเช่นนี้:

title Ubuntu Server 18.04
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=XXXX rw

แทนที่XXXXด้วย PARTUUID สำหรับพาร์ติชันรูทของไดรฟ์ NVMe ของคุณ สามารถพบได้โดยการเรียกใช้ blkid และค้นหาพาร์ติชันรูทของคุณ

  1. สร้าง /mnt/usb/loader/loader.conf

ควรมีลักษณะเช่นนี้:

default ubuntu_server

timeout 4

editor 0

หมายเหตุ: ทำตามขั้นตอน EITHER ทั้ง 8A หรือขั้นตอน 8B หากคุณเลือกที่จะคัดลอกไฟล์ด้วยตนเองพวกเขาจะต้อง recopied ทุกครั้งที่คุณปรับปรุงเคอร์เนล


8A (ไม่แนะนำ) คัดลอก/boot/initramfs-linux.imgและ/boot/vmlinuz-linuxจากพาร์ทิชันบูตภายในไดรฟ์ของคุณไปยังไดรฟ์ USB ด้วยตนเอง ไฟล์เหล่านี้จะต้องได้รับการอัปเดตทุกครั้งที่คุณอัปเดตเคอร์เนลหรือสร้าง initramfs ใหม่


8B หากคุณต้องการใช้สคริปต์แทนการคัดลอกด้วยตนเองอันดับแรกให้เพิ่มพาร์ทิชันบูต USB ของคุณลงใน fstab เพื่อให้ติดตั้งโดยอัตโนมัติ วิธีที่ง่ายที่สุดที่จะทำนี้คือการ chroot (ใช้ซุ้มประตู chroot ก็ง่าย) sudo genfstab -U / > /etc/fstabลงในไดรฟ์ภายในของคุณและเรียกใช้


หมายเหตุ: คุณจะต้องติดตั้ง rsync สำหรับหน่วย systemd นี้

  1. สร้างไฟล์นี้บนไดรฟ์ภายใน: `/etc/systemd/system/boot-sync.service '

  2. วางสิ่งต่อไปนี้ลงในไฟล์ที่คุณเพิ่งสร้างขึ้น:

[Unit]

คำอธิบาย = "ซิงค์ไฟล์บูตจากไดรฟ์ภายในกับไดรฟ์ usb"

RequiresMountsFor = / mnt / usbboot

[บริการ]

พิมพ์ = Oneshot

ExecStart = / bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"

ExecStart = / bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /

[ติดตั้ง] WantedBy = multi-user.target

  1. Chroot ลงในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้: sudo systemctl enable --now boot-sync.service

  2. รีบูทและเลือกไดรฟ์ USB ที่คุณเพิ่งสร้างเป็นอุปกรณ์บู๊ตเริ่มต้น


คำสั่ง bootctl ทำอะไร ผู้ชายบอกเป็นนัย ๆ ว่าเป็นสิ่งที่เกี่ยวข้องกับ systemd และ EFI พวกเขาจำเป็นต้องใช้หรือไม่?
Xen2050

จากwiki.archlinux.org/index.php/… - "[ติดตั้ง bootctl] จะคัดลอก bootd bootd systemd-boot ไปยังพาร์ติชัน EFI: บนระบบสถาปัตยกรรม x64 ไบนารีที่เหมือนกันสองตัวคือ esp / EFI / systemd / systemd-bootx64 efi และ esp / EFI / BOOT / BOOTX64.EFI จะถูกถ่ายโอนไปยัง ESP จากนั้นจะตั้งค่า systemd-boot เป็นแอปพลิเคชัน EFI เริ่มต้น (รายการบูตเริ่มต้น) ที่โหลดโดย EFI Boot Manager " โดยทั่วไปจะคัดลอกไปที่ตอ EFI และไฟล์ที่ต้องการซึ่งจะดำเนินการโดยการนำ UEFI ไปใช้งานบนแผงวงจรหลักของคุณ มันจำเป็นสำหรับวิธีนี้
Layne Bernardo

ก่อนอื่นขอขอบคุณสำหรับการตอบสนองอย่างรวดเร็วและสละเวลาเพื่อช่วยเหลือ! ฉันไม่สามารถทำงานนี้ได้ ฉันไม่ได้รับข้อความแสดงข้อผิดพลาดใด ๆ ยกเว้นว่าฉันจำเป็นต้องชี้ให้เห็นเส้นทางในขั้นตอนที่ 5 (sudo bootctl update --path = / mnt / sdb1) เมื่อฉันบูตฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: "เกิดข้อผิดพลาดในการโหลด \ vmlinuz-linux: ไม่พบไม่สามารถเรียกใช้ Ubuntu Server 18.04 (\ vmlinuz-linux): ไม่พบ"
megahertz

โอ้ถูกต้องฉันลืมเกี่ยวกับส่วนนั้น ฉันมีการแก้ไขแฮ็กคุณสามารถแก้ไขปัญหาได้โดยการคัดลอกinitramfs-linux.imgและvmlinuz-linuxจากพาร์ทิชันบูตภายในไดรฟ์ของคุณไปยังไดรฟ์ USB คุณจะต้องคัดลอกไฟล์เหล่านี้ทุกครั้งที่คุณอัพเดตเคอร์เนล linux ฉันมีหน่วย systemd ที่จะทำเช่นนั้นในการบูตและจะปรับปรุงคำตอบ
Layne Bernardo

บทช่วยสอนได้รับการอัปเดต - รวมถึงวิธีที่ง่ายกว่ามากที่ฉันลืมซึ่งสามารถใช้งานได้หากคุณติดตั้ง systemd-boot ไว้ในไดรฟ์ภายใน ฉันขอโทษที่ฉันตั้ง USB บูตไดรฟ์ของฉันมากกว่าปีที่ผ่านมาและไม่ได้ยุ่งกับมันตั้งแต่ โปรดทราบว่าฉันได้เปลี่ยนตำแหน่งการเมานต์จาก / mnt / usb เป็น / mnt / usbboot เพราะมันสับสนน้อยกว่ากับ systemd unit ไชโย!
Layne Bernardo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.