Bagaimana cara saya menginstal dua instalasi Ubuntu independen pada satu hard drive dengan UEFI?

8

Demi alasan keamanan, saya ingin menginstal sistem operasi sekunder yang sepenuhnya independen pada komputer hard drive tunggal menggunakan UEFI. Kedua instalasi harus dapat menggunakan partisi LUKS crypto yang berbeda sebagai perangkat root (LVM di atas crypto) dan harus dapat menggunakan kernel mereka sendiri.

Memiliki dual boot dengan dua sistem operasi yang berbeda bukanlah masalah besar. Ubuntu dan Fedora tidak akan mengganggu dan dapat berbagi partisi sistem EFI, tetapi dua instalasi Ubuntu akan saling bertarung karena mereka ingin keduanya menginstal instance Grub mereka di lokasi EFI yang sama.

  • Apakah ada cara untuk mengubah Ubuntu untuk menginstal Grub di lokasi yang berbeda daripada /boot/efi/EFI/ubuntusaat instalasi? Saya membutuhkan cara yang gigih, sehingga pembaruan paket dan pembaruan kernel / grub tetap terpasang di jalur itu. Sama seperti bagaimana menginstal Fedora's Grub /boot/efi/EFI/fedora. Saya tidak dapat menemukan opsi konfigurasi di Grub. Jika saya bisa, menu boot Dell UEFI saya akan memungkinkan saya memilih OS mana yang akan dimuat. Mungkin saya melewatkan lem antara efibootmgr dan grub-efi di sini.

  • Atau, apakah mungkin untuk menggunakan satu instalasi Grub dari salah satu dari dua instalasi Ubuntu dan membuatnya secara otomatis mendeteksi pengaturan boot yang tepat? Maksud saya, saya tahu os-proberakan menemukan /bootpartisi lain dengan kernel, tetapi bagaimana ia bisa mengetahui parameter boot yang tepat untuk OS itu (mis. Volume LVM di dalam volume crypto yang dikunci sebagai filesystem root)? Saya dapat memahaminya dapat dengan instalasi partisi-tunggal yang tidak terenkripsi, tetapi tidak dapat mencocokkan /bootdengan sistem file root yang sesuai, bukan? Dan sama sekali tidak mungkin jika dienkripsi. Sehingga akan membutuhkan banyak penyesuaian manual dari file konfigurasi grub. Saya juga tidak suka opsi konfigurasi bootloader bersama tunggal ini, membuat dua sistem operasi kurang terisolasi sampai batas tertentu.

Ngomong-ngomong, saya baik-baik saja dengan instalasi ahli server berbasis teks. Juga beberapa konfigurasi khusus selama saya tidak harus mengulangi langkah-langkah untuk setiap pembaruan kernel / Grub.

gertvdijk
sumber

Jawaban:

6

Saya punya dua saran ...

Opsi # 1: Pisahkan ESP

Di bawah EFI, boot loader berada di "the" EFI System Partition (ESP). Saya memasukkan kata "the" dalam tanda kutip karena tidak ada aturan yang mengatakan Anda terbatas pada satu ESP. Jika Anda membuat dua ESP pada hard disk Anda, Anda dapat menggunakan salah satunya untuk instalasi pertama dan ESP kedua untuk instalasi kedua. Ini seharusnya bekerja dengan sangat mulus, walaupun Anda harus membuat partisi Anda secara manual (menggunakan opsi "Sesuatu yang Lain" selama instalasi), setidaknya untuk instalasi Ubuntu kedua Anda.

Satu masalah dengan pendekatan ini adalah bahwa, walaupun spesifikasi EFI secara eksplisit menyatakan bahwa Anda dapat membuat ESP sebanyak yang Anda suka, beberapa perangkat lunak mungkin menjadi bingung karenanya. Salah satu contoh yang menonjol dari ini adalah installer Windows, setidaknya melalui Windows 7 (Saya tidak tahu tentang Windows 8 atau lebih baru); ketika penginstal Windows 7 melihat disk dengan dua ESP, ia terkelupas dan melakukan hal-hal aneh. IIRC, itu tidak menyelesaikan instalasi sendiri dengan benar. Bisa dibayangkan bahwa alat perbaikan Windows akan mengalami masalah yang sama. Jika Anda tidak mem-boot Windows pada sistem ini, ini seharusnya tidak menjadi masalah besar. Jika Anda adalahboot dengan Windows, Anda seharusnya hanya menyadari masalah ini, karena Anda dapat dengan mudah mengatasinya dengan mengubah sementara kode jenis ESP non-Windows jika mengalami masalah. Perhatikan bahwa Windows akan boot dengan baik pada disk dengan beberapa ESP; itu hanya installer yang tersedak pada disk seperti itu.

Masalah lain adalah bagaimana Anda akan beralih di antara dua distribusi Anda. Anda mungkin perlu menyesuaikan satu atau kedua pengaturan GRUB instalasi Anda menggunakan alat seperti GRUB Customizer. Opsi lain (tetapi tidak tidak kompatibel) adalah menggunakan boot manager firmware Anda sendiri untuk beralih di antara dua instalasi GRUB Anda, dan gunakan masing-masing untuk mem-boot hanya versi Ubuntu sendiri.

Opsi # 2: Abaikan GRUB (atau setidaknya alat GRUB Ubuntu)

Masalah dengan GRUB untuk situasi Anda adalah Anda memiliki dua instalasi dan alat pemeliharaan GRUB kemungkinan menjadi bingung oleh konfigurasi itu. Pengamatan ini mengarah pada solusi yang jelas bahwa Anda seharusnya tidak menggunakan alat-alat itu. Ada beberapa boot loader EFI lain untuk Linux, yang sebagian besar lebih mudah dirawat secara manual daripada GRUB. Anda dapat mengatur ELILO, SYSLINUX, GRUB Leged tambalan Fedora, gummiboot, atau rEFInd dan mengelola kedua instalasi Anda secara manual. Faktanya, karena rEFInd mendeteksi kernel kapan saja melakukan booting, rEFInd harus mendekati no-maintenance, setelah itu diatur. Atau, tetapi dengan nada yang sama, Anda dapat mengedit grub.cfgfile secara manual untuk melakukan apa yang Anda inginkan, daripada mengandalkan skrip penyiapan GRUB.

Selain dari rEFInd, semua alat ini akan mengharuskan Anda untuk membuat perubahan konfigurasi setiap kali Anda memperbarui kernel, yang akan menjadi hambatan. Ada juga pertanyaan kapan dan bagaimana menginstal program boot ekstra. Saya mungkin akan menundanya sampai setelah instalasi Ubuntu kedua Anda, karena setiap instalasi akan mendaftarkan salinan GRUB sendiri sebagai boot loader default, dan Anda ingin mengganti default itu.

Perhatikan juga bahwa tidak ada alat ini yang dapat membaca kernel dari sistem file terenkripsi atau dari LVM, jadi Anda harus memiliki /bootpartisi tidak terenkripsi terpisah untuk setiap instalasi Ubuntu Anda. Ini adalah cara sebagian besar instruksi yang saya lihat mengatakan untuk mengatur instalasi Ubuntu terenkripsi bagaimanapun, jadi itu mungkin bukan masalah besar kecuali jika Anda ingin bermain di "tepi pendarahan" dari enkripsi disk.

Beberapa boot loader EFI memiliki persyaratan partisi tambahan atau sistem file khusus. Yang paling penting, ELILO, SYSLINUX, dan gummiboot semuanya membutuhkan kernel untuk berada di partisi FAT, dan ESP paling baik untuk ini. Anda dapat melakukan ini dengan memasang ESP di /boot, tetapi ini adalah solusi yang rapuh di Ubuntu karena beberapa pembaruan paket memerlukan tautan simbolis. Anda juga akan mengalami kesulitan melakukan ini dengan dua instalasi Ubuntu terpisah karena mereka berdua mencoba untuk mengklaim file yang sama. (Dalam hal ini, "ESP" benar-benar berarti "partisi tempat boot loader dijalankan," sehingga Anda dapat memiliki hanya satu ESP dalam kasus ini.) GRUB Legacy dan rEFInd lebih fleksibel mengenai hal ini.

Rekomendasi saya

Secara pribadi, saya akan menggunakan rEFInd untuk ini - tetapi karena saya mempertahankan rEFInd, saya tidak sepenuhnya tidak bias. Bahkan, saya punya komputer yang multi-boot antara tiga instalasi Ubuntu, dan rEFInd beralih di antara mereka dengan baik. Sistem khusus ini tidak menggunakan enkripsi, tapi saya ragu apakah itu akan menimbulkan masalah baru dari perspektif rEFInd.

Yang mengatakan, ESP terpisah harus bekerja dengan baik juga, dengan peringatan bahwa Anda mungkin perlu menggunakan GRUB Customizer untuk mengubah pengaturan setidaknya satu dari salinan GRUB tersebut.

Rod Smith
sumber
Saran yang sangat bagus, terima kasih! Saya yakin Anda benar bahwa seseorang dapat memiliki beberapa ESP berdasarkan spesifikasinya, tetapi saya ragu implementasi Dell Latitude UEFI saya juga mendukungnya. Ini hanya memungkinkan saya untuk menelusuri di jalur oleh masing-masing drive. Saya harus benar-benar mencobanya.
gertvdijk
jika implementasi EFI Dell Anda begitu rusak sehingga tidak dapat menangani beberapa ESP, maka Anda harus mengembalikannya ke toko untuk pengembalian dana. Serius; jenis buruk seperti itu akan menunjukkan betapa buruknya sehingga saya tidak akan mempercayai firmware untuk melakukan tugas-tugas dasarnya. Dalam praktiknya, saya tidak berpikir itu akan seburuk itu; Saya belum pernah mendengar tentang EFI yang tidak dapat menangani beberapa ESP.
Rod Smith
1

Berikut adalah langkah-langkah yang saya gunakan untuk dual boot dengan dua sistem Ubuntu terenkripsi LUKS pada hard drive tunggal dengan UEFI menggunakan opsi # 2 yang direkomendasikan oleh Rod Smith sebelumnya. Ini khusus dengan Ubuntu 18.04.1-desktop. Enkripsi direktori rumah tidak lagi diberikan sebagai opsi saat instalasi karena ada kekhawatiran akan keandalan dan pemeliharaan eCryptfs. Disarankan untuk menggunakan LUKS sebagai gantinya, jadi saya pikir adalah pilihan terbaik untuk memiliki banyak pengguna dengan partisi rumah terenkripsi.

    1. Boot ke Live USB, ini dengan mengunduh ISO dan menggunakan Startup Disk Creator untuk memformat dan mengatur drive USB.
    1. Gunakan GParted untuk mempartisi disk. Ini didasarkan pada rekomendasi di https://help.ubuntu.com/community/ManualFullSystemEncryption dan menggunakan beberapa default yang ditetapkan oleh installer Ubuntu ketika memilih enkripsi disk untuk disk penuh.
      • Partisi Sistem EFI / 512MiB / FAT32 / boot, esp (bendera)
      • Sistem Booting # 1/732MiB / EXT4
      • Sistem Booting # 2 / 732MiB / EXT4
      • Data Dienkripsi # 1 / [ukuran yang diinginkan] / dihapus
      • Data Dienkripsi # 2 / [ukuran yang diinginkan] / dihapus
    1. Reboot kembali ke Live USB
      • Instal Ubuntu
      • Pilih preferensi pemasangan
      • Pilih "Sesuatu yang lain" untuk tata letak disk partisi, dan di dalam konfigurasi partisi itu untuk instalasi:
        • Pilih "Partisi Sistem EFI" sebagai bootloader di menu di bagian bawah.
        • Pilih "Data Encrypted # 1" dan pilih "perangkat fisik untuk enkripsi" dan kemudian masukkan frasa enkripsi yang akan digunakan untuk partisi.
        • Pilih partisi yang baru dibuat dengan EXT4 dan ubah titik mount ke "/".
        • Pilih "Boot System # 1" dan minta mount point untuk itu menjadi "/ boot".
      • Lanjutkan dan instal
    1. Reboot ke instalasi baru
      • Instal "refind" melalui "apt-get install refind" dan minta instal secara otomatis ke ESP, "Partisi Sistem EFI".
    1. Reboot kembali ke Live USB
      • Ulangi langkah 3 dan 4 untuk partisi # 2 Boot System dan Data Encrypted # 2 yang menginstal instalasi Ubuntu kedua.
    1. Konfigurasikan dan tingkatkan setiap instalasi sesuai kebutuhan.
brihoriq
sumber
1

Saya menggunakan pendekatan berikut dengan ESP tunggal:

Saya membuat boot-loader tambahan untuk setiap OS dengan

sudo grub-install --bootloader-id=ID

menggunakan yang berbeda IDuntuk setiap sistem operasi.

Contoh:

Saya sudah menginstal Ubuntu 16.04 dan Ubuntu 18.04. Saya boot ke Ubuntu 16.04 dan jalankan

sudo grub-install --bootloader-id=Ubuntu1604

Kemudian dari boot ke Ubuntu 18.04 saya jalankan

sudo grub-install --bootloader-id=Ubuntu1804

Dalam UEFI-pengaturan saya melihat boot entri baru dengan nama Ubuntu1604dan Ubuntu1804dan mengatur ulang urutan boot untuk set salah satu entri baru untuk tempat pertama.

Saya juga bisa melihat folder dengan nama ini di ESP.

Ketika suatu sistem meningkatkan kapal dengan versi baru grub, ia akan menginstal ulang contoh baru grub ke ubuntu-folder pada ESP, itu tidak akan memengaruhi boot-loader yang saya buat sendiri, tetapi saya harus mengatur ulang urutan boot lagi. sebagai-masuk ubuntuakan didorong ke tempat pertama dalam urutan boot.

Inilah yang efibootmgr -vditunjukkan dalam konfigurasi saya:

~ $ efibootmgr -v
BootCurrent: 0001
Batas waktu: 0 detik
BootOrder: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (EFI \ Ubuntu \ grubx64.efi)
mook765
sumber
Masih tidak bekerja untuk saya. Saya mengubah default di / etc / default / grub ke distribusi like GRUB_DISTRIBUTOR="Bionic_18_04"dan instal ulang penggunaan grub sebagai ID default UEFI. Tetapi setiap kali hanya menggunakan /EFI/ubuntu/grub.cfg sebagai lokasi default untuk boot dari bukan /EFI/bionic_18_04/grub.cfg.
oldfred
@oldfred Bagi saya ini berfungsi dengan baik selama beberapa tahun menjalankan triple boot.
mook765
Mencoba perintah Anda, alih-alih mengganti nama di / etc / default / grub. Tidak ada bedanya. UEFI diatur ke boot default entri baru. Tapi itu boot menggunakan / efi / ubuntu dengan Disco sebagai boot default, daripada grub di folder / EFI / ubuntu1804 baru. Saya pikir grub bukan UEFI yang membuat perbedaan.
oldfred
@oldfred Silakan lihat output efibootmgr -vyang saya tambahkan ke jawaban saya. Berhasil. Anda mungkin memiliki perubahan tambahan yang mencegah Anda melakukan itu. Apa yang saya jelaskan adalah satu-satunya hal yang saya lakukan untuk membuatnya bekerja.
mook765
Saya memang memeriksa efibootmgr -v dan sudah diset untuk entri baru, tetapi mem-boot grub di / EFI / ubuntu. Milik saya sedang mem-boot / EFI/ubuntu1804/shimx64.efi. Apakah Anda menggunakan grubx64.efi atau shimx64.efi, mungkin itu bedanya? Saya memiliki Secure Boot off, tetapi defaultnya adalah shim sebagai entri ubuntu1804 pertama. Pada titik tertentu saya berakhir dengan begitu banyak entri atau folder UEFI di / EFI yang saya punya masalah boot & harus menggunakan rEFInd pada drive lain untuk boot. Jadi saya sekarang tidak suka memiliki terlalu banyak folder / entri di EFI atau UEFI.
oldfred