GNU/Linux >> Belajar Linux >  >> Linux

Bagikan / boot partisi antar distro

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 dan ininrd.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.


Linux
  1. Perbedaan antara /bin/false &/sbin/nologin

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Perbedaan Antara /opt Dan /usr/local?

  1. Mengapa partisi boot ext2 100MB direkomendasikan untuk linux?

  2. Apakah partisi / boot selalu diperlukan?

  3. Perbedaan antara /bin dan /usr/bin

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Haruskah situs web berada di /var/ atau /usr/ sesuai dengan penggunaan yang disarankan?

  3. Berapa ukuran yang disarankan untuk partisi Linux /boot?