Bisa, tapi itu bukan ide bagus.
Di GRUB, yang akan Anda lakukan adalah menentukan kernel dan initrd
yang berbeda file untuk setiap distribusi yang diinstal pada sistem.
Namun, konfigurasi boot untuk satu distro mungkin bertentangan dengan konfigurasi untuk distro lainnya, tergantung pada bagaimana masing-masing distro mengatur konfigurasi bootnya dan menamai file-filenya di /boot
. Ini dapat menyebabkan konfigurasi yang kacau dan berpotensi membuat satu atau lebih distro tidak dapat di-boot. Perhatian khusus harus diberikan saat memperbarui kernel atau mengubah pengaturan boot di salah satu distro. Namun, jika tidak ada konflik, Anda seharusnya dapat mem-boot kedua sistem operasi tanpa masalah.
Saya menyadari ini agak terlambat ke pesta, tetapi saya hanya mengambil ini untuk menyimpan tiga instalasi bersamaan dan satu /boot
partisi:
- arch linux
- ubuntu 14.04
- ubuntu 16.04
Saya telah menggunakan arch selama bertahun-tahun, tetapi cukup tidak terbiasa dengan ubuntu dan tidak yakin bagaimana menghentikannya menginstal bootloader jadi saya biarkan saja. Untuk arch, saya menggunakan syslinux
, bukan grub
jadi saya jauh lebih akrab dengannya. Meskipun ini agak di awal percobaan saya, inilah prosedur saya:
- mengidentifikasi file yang berpotensi bentrok. Setelah mencatat konvensi penamaan ubuntu vs. arch, ini menjadi
vmlinuz
14.04 dan 16.04 danininrd.img
, yang diberi nama sama (mungkin selain nomor versi jika diperbarui pada waktu yang berbeda). Sejauh yang saya tahu, keduanya kompatibel, tetapi saya memilih untuk memperlakukannya sebagai tidak kompatibel. - siapkan
syslinux
seperti biasa, membuat entri untuk setiap distro (ditampilkan di bawah) - setelah memperbarui salah satu distro yang berpotensi bentrok, terapkan strategi penamaan untuk menghindari masalah
- punya rencana cadangan
Jika ubuntu memperbarui kernel, saya mendapatkan dua file kunci:
/boot/initrd.img-x.x.x-xx-generic
/boot/vmlinuz-x.x.x-xx-generic
Untuk masing-masing di atas, saya cukup menambahkan _distro
sampai akhir, serta mengganti varian bernama statis agar tidak mengubah syslinux.cfg
saya setiap pembaruan (selengkapnya ditampilkan di bawah). Prosesnya akan terlihat seperti ini, menggunakan 14.04/Trusty sebagai contoh dan hanya menampilkan file yang diinginkan.
$ cd /boot
$ sudo mv ./initrd.img-4.4.0-62-generic ./initrd.img-4.4.0-62-generic_trusty
$ sudo cp ./initrd.img-4.4.0-62-generic_trusty ./initrd-trusty.img
$ sudo mv ./vmlinuz-4.4.0-62-generic ./vmlinuz-4.4.0-62-generic_trusty
$ sudo cp ./vmlinuz-4.4.0-62-generic_trusty vmlinuz-trusty
Karena konvensi penamaan arch tidak pernah konflik, ini berarti saya berakhir dengan 2 cadangan/bernama akurat initrd
dan vmlinuz
file beserta dua file yang dapat saya gunakan agar syslinux.cfg
saya tidak berubah sepanjang waktu. File kuncinya seperti itu (dengan komentar ditambahkan):
$ ls /boot/
initramfs-linux.img ## arch main initramfs
initramfs-linux-fallback.img ## arch fallback initramfs
initrd.img-4.4.0-62-generic_trusty ## named recent 14.04 initrd
initrd.img-4.4.0-62-generic_xenial ## same for xenial (16.04)
initrd-trusty.img ## statically named initrd
initrd-xenial.img
vmlinuz-4.4.0-62-generic_trusty ## named vmlinuz
vmlinuz-4.4.0-62-generic_xenial
vmlinuz-linux ## arch's vmlinuz
vmlinuz-trusty ## statically named vmlinuz
vmlinuz-xenial
Untuk booting, ini syslinux
saya entri:
LABEL arch
MENU LABEL arch
LINUX ../vmlinuz-linux
APPEND luks-options-here rootflags=compress=lzo,discard,ssd,subvol=arch rw
INITRD ../intel-ucode.img,../initramfs-linux.img
LABEL xenial
MENU LABEL xenial
LINUX ../vmlinuz-xenial
APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=xenial quiet splash $vt_handoff
INITRD ../initrd-xenial.img
LABEL trusty
MENU LABEL trusty
LINUX ../vmlinuz-trusty
APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=trusty quiet $vt_handoff
INITRD ../initrd-trusty.img
Sejauh ini saya telah meninggalkan grub
di ubuntu dan mengeluh di setiap pembaruan tetapi tidak ada yang salah. Rencana cadangan saya adalah menyalin mbr.bin
ke /boot/
(biasanya berada di /usr/lib/syslinux...
di lengkungan) sehingga jika grub
memutuskan untuk menimpa bootloader saya, saya setidaknya bisa dd
syslinux
bootloader kembali. Saya 95%+ yakin bahwa penginstalan arch saya tidak akan pernah macet (setidaknya untuk boot), jadi saya hampir selalu dapat mem-boot ke sana dan memperbaiki ubuntu jika saya menyalin/menamai sesuatu yang salah. Kemungkinan saya akan menyimpan satu versi sebelumnya dari setiap initrd/vmlinuz
sekitar sehingga saya dapat mengubah mana yang dimuat saat boot jika terjadi kesalahan dengan initramfs
proses.
Mudah-mudahan itu relatif jelas apa yang terjadi. Saya mungkin dapat menggunakan tautan, semacam skrip pasca-pembaruan, dll. untuk mengotomatisasi tetapi belum sampai ke sana.
Jawaban yang diterima mengungkapkan bahwa ada yang salah, tetapi karena saya mencari-cari contoh orang lain yang melakukan ini, dan hanya menemukan jawaban seperti ini (pada dasarnya, "mungkin, tetapi jangan"), saya pikir saya akan menambahkan contoh nyata dari bagaimana seseorang bisa atur sesuatu seperti ini.
Secara pribadi, saya cukup bersemangat tentang hal itu. Saya memiliki satu partisi boot dan seperti yang mungkin Anda perhatikan, tiga distro berdampingan dalam satu btrfs
partisi. Tidak perlu melakukan pra-alokasi ukuran, tidak perlu khawatir tentang tidak menyukai satu pengaturan dan membuangnya (tersisa dengan partisi yang tidak terpakai beredar) dan tidak perlu banyak volume logis hanya untuk mem-boot partisi linux ketika saya sudah memiliki sebuah bootloader!
Semoga ini bisa membantu seseorang.