GRUB สร้างความสับสนให้กับเมล็ด / initramfs ของการติดตั้ง Ubuntu และ Arch Linux


9

ฉันมีเครื่องที่เคยใช้ดูอัลบูท 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 ของฉัน:

หน้าหลักของ GRUB

ตัวเลือกขั้นสูงสำหรับ Ubuntu:
ตัวเลือกขั้นสูงด้วงสำหรับ Ubuntu

ตัวเลือกขั้นสูงสำหรับ Arch:
GRUB ตัวเลือกขั้นสูงสำหรับ Arch


/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ไม่มีไฟล์หรือลิงก์ใด ๆ


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

เมื่อฉันติดตั้งลินุกซ์ distros ต่าง ๆ บนแล็ปท็อปของฉัน (ในขณะที่แทนที่อันที่เก่ากว่าทำให้ windows ไม่ถูกแตะต้อง) ฉันมีปัญหาที่คล้ายกันสิ่งที่ฉันทำคือลบโฟลเดอร์ตามลำดับของระบบปฏิบัติการเก่าจาก efi และทำการอัพเดตด้วง แต่ในกรณีของฉัน 1. มันเป็นระบบ UEFI 2. ฉันไม่ได้เก็บระบบปฏิบัติการลินุกซ์ไว้หลายตัว
ผู้ใช้ที่ลงทะเบียน

ในขณะที่ทำการบู๊ตคุณสามารถปรับเปลี่ยนเคอร์เนลแบบไดนามิกและเริ่มบูตใน Ubuntu ได้หรือไม่? หากคุณทำเช่นนั้นแล้วเกิดข้อผิดพลาดอะไร
SHW

Root device mounted successfully, but /sbin/init does not existsหน้าจอที่คุณโพสต์ข้อความที่มีข้อผิดพลาด: คุณตรวจสอบสิ่งนี้หรือไม่? คือinitมันหายไป? ถ้าเป็นเช่นนั้นคุณควรติดตั้งอย่างแน่นอนหากมีอยู่ความคิดใด ๆ ที่ไม่สามารถพบได้
MariusMatutiae

คำตอบ:


5

ในที่สุดฉันก็แก้ไขมันโดยการ nuking พาร์ติชัน Arch และไฟล์สำหรับบู๊ตใน/bootไดเรกทอรีUbuntu ของฉันจากวงโคจร อูบุนตูก็ใช้ได้อีกในขณะนี้รายการด้วงที่เหลือทั้งหมดกำลังทำงานอีกครั้ง

นี่คือรายการสิ่งที่ฉันทำ:

  • ลบinitramfsไฟล์ของ Arch :

    sudo rm /boot/initramfs-linux*
    
  • ลบvmlinuzไฟล์ของ Arch :

    sudo rm vmlinuz-linux
    
  • ฟอร์แมตพาร์ติชัน Arch ( /dev/sda8) โดยใช้ GParted

  • อัพเดทการกำหนดค่าของ GRUB:

    sudo update-grub
    
  • รีบูตและสนุก!


ผมคิดว่าบรรทัดแรกควรมีรหัสinitramfs-linuxไม่ได้...ranfs...
อันวาร์

1
@ อันวาแน่นอนขอบคุณที่ให้ความสนใจ ฉันพิมพ์ผิด
ผู้บัญชาการไบต์

1

แก้ไข grub.cfg ด้วยมือ (ไม่แนะนำ)

มองไปที่คุณ grub.cfg

รายการอูบุนตูนั้นใช้งานไม่ได้ (และหนึ่งในนั้นต่อไปนี้ด้วย)

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-eee18451-b607-4875-8a88-c9cb6c6544c8' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  6dbb8633-dadd-4b5e-8d85-b0895fde9dfb
    else
      search --no-floppy --fs-uuid --set=root 6dbb8633-dadd-4b5e-8d85-b0895fde9dfb
    fi
    linux   /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro  
    initrd  /initramfs-linux.img
}

สองบรรทัดสุดท้ายคือคำสั่งที่ออกโดย grub เพื่อโหลดเคอร์เนลและ initrd และกำลังมองหา ARCH kernel และ initiramfs นอกจากนี้ยังมองหาพวกเขาภายใต้/ในพาร์ติชันที่ระบุuuid=eee18451-b607-4875-8a88-c9cb6c6544c8ซึ่งอาจหรือไม่โฮสต์ไฟล์ Ubuntu ที่ตั้งใจ

คุณสามารถแก้ไขได้โดย:

sudo blkid

เพื่อรับ uuid ของพาร์ติชันรูต Ubuntu

จากนั้นแทนที่สองบรรทัดสุดท้ายด้วย simlink เป็นเคอร์เนลล่าสุดและรูปภาพเริ่มต้น (เนื่องจากนี่เป็นวิธีที่อูบุนตูคาดหวังให้เป็น)

linux   /vmlinuz root=UUID=<correct-uuid-ubuntu-partition> ro  
initrd  /initrd.img

หากไม่สามารถแก้ไขได้ทันทีอาจต้องมีการแก้ไขอื่น ๆ คุณสามารถค้นหาได้โดย "คัดลอก" หนึ่งในรายการที่ผ่านการทดสอบและใช้งานได้และฉันขอแนะนำให้คุณใช้วานิลลามากที่สุด (เช่นไม่มีการพุ่งพรวดหรือพารามิเตอร์เคอร์เนลอื่น ๆ เช่น Nomodeset ที่ถูกส่งผ่าน)

นี่ควรเป็นตัวเลือกที่ดี:

menuentry 'Ubuntu, with Linux 4.4.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-eee18451-b607-4875-8a88-c9cb6c6544c8'

รายการ Arch แตกหักในทำนองเดียวกันซึ่งอาจเป็นการค้นหา Arch initramfs และเคอร์เนลภายใต้พาร์ติชันรูทของ Ubuntu ตำแหน่งเริ่มต้นของที่อยู่ภายใต้ / boot ปรับสองบรรทัดสุดท้ายของรายการ Arch โดยแก้ไขตำแหน่งและตรวจสอบว่าพาร์ติชันรูท uuid เป็นอันที่มีรูท Arch

คำเตือน (หลายคำ):

โดยทั่วไปแล้วจะไม่แนะนำให้ผู้ใช้ Ubuntu ยุ่งกับgrub.cfgมือ ทำสำเนาของมันอย่างแน่นอนและระมัดระวังในการแก้ไข เตรียมพร้อมสำหรับโอกาสที่ระบบของคุณจะไม่สามารถบูตได้ (แต่คุณจะสามารถกู้คืนได้โดยใช้ขั้นตอนการบู๊ตที่ระบุไว้ในคำตอบเดิมของฉัน)

นอกจากนี้ในขณะนี้อาจแก้ไขปัญหาของคุณในเวลานี้ก็อาจกลับมากัดคุณในครั้งต่อไปที่คุณต้อง repopulate เมนูด้วงของคุณ ด้วยเหตุผลบางอย่างการตรวจสอบระบบปฏิบัติการของด้วงภายใต้ Ubuntu ได้รับสับสนโดยการปรากฏตัวของเคอร์เนล Arch ภายใต้ / boot ฉันเดาว่ายูทิลิตี้เช่นการซ่อมแซมการบู๊ตควรจะสามารถทำให้ distros ของคุณสามารถบูตได้อย่างถูกต้อง แต่ถ้าฉันจำได้อย่างถูกต้องมันไม่ได้ผลสำหรับคุณ

หนึ่งการแก้ไขแบบถาวรอาจประกอบด้วยการติดตั้ง arch kernel และรูปภาพในไดเรกทอรีอื่นนอกเหนือจากการเริ่มต้น / boot นี่เป็นเที่ยวยุ่งยิ่งและคุณควรปรึกษารายการด้วงของ Arch wiki เกี่ยวกับวิธีการทำอย่างถูกต้อง

คำตอบเก่า ๆ (แนะนำถ้าคุณวางแผนที่จะเปลี่ยนมาใช้ Arch ในระยะยาว) นี่คือสิ่งที่ฉันจะทำและกลับมาได้ไม่กี่เดือน

ไปที่หน้าarch wiki grubและอ่านส่วนที่เกี่ยวข้องสำหรับตารางพาร์ติชันของคุณ (คุณน่าจะเป็น UEFI ดังนั้นอ่านเกี่ยวกับ ESP และอื่น ๆ )

การบูตเข้าสู่ Arch ด้วยตนเอง

นี่เป็นประสบการณ์เชิงสร้างสรรค์ที่ฉันขอแนะนำให้ลอง สมมติว่าเคอร์เนล Arch Linux ของคุณอยู่ที่ใดที่หนึ่งบนดิสก์ของคุณกดcที่ grub prompt และพิมพ์ ls เพื่อดูรายการอุปกรณ์และพาร์ติชันที่มีลักษณะ(hd0,msdos1),(hd1,gpt1),...ดังนี้ คุณสามารถ ls แต่ละคนเพื่อดูเนื้อหา

คุณต้องค้นหาสามสิ่ง:

  • /พาร์ทิชันรูทของคุณอยู่ที่ไหน
  • เคอร์เนล Arch ของคุณอยู่ที่ไหน vmlinuz
  • ประตูของคุณอยู่ที่ไหน intiramfs-linux.img

เมื่อครอบครองสามสิ่งนี้แล้วคุณจะเรียกใช้สามคำสั่งในด้วง> ให้บางสิ่งที่คล้ายกับสิ่งนี้

grub> set root=(hd0,1)
grub> linux /vmlinuz root=/dev/sda1
grub> initrd /intiramfs-linux.img
grub> boot

ขอให้สังเกตว่าด้วงสามารถหาเช่น

grub> find /sbin/init

(ด้วงตัวเดียวไม่สามารถหาแบบอัตโนมัติและให้เคอร์เนลตกใจ))

ทั้งหมดนี้ฉันได้เรียนรู้ที่นี่แหล่งที่ฉันขอแนะนำ หากคุณสามารถจัดการข้ามไปแก้ไขด้วง! มิฉะนั้น...

Boot Arch จากรหัสสด! รับสภาพแวดล้อม Arch แบบสดและติดตามวิกิการติดตั้งchrootลงบน Arch ในแบบเดียวกับที่คุณทำครั้งแรก

แก้ไขด้วง

จากภายใน Arch ให้ติดตั้งแพ็คเกจด้วงที่เกี่ยวข้องและโดยเฉพาะอย่างยิ่งos-proberเพื่ออนุญาตให้grub-installตรวจจับระบบอื่นของคุณ ปฏิบัติตามคำแนะนำในการติดตั้งอย่างระมัดระวังและคุณควรจะสามารถบูต (อย่างน้อย) บูตทั้ง arch และ ubuntu จากเมนูด้วง การติดตั้งคำสั่งจะสิ้นสุดในลักษณะเช่นนี้

คำเตือน ** ** อย่าใช้คำสั่งเหล่านี้พวกเขาเป็นตัวอย่างคุณต้องทำงานออกคำสั่งที่เหมาะสมกับระบบของคุณ

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck
# grub-mkconfig -o /boot/grub/grub.cfg

** ถ้าทั้งหมดล้มเหลว **

น่าเสียดายที่นี่มีความเฉพาะเจาะจงเนื่องจากได้รับข้อมูลจำนวน จำกัด และ SE ไม่ใช่ฟอรัมสำหรับปัญหาดังกล่าวดังนั้นคำตอบ "ทั่วไป" ของฉันที่อ้างถึงทรัพยากรที่มีประโยชน์

หากคุณไม่สามารถเข้าใจได้อาจวางไว้ที่ฟอรัม Arch และให้คุณได้ลองอย่างดีที่สุดและอ่านเอกสารก่อนมือคุณอาจพบความช่วยเหลือ

การทำทั้งหมดนี้ผ่าน Arch เป็นประสบการณ์การเรียนรู้ขั้นพื้นฐานสำหรับฉัน


1
ขอบคุณสำหรับคำตอบของคุณ ครั้งแรกมันเป็นระบบ BIOS พร้อมดิสก์ที่แบ่งพาร์ติชัน MBR สองฉันต้องการใช้แพคเกจด้วงและการตั้งค่าจาก Ubuntu การติดตั้ง GRUB จาก Arch ไม่ใช่สิ่งที่ฉันวางแผน ฉันยังสงสัยว่าสิ่งนี้จะทำการเปลี่ยนแปลงใด ๆ ... และฉันสามารถบูตไปที่ Ubuntu ผ่านรายการ GRUB ที่ไหนสักแห่งในตัวเลือกขั้นสูง ปัญหาคือด้วงนั้นดูเหมือนว่าจะไม่สามารถระบุเคอร์เนลหรือ ramdisk เริ่มต้นหรืออะไรก็ตามที่เป็นของระบบที่พาร์ทิชันใด
ผู้บัญชาการ Byte

เป็นหลักขั้นตอนเดียวกันนำไปใช้ grub-install และ grub-mkconfig (ซึ่งทำให้คุณเป็นไฟล์ grub.cfg ใหม่) เป็นคำสั่ง grub ซึ่งมีอยู่ในอูบุนตูด้วยเช่นกัน ตรวจสอบว่า os-prober มีให้ใช้งานหรือคล้ายกันหรือไม่ (สิ่งนี้ทำให้ mkconfig ค้นหาระบบไฟล์อื่น ๆ ) วิธีนี้แก้ไขได้โดยสมมติว่าภาพเคอร์เนลอยู่ในตำแหน่งที่ถูกต้องอ่านโพสต์ของคุณอีกครั้งฉันไม่แน่ใจว่าเป็นเช่นนั้น ตรวจสอบพาร์ติชั่น / boot ของคุณเพื่อให้มั่นใจว่าเคอร์เนลและ. img ทั้งหมดอยู่ที่นั่น คุณอาจเขียนทับ linux initrd.img ด้วย initramfs ของ arch เข้าชมฟอรัม Ubuntu หรือ Askubuntu
สาม Diag

ตามที่ฉันเขียนฉันวิ่ง grub-mkconfig ไปแล้วไม่มีประโยชน์ แต่ฉันจะตรวจสอบรูปภาพที่มีอยู่ใน / boot เมื่อฉันกลับบ้าน และมีสคริปต์ os-prober บางตัว
ผู้บัญชาการไบต์

ขออภัยที่พลาด จากนั้นคุณอาจเขียนทับอูบุนตูเคอร์เนลและเริ่มต้นด้วย arch คุณสามารถป๊อปอัพพวกเขาได้โดยรันลำดับการอัปเกรด / อัปเดตของคุณจากเคอร์เนลทางเลือก ubuntu (ฉันคิดว่า)
สาม Diag

เคอร์เนลของ Ubuntu ควรใช้ได้เพราะฉันสามารถบู๊ตทั้งหมดได้จากเมนู "ตัวเลือกขั้นสูงสำหรับ Ubuntu" หากมีสิ่งใดผิดปกติอาจเป็นเพียง symlink ของเคอร์เนลเริ่มต้น ... ไปตรวจสอบว่าเย็นนี้
ผู้บัญชาการ Byte

0

โซลูชันของฉันง่ายขึ้น ฉันใช้เทอร์มินัลและทำสิ่งต่อไปนี้:

sudo rm /boot/grub/grub.cfg
sudo update-grub

หากคุณมีปัญหาเพิ่มเติมเพียงใช้boot-repairซึ่งเป็นการดาวน์โหลดฟรีซึ่งมีขนาดเล็กพอที่จะเขียนลงในดิสก์ซีดี


update-grubสหกรณ์ได้ทำงานแล้ว การซ่อมแซมการบูตไม่น่าจะช่วยได้มาก
terdon

ด้วงและกระบวนการซ่อมแซมหรืออัปเดตการบูตบางอย่างคิดว่าสิ่งที่อยู่ใน /boot/grub/grub.cfg เป็น ctrrent และถูกต้อง แต่ทำการเปลี่ยนแปลงเช่นเดียวกับการฟอร์แมตพาร์ติชันคุณจะได้รับ UUID ใหม่ซึ่งจะนำคุณเข้าสู่ด้วงช่วยเหลือ> เพื่อจัดการกับสิ่งนี้เพียงทำสิ่งนี้: sudo rm /boot/grub/grub.cfg; sudo update-grub รายการทั้งหมดใน grub.cfg จะเป็นรายการใหม่และเป็นปัจจุบัน
BAD-Boop

ใช่ แต่อีกครั้ง OP ได้ดำเนินการไปแล้วและไม่ได้ช่วยอะไร ฉันรู้ว่าคำถามมีขนาดใหญ่และพลาดง่าย แต่sudo grub-mkconfig -o /boot/grub/grub.cfgอยู่ตรงนั้น update-grubเป็นสคริปต์เชลล์ที่ใช้งานgrub-mkconfig -o /boot/grub/grub.cfg ง่าย cat /usr/sbin/update-grubคุณสามารถดูนี้ด้วย
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.