GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Cara Boot Ke Arch Linux Menggunakan Initramfs, Di Grub Ubuntu?

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.


Ubuntu
  1. Ubuntu – Bagaimana Mencegah Grub Menggunakan/memulai Ui Grafis?

  2. Bagaimana Cara Dual Boot Ubuntu Dan Linux Mint?

  3. Cara mem-boot Ubuntu ke mode pemulihan

  1. Cara Menginstal Arch Linux

  2. Bagaimana Cara Pxe Network Boot Ubuntu Server 14.04 Menggunakan Nfs?

  3. Cara boot ke mode konsol (teks) dengan Debian / Ubuntu, Fedora, Arch Linux / Manjaro dan banyak lagi

  1. Cara Menggunakan Grub Rescue untuk Memperbaiki Kegagalan Boot Linux

  2. Cara dual boot Windows XP dan Ubuntu Linux

  3. Cara memperbaiki Grub 2 Anda di Ubuntu