ฉันมีเครื่องที่เคยใช้ดูอัลบูท Ubuntu (16.04 ปัจจุบัน) และ Windows 7 โดยมี GRUB ของ Ubuntu เป็นบูตโหลดเดอร์
ตอนนี้ฉันเพิ่งเพิ่ม Arch Linux เป็นระบบปฏิบัติการตัวที่สามตามคำแนะนำการติดตั้งอย่างเป็นทางการ ฉันไม่ได้ติดตั้ง GRUB จาก Arch เพราะฉันต้องการใช้ตัวควบคุมโดย Ubuntu คำแนะนำมีคำสั่งmkinitcpio -p linuxที่อาจสร้างไฟล์บูตบางอย่างที่ฉันวิ่งตามที่อธิบายไว้
ตอนนี้เมื่อฉันพยายามบูต Ubuntu จาก GRUB ผ่านรายการเริ่มต้นฉันได้รับข้อผิดพลาดอันไม่พึงประสงค์ (ขออภัยสำหรับภาพหน้าจอ):
ในฐานะที่เป็นเอาท์พุทของการuname -aแสดงมันพยายามที่จะบูต Arch kernel แต่/dev/sda6เป็นพาร์ทิชันรูท Ubuntu
ฉันต้องไปที่Advanced options for Ubuntuและเลือกหนึ่งในUbuntu, with Linux 4.4.0-*รายการเพื่อให้สามารถโหลด Ubuntu ฉันไม่พบรายการที่จะโหลด Arch อย่างถูกต้อง
การเรียกใช้sudo update-grubจาก Ubuntu ( " update-grubเป็น stub สำหรับการเรียกใช้grub-mkconfig -o /boot/grub/grub.cfgเพื่อสร้างไฟล์กำหนดค่า grub2" ) ไม่เปลี่ยนแปลงอะไรเลย grub-customizerเครื่องมือก็ยังไร้ประโยชน์ในการแก้ไขนี้เพื่อให้ห่างไกล
อะไรเป็นสาเหตุของความสับสนของ GRUB และฉันจะแก้ไขได้อย่างไรเพื่อให้แต่ละรุ่น Linux บูตด้วยเคอร์เนลที่ถูกต้องและจากพาร์ติชันที่ถูกต้อง
ดูเหมือนว่าฉันติดตั้ง Arch ด้วย / ติดตั้งอูบุนตูอย่างงงงวยดังนั้นจึงอาจวางไฟล์บูตไว้ในนั้น
ฉันสบายดีที่มีการลบข้อมูลที่เกี่ยวข้องกับ Arch ทั้งหมดเพื่อให้ boot loader ของ Ubuntu ตรงอีกครั้งและทำการติดตั้ง Arch ใหม่ทั้งหมดในภายหลัง
อัปเดต (ขอบคุณ @terdon สำหรับการสนับสนุนในแชทถาม Ubuntu):
/boot/grub/grub.cfgนี่คือของฉัน
รายการ Linux ทั้งหมดดูเหมือนจะชี้ไปที่พาร์ติชั่น / dev / sda6 ของฉันซึ่งเป็นรูทของ Ubuntu:
$ grep ' linux /' /boot/grub/grub.cfg
    linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
        linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
        linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
        linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
        linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
        linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
        linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
        linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
        linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
        linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
        linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
ฉันพยายามอัพเดต GRUB config จาก Ubuntu:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
dpkg: warning: version 'linux' has bad syntax: version number does not start with a digit
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
Found linux image: /boot/vmlinuz-4.2.0-35-generic
Found initrd image: /boot/initrd.img-4.2.0-35-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Arch on /dev/sda8
done
ฉันพยายามติดตั้ง GRUB ไปยัง MBR ใหม่อีกครั้งจาก Ubuntu:
$ sudo grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
$ sudo grub-install --recheck /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
เหล่านี้คือแพ็คเกจของเคอร์เนล Ubuntu ที่ติดตั้งโดยวิธีฉันพยายามdpkg-reconfigureทั้งหมด แต่ไม่มีผลต่อปัญหา:
$ dpkg -l linux-image* | grep ^ii
ii  linux-image-4.2.0-35-generic       4.2.0-35.40  amd64        Linux kernel image for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-21-generic       4.4.0-21.37  amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.2.0-35-generic 4.2.0-35.40  amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-21-generic 4.4.0-21.37  amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ฉันพยายามสร้าง Ubuntu initramfs อีกครั้ง:
$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-4.4.0-21-generic
update-initramfs: Generating /boot/initrd.img-4.2.0-35-generic
เค้าโครงพาร์ติชันของฉัน:
ตรวจสอบจากระบบ Ubuntu ฉลากควรอธิบายตัวเอง
$ lsblk -f /dev/sda
NAME    FSTYPE LABEL       UUID                                 MOUNTPOINT
sda                                                             
├─sda1  ntfs   win7-boot   90DCF3A5DCF3842E                     /win/boot
├─sda2  ntfs   windows7    482C7A572C7A3FCC                     /win/c
├─sda3  ext4   grub-boot   6dbb8633-dadd-4b5e-8d85-b0895fde9dfb /boot
├─sda5  ext4   images      81dc42c4-a161-4ccd-b704-6e5c09298943 /images
├─sda6  ext4   ubuntu-1604 eee18451-b607-4875-8a88-c9cb6c6544c8 /
├─sda7  ext4   ubuntu-home 485b3ef1-7216-4053-b25c-f656d529e8e6 /home
├─sda8  ext4   arch-root   8d281a0c-969c-44cf-ba6a-1d3c7b4be7ec 
├─sda9  ext4   arch-home   32522902-a53d-44c8-90f2-6bbf14c40f1f 
└─sda10 swap   linux-swap  8b05bd9b-bc42-46f6-8c18-50711a3c48b9 [SWAP]
โครงสร้างเมนู GRUB ของฉัน:
/bootไดเรกทอรีของฉัน:
$ ls -la /boot
total 118480
drwxr-xr-x  4 root root     4096 Apr 24 20:50 .
drwxr-xr-x 28 root root     4096 Apr 24 19:44 ..
-rw-r--r--  1 root root  1313029 Mär 16 01:45 abi-4.2.0-35-generic
-rw-r--r--  1 root root  1239577 Apr 19 00:21 abi-4.4.0-21-generic
-rw-r--r--  1 root root   184888 Mär 16 01:45 config-4.2.0-35-generic
-rw-r--r--  1 root root   189412 Apr 19 00:21 config-4.4.0-21-generic
drwxr-xr-x  6 root root     4096 Apr 26 19:58 grub
-rw-r--r--  1 root root 18598360 Apr 24 20:59 initramfs-linux-fallback.img
-rw-r--r--  1 root root  3516429 Apr 24 20:59 initramfs-linux.img
-rw-r--r--  1 root root 33642388 Apr 24 18:31 initrd.img-4.2.0-35-generic
-rw-r--r--  1 root root 36143341 Apr 24 19:51 initrd.img-4.4.0-21-generic
drwx------  2 root root    16384 Okt 28 17:43 lost+found
-rw-r--r--  1 root root   182704 Jan 28 13:44 memtest86+.bin
-rw-r--r--  1 root root   184380 Jan 28 13:44 memtest86+.elf
-rw-r--r--  1 root root   184840 Jan 28 13:44 memtest86+_multiboot.bin
-rw-------  1 root root  3745312 Mär 16 01:45 System.map-4.2.0-35-generic
-rw-------  1 root root  3853719 Apr 19 00:21 System.map-4.4.0-21-generic
-rw-------  1 root root  6829104 Mär 16 01:45 vmlinuz-4.2.0-35-generic
-rw-------  1 root root  7013968 Apr 19 00:21 vmlinuz-4.4.0-21-generic
-rw-r--r--  1 root root  4435552 Apr 14 19:20 vmlinuz-linux
เคอร์เนล 4.4.0 และ 4.2.0 ควรเป็น Ubuntu ส่วน Arch ควรมีเคอร์เนล 4.5.0 แต่ฉันจะรู้ได้อย่างไรว่าไฟล์ใดที่ไม่มีเคอร์เนลรุ่นในชื่อไฟล์นั้นเป็นของอะไร
ไดเรกทอรีราก Ubuntu ของฉัน (ยกเว้นไดเรกทอรี):
$ ls -la / | grep ^[^d]
total 124
lrwxrwxrwx   1 root      root         32 Apr 24 19:44 initrd.img -> boot/initrd.img-4.4.0-21-generic
lrwxrwxrwx   1 root      root         32 Apr  5 17:45 initrd.img.old -> boot/initrd.img-4.2.0-35-generic
lrwxrwxrwx   1 root      root         29 Apr 24 19:44 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
lrwxrwxrwx   1 root      root         29 Apr  5 17:45 vmlinuz.old -> boot/vmlinuz-4.2.0-35-generic
ไดเรกทอรีรากของ My Archไม่มีไฟล์หรือลิงก์ใด ๆ
Root device mounted successfully, but /sbin/init does not existsหน้าจอที่คุณโพสต์ข้อความที่มีข้อผิดพลาด: คุณตรวจสอบสิ่งนี้หรือไม่? คือinitมันหายไป? ถ้าเป็นเช่นนั้นคุณควรติดตั้งอย่างแน่นอนหากมีอยู่ความคิดใด ๆ ที่ไม่สามารถพบได้
                



os-proberคุณจำเป็นต้องแก้ไขด้วยตนเองด้วงถ้าจำเป็นบูตเข้าสู่โค้งลินุกซ์แล้วสร้างด้วงจากนั้นคุณอาจต้องติดตั้ง จากนั้นเรียกใช้เหล่านี้sudo mkinitcpio -p linuxแล้วsudo grub-mkconfig -o /boot/grub/grub.cfgสุดท้ายsudo grub-install /dev/sda