ฉันมีไดรฟ์ USB ที่ฉันใช้ในการบูตจากแล็ปท็อปของฉันซึ่งมีปัญหาต่อเนื่องกับฮาร์ดไดรฟ์ภายใน บางครั้งมันจะไม่ถูกตรวจพบใน BIOS แต่มันจะถูกตรวจพบเสมอเมื่อบู๊ตแล้ว
หากคุณติดตั้ง systemd-boot ไว้ในไดรฟ์ภายในให้ทำตามคำแนะนำแรก ถ้าไม่ข้ามไปที่วิธีที่สอง การติดตั้ง systemd-boot บนไดรฟ์ภายในเป็นวิธีที่แนะนำ
คู่มือ 1: Systemd-boot บนไดรฟ์ภายใน
บูตเครื่องเข้าสู่ซีดีสดบนคอมพิวเตอร์ ใส่ไดรฟ์ USB ที่คุณใช้เพื่อบู๊ตจากไดรฟ์ NVMe
สร้างพาร์ติชัน FAT32 บนไดรฟ์ USB ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการบูทและแฟล็ก esp วิธีที่ง่ายที่สุดในการทำเช่นนี้คือกับ gparted
เมาท์พาร์ติชัน FAT32 สำหรับขั้นตอนที่เหลือฉันจะถือว่ามันติดตั้งที่ / mnt / usbboot
เพิ่มพาร์ติชันสำหรับเริ่มระบบ USB ของคุณไปยัง fstab เพื่อให้มันถูกเมาท์โดยอัตโนมัติ วิธีที่ง่ายที่สุดที่จะทำนี้คือการ chroot (ใช้ซุ้มประตู chroot ก็ง่าย) sudo genfstab -U / > /etc/fstab
ลงในไดรฟ์ภายในของคุณและเรียกใช้
สร้างไฟล์นี้บนไดรฟ์ภายใน: `/etc/systemd/system/boot-sync.service '
หมายเหตุ: คุณจะต้องติดตั้ง rsync สำหรับหน่วย systemd นี้
วางสิ่งต่อไปนี้ลงในไฟล์ที่คุณเพิ่งสร้างขึ้น:
[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
Chroot ลงในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้: sudo systemctl enable --now boot-sync.service
รีบูทและเลือกไดรฟ์ USB ที่คุณเพิ่งสร้างเป็นอุปกรณ์บู๊ตเริ่มต้น
คู่มือ 2: Systemd-boot บนไดรฟ์ USB - ไม่แนะนำ
บูตเครื่องเข้าสู่ซีดีสดบนคอมพิวเตอร์ ใส่ไดรฟ์ USB ที่คุณใช้เพื่อบู๊ตจากไดรฟ์ NVMe
สร้างพาร์ติชัน FAT32 บนไดรฟ์ USB ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการบูทและแฟล็ก esp วิธีที่ง่ายที่สุดในการทำเช่นนี้คือกับ gparted
เมาท์พาร์ติชัน FAT32 สำหรับขั้นตอนที่เหลือฉันจะถือว่ามันติดตั้งที่ / mnt / usbboot
เจาะเข้าไปในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้ sudo bootctl --path=/mnt/usbboot install
เรียกใช้คำสั่งนี้ (ภายใน chroot บนไดรฟ์ภายในของคุณ) sudo bootctl update
(หมายเหตุ: สิ่งนี้อาจไม่จำเป็น แต่จะไม่เจ็บ)
สร้างรายการสำหรับไดรฟ์ 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 และค้นหาพาร์ติชันรูทของคุณ
- สร้าง /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 นี้
สร้างไฟล์นี้บนไดรฟ์ภายใน: `/etc/systemd/system/boot-sync.service '
วางสิ่งต่อไปนี้ลงในไฟล์ที่คุณเพิ่งสร้างขึ้น:
[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
Chroot ลงในไดรฟ์ภายในของคุณและเรียกใช้คำสั่งนี้: sudo systemctl enable --now boot-sync.service
รีบูทและเลือกไดรฟ์ USB ที่คุณเพิ่งสร้างเป็นอุปกรณ์บู๊ตเริ่มต้น