Dalam posting ini Anda akan membaca sedikit tentang penelitian aneh saya selama cuti sakit paksa. Ini akan mengenai beberapa hal sekaligus, yang bukan "praktik terbaik", tetapi juga mungkin! Jadi di sini adalah tutorial tentang cara menginstal Archlinux (distr favorit saya) sehingga:
- tanpa / boot terpisah (hanya di / root)
- / pada lvm
- lvm di dalam wadah luks
- dengan UEFI
- di mesin virtual.
dengan boot aman ("sulit" di mesin virtual tidak mungkin berhasil)
Patut dicatat bahwa semuanya akan dienkripsi kecuali untuk partisi sistem EFI dengan satu file grubx64.efi - aplikasi EFI untuk menjalankan grub.
Jika Anda tertarik, selamat datang ke kucing!
Pertama, saya mengatur semuanya pada laptop Lenovo X240 saya, kemudian untuk menulis artikel saya menggunakan mesin virtual dengan OVMF di Proxmox.
Pengaturan testbed:
Semuanya dibuat cukup standar. Gambar menggunakan lengkungan favorit saya, yang selalu dapat diunduh dari
Yandex .
Selanjutnya, beberapa poin pada virtual di Proxmox tentang UEFI. Untuk menguji operasi dudukan dengan UEFI (jika tidak maka tidak akan begitu menarik), Anda perlu mengatur OVMF alih-alih SeaBIOS di properti mesin virtual:

Selanjutnya, tambahkan disk UEFI sesuai, untuk mendapatkan sesuatu seperti ini:

Sekarang kita dapat memulai mesin virtual dan memulai proses instalasi. Di konsol mesin virtual, segera mulai layanan sshd, atur kata sandi root dan temukan alamat dhcp mesin virtual:

Selanjutnya, kita dapat terus bekerja pada ssh untuk membuatnya lebih nyaman.
Tata letak disk
Jadi, setelah terhubung melalui ssh, pertama-tama kita mengatur waktu sehingga nantinya tidak akan menghasilkan sistem file di masa depan:
timedatectl set-ntp true && timedatectl set-timezone Europe/Moscow
Periksa apakah semuanya benar:
root@archiso ~
Sekarang kita dapat mulai mempartisi disk. Pada tahap ini, saya memiliki drive / dev / vda, sebagai Pengontrol Virtio dan ini hanyalah disk kosong tanpa tabel partisi:
root@archiso ~
Kami akan memecahnya menjadi 2 partisi:
- disk fat32 untuk aplikasi UEFI (EFI_system_partition)
- Wadah LUK dengan yang lainnya
Gunakan gdisk untuk membuat GPT:
root@archiso ~
Selanjutnya, buat partisi pertama untuk EFI dengan tipe EF00 (Partisi Sistem EFI):
Command (? for help): n Partition number (1-128, default 1): First sector (34-31457246, default = 2048) or {+-}size{KMGTP}: Last sector (2048-31457246, default = 31457246) or {+-}size{KMGTP}: +512M Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): <b>EF00</b> Changed type of partition to 'EFI System'
Sekarang buat partisi untuk LUKS, tempat kami bahkan tidak akan repot dengan tipenya dan membiarkannya apa adanya:
Command (? for help): n Partition number (2-128, default 2): First sector (34-31457246, default = 1050624) or {+-}size{KMGTP}: Last sector (1050624-31457246, default = 31457246) or {+-}size{KMGTP}: <b>Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'</b>
Kami akan menuliskan perubahan dan menyelesaikannya dengan markup partisi:
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/vda. The operation has completed successfully.
Membuat wadah LUKS dan sistem file
Dengan bagian pertama (vda1), semuanya cukup sederhana. Kami hanya perlu memformatnya dan untuk saat ini:
root@archiso ~
Partisi kedua adalah wadah yang harus Anda persiapkan terlebih dahulu. Kami memformat partisi melalui cryptsetup dan mengatur frasa sandi:
root@archiso ~
*** Saya tidak peduli dengan pilihan cipher, dengan pengacakan ditimpa dengan urandom dan lainnya, tetapi hanya membuat wadah default.
Selanjutnya, buka wadah dengan menentukan frasa sandi yang sama:
root@archiso ~
Sekarang kami memiliki wadah terbuka yang dapat diakses melalui device mapper:
root@archiso ~
Sekarang kita dapat melanjutkan dengan lvm (saya akan menulis dengan cepat, karena ini bukan subjek):
root@archiso ~
Selanjutnya, buat sistem file di lv kami:
root@archiso ~
Sekarang semua ini dapat dipasang untuk menginstal sistem dasar. Titik instalasi adalah / mnt, di mana root dari sistem masa depan kita akan dimulai:
[root@archiso ~]
*** / boot / efi yang saya buat sehingga / boot itu sendiri tetap di / dev / mapper / rootvg-root, dan folder efi sudah di-mount di / dev / vda1 (partisi fat32 efi): [root@archiso ~]
Periksa titik pemasangan saat ini (selalu berguna):
[root@archiso ~]
Seperti yang kita lihat, semuanya jujur dan sekarang saatnya menempatkan lengkungan itu sendiri.
Instalasi sistem dasar
Instal paket base dari set base dan devel-devel menggunakan paket pacstrap (Anda dapat meletakkan semua yang Anda inginkan dan selain itu):
pacstrap /mnt base base-devel
Semuanya boot dengan sempurna, sistem dasar sudah siap. Secara alami, saya menghapus kesimpulan. Sekarang kita dapat mengkonfigurasi sistem ini untuk boot dan bekerja.
Dari hal-hal dasar, kami segera menghasilkan fstab:
genfstab -pU /mnt >> /mnt/etc/fstab
Selanjutnya, buat arch-chroot ke dalam sistem baru ini:
[root@archiso ~]
*** arch-chroot adalah utilitas yang sangat berguna, karena ia melakukan semuanya dengan sendirinya. Meskipun Anda selalu dapat menggunakan chroot standar, sebelum melakukan ini, ikuti instruksi di gentoo-handbook wiki.gentoo.org/wiki/Handbook : AMD64 / Instalasi / Bagian Basis “ Memasang sistem file yang diperlukan”Segera konfigurasikan waktu sistem dan nama host:
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime && \ hwclock --systohc && \ echo luks-test > /etc/hostname
Tetapkan kata sandi root:
[root@archiso /]
Batalkan komentar lokal yang diperlukan di /etc/locale.gen:
[root@archiso /]
Kami akan menghasilkan mereka:
[root@archiso /]
Segera konfigurasikan untuk sistem dan konsol:
[root@archiso /]
Sekarang konfigurasikan file /etc/mkinitcpio.conf, yang bertanggung jawab untuk opsi, kait, dll. Saat membuat initramfs:
vi /etc/mkinitcpio.conf
Yang paling penting adalah pengait dan urutannya:
HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 resume filesystems keyboard fsck)
*** melanjutkan pengait untuk mem-boot sistem setelah hibernasi dari swap. Pada mesin virtual itu tidak diperlukan. Saya menyalinnya dari beech.Sekarang kita dapat menghasilkan initramfs:
[root@archiso /]
Sekarang setelah kita memiliki sistem, kita perlu menginstal bootloader itu sendiri. Pilihan saya jatuh pada grub (2), karena entah bagaimana lebih akrab dan cukup mudah memuat kernel dari partisi terenkripsi (baik, atau saya tidak benar-benar mencari yang lain).
Instal paket grub:
[root@archiso /]
Sebelum membuat konfigurasi, edit opsi grub default:
vim /etc/default/grub
di sini Anda perlu menghapus komentar pada satu baris penting (tidak ada komentar, tentu saja):
dan tambahkan (ada yang kosong secara default) ke GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=5ad7c9ad-fb17-4839-925e-479432516c07:container"
UUID yang saya ambil dari blkid:
[root@archiso /]
Kami membuat konfigurasi untuk grub:
[root@archiso /]
Selanjutnya, instal grub sendiri pada disk:
[root@archiso /]
*** Anda dapat menambahkan --recheck --debug, tentukan arsitekturnya ... tapi ... itu benar-benar berfungsi dengan sendirinya)Sekarang kita akan mengedit / etc / crypttab sehingga sistem itu sendiri tahu bahwa ketika memuat perlu mendekripsi bagian LUKS. Tambahkan baris:
echo "container /dev/vda2 none" >> /etc/crypttab
Yang berarti bahwa Anda perlu meminta kata sandi (tidak ada) untuk partisi / dev / vda2 dan menyajikannya sebagai wadah melalui perangkat mapper.
Sekarang kita siap untuk keluar dari chroot dan reboot sistem:
[root@archiso /]
Sekarang mari kita beralih ke konsol mesin virtual untuk melihat hasilnya:

Pada tahap ini, kami memulai aplikasi EFI /boot/efi/EFI/arch/grubx64.efi dengan / dev / vda1, yang meminta kami kata sandi untuk mendekripsi wadah kami.
Selanjutnya, setelah memasukkan kata sandi:

Ini adalah jendela grub yang familier dengan opsi boot kami dari /boot/grub/grub.cfg.
Pada tahap ini, grub mendekripsi kontainer kami dan mendapatkan akses ke file ini sendiri (/boot/grub/grub.cfg), kernel, dan initramfs. Setelah memilih opsi, kernel akan boot secara default, initramfs:

Secara aktif, kernel muncul dengan kait terenkripsi, yang lagi-lagi meminta kami untuk kata sandi untuk mendekripsi wadah (secara umum, Anda perlu memasukkan kata sandi 2 kali, tetapi mungkin Anda membuat 2 wadah untuk boot dan root dari kelebihan paranoia :)
Dan kemudian setelah sistem terisi penuh:
PS: untuk meningkatkan level skizofrenia, hanya boot aman saja tidak cukup untuk menandatangani bootloader grubx64.efi kami.
Saya merasa tidak menarik untuk hanya meletakkan kernel dan initramfs di / dev / vda1, karena saya sudah melakukannya 100 kali. Boot loader lain seperti SHIM, bootctl, dll. Tidak tahu bagaimana melakukan ini (yah, jika saya tidak tahu, beri tahu kami di komentar)
Bahan yang berguna tentang topik dan bahan yang digunakan