Saya memiliki dua hard drive, dengan dua Grub yang sesuai. Salah satunya dari Arch Linux, dan yang lainnya dari Ubuntu. Menggunakan grub Arch, saya bisa boot ke salah satu distribusi. Namun, menggunakan grub Ubuntu, saya dapat melihat Arch dan Ubuntu, tetapi tidak dapat boot ke Arch. Saya mendapatkan kesalahan:
Kernel offset
End kernel panic. Not syncing: VFS.
Unable to mount root fs on unknown-block.
Saya membandingkan grub.cfg
untuk kedua distribusi. Di grub Ubuntu, saya dapat melihat entri untuk Arch, dengan baris berikut.
initrd /boot/intel-ucode.img
Saya mengubahnya untuk mengikuti grub.cfg
Arch's :
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
Sekarang saya bisa boot ke Arch dari grub Ubuntu. Tampaknya Ubuntu tidak menambahkan opsi yang diperlukan ini secara default. Bagaimana saya bisa membuat Ubuntu secara otomatis membuat entri yang benar?
Sunting
Saya memperbarui grub Arch dengan grub-mkconfig -o /boot/grub/grub.cfg
. Di Ubuntu, saya sudah mencoba keduanya update-grub
dan perintah mentah di atas (yang merupakan alias).
Edit 2
Baris /etc/default/grub
yang tidak dikomentari
GRUB_DEFAULT="saved"
GRUB_SAVEDEFAULT="true"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
Jawaban yang Diterima:
Sebenarnya, ada dua file yang perlu dimodifikasi untuk mengatasi masalah ini. Saya telah menguji ini di Lubuntu 16.04.1 dan Manjaro Linux.
Di Ubuntu:
1) File /usr/lib/linux-boot-probes/mounted/40grub2 ada fungsi parse_grub_menu yang tidak menangani semua parameter initrd. Anda perlu mengubah ‘huruf “$1” di … initrd) ‘:
a) hapus tugas
initrd="$(echo "$2" ...)"
b) tambahkan dua baris di tempat yang dihapus:
shift 1
initrd="$(echo "[email protected]" | sed 's/(.*)//')"
2) File /etc/grub.d/30_os-prober dalam loop for, perbaiki penetapan LINITRD:
for LINUX in ${LINUXPROBED}; do
...
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
Perbaikan pertama memperhitungkan semua info initrd yang tersedia untuk Manjaro. Perbaikan kedua membersihkan baris initrd yang dihasilkan dengan mengubah beberapa karakter '^' menjadi spasi.