Cara memasang fedora/rhel/centos melalui kickstart pada peranti LUKS yang ada

Cara memasang fedora/rhel/centos melalui kickstart pada peranti LUKS yang ada

Pemasangan Kickstart Mari kita dengan mudah skrip dan meniru pemasangan Fedora, Red Hat Enterprise Linux atau Centos. Arahan yang diperlukan untuk memasang sistem operasi ditentukan, dengan sintaks khusus, di dalam fail kickstart yang dihantar ke pemasang anaconda. Dalam tutorial ini kita akan melihat cara menggunakan semula yang sudah ada Luks (Linux Unified Keys Setup) Bekas semasa melakukan pemasangan Kickstart: ini adalah sesuatu yang tidak dapat dicapai hanya dengan arahan kickstart dan memerlukan beberapa langkah tambahan.

Dalam tutorial ini anda akan belajar:

  • Cara Menggunakan Bekas LUKS yang Ada Semasa Melaksanakan Pemasangan Kickstart Fedora, RHEL atau Centos
  • Cara membuat dan menggunakan kemas kini.fail IMG akan digunakan dengan pemasang anaconda.
Cara memasang fedora/rhel/centos melalui kickstart pada peranti LUKS yang ada

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Fedora/rhel/centos
Perisian Tidak ada perisian khusus yang diperlukan untuk mengikuti tutorial ini.
Yang lain
  • Pengetahuan mengenai sintaks kickstart
  • Pengetahuan Luks (Linux Unified Key Persediaan) dan perintah cryptsetup.
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Pengenalan

Kickstart Marilah kita dengan mudah meniru dan menyesuaikan pemasangan sistem operasi dengan cara yang mustahil untuk dicapai dari pemasang grafik anaconda. Kita boleh, sebagai contoh, mengisytiharkan apa pakej atau kumpulan pakej yang harus dipasang pada sistem dan apa yang harus dikecualikan.

Kami juga berpeluang untuk melaksanakan arahan tersuai sebelum atau selepas pemasangan dilakukan, menyatakannya di dalam yang berdedikasi %pra dan %jawatan Bahagian fail kickstart masing -masing. Kami akan memanfaatkan ciri terakhir yang disebutkan ini untuk menggunakan yang sudah ada Luks peranti semasa proses pemasangan.

Penyulitan dengan sintaks kickstart asli

Membuat bekas Luks agak mudah, dan boleh dilakukan dengan hanya menggunakan arahan kickstart asli. Berikut adalah contoh:



bahagian pv.01 --ondisk = sda-encrypted-luks-type = luks1 --cipher = aes-xts-plain64 --pbkdf-time = 5000 --passphrase = asretpassphrase

Dalam contoh di atas, dengan menggunakan bahagian arahan, kami membuat yang disulitkan lvm jumlah fizikal di /dev/sda cakera. Kami menentukan Luks versi untuk digunakan (Luks1 dalam kes ini - sekurang -kurangnya dalam versi terkini Fedora Luks2 telah menjadi lalai), yang cipher, dan masa, dinyatakan dalam milisaat, untuk dibelanjakan untuk Pbkdf (Fungsi derivasi utama berasaskan kata laluan) pemprosesan laluan laluan (ia bersamaan dengan menggunakan --masa pilihan Cryptsetup).

Walaupun ia bukan tabiat yang selamat, kami juga menggunakannya --laluan belakang Untuk menyediakan frasa laluan penyulitan: Tanpa pilihan ini, proses pemasangan akan terganggu, dan kami akan diminta untuk menyediakannya secara interaktif.

Kami dapat melihat dengan jelas bagaimana, menggunakan Kickstart, kami mendapat lebih banyak fleksibiliti berbanding pemasangan tradisional; Mengapa kita perlu melakukan langkah tambahan, maka? Masih ada beberapa tugas yang tidak dapat kita capai dengan hanya menggunakan sintaks kickstart standard. Antara lain, kita tidak dapat mencipta Luks bekas pada peranti mentah (hanya pada partition) atau tentukan algoritma hashing untuk digunakan untuk Luks persediaan utama, yang secara lalai ditetapkan ke SHA256 (tidak ada yang salah dengannya).

Atas sebab -sebab ini, kami mungkin ingin membuat persediaan partition kami sebelum melakukan pemasangan, sama ada secara manual atau dengan menggunakan alat seperti berpisah di dalam %pra bahagian fail kickstart itu sendiri. Kita juga mungkin mempunyai yang ada Luks persediaan kita tidak mahu memusnahkan. Dalam semua kes ini, kita mesti melakukan langkah -langkah tambahan yang akan kita lihat dalam seketika.

Bahagian pra kickstart %

The %pra bahagian fail kickstart adalah yang pertama yang akan dihuraikan apabila fail diambil. Ia digunakan untuk melaksanakan arahan tersuai sebelum pemasangan bermula dan mesti ditutup dengan jelas dengan %Akhir arahan.

Dalam %pra, jurubahasa shell bash digunakan secara lalai, tetapi yang lain dapat ditentukan melalui --jurubahasa pilihan (untuk menggunakan python yang akan kami tulis %pra -interpreter/usr/bin/python). Kita boleh menggunakan bahagian ini untuk menjalankan arahan yang diperlukan untuk membuka yang ada Luks bekas. Inilah yang boleh kita tulis:

%pra iotty = "$ (tty)" exec> "$ iotty" 2> "$ iotty" sementara benar; Do CryptSetup Luksopen /Dev /SDA1 Cryptroot - && Break Done %End
Salinan

Mari lihat kod di atas. Pertama sekali, kami menyimpan hasil dari tty perintah, yang mencetak nama fail terminal yang disambungkan ke input standard, ke dalam iotty pembolehubah.

Dengan exec> "$ iotty" 2> "$ iotty" Perintah Kami mengalihkan output standard dan ralat standard ke terminal yang sama:
dengan cara ini kita akan dapat memasukkan kata laluan kontena apabila crytpsetup luksopen Perintah akan dilaksanakan dan petikan akan dipaparkan di skrin. Perintah itu dilancarkan dalam gelung tak terhingga yang terganggu hanya jika Luks bekas berjaya dibuka.

Sekiranya kita mahu perlu menjalankan pemasangan yang tidak dijaga, kita mesti lulus frasa laluan terus ke cryptsetup (sekali lagi, ini tidak disyorkan). Kami akan menulis:

%pra echo -n "OurVerySecretPassphrase" | Cryptsetup Luksopen /Dev /SDA1 Cryptroot - %Akhir

Dalam contoh di atas, kami melepasi frasa laluan ke input standard perintah cryptsetup melalui paip |: kami menggunakan echo perintah dengan -n pilihan untuk mengelakkan watak baru untuk dilampirkan pada akhir frasa laluan.

Patching Fedora 31 Anaconda Installer

Sekiranya kami cuba menggunakan bekas Luks yang tidak dikunci semasa memasang Fedora 31 melalui Kickstart, kami akan menerima yang berikut
mesej, dan prosesnya akan digugurkan:

Peranti LUK yang dibuka yang sedia ada tidak boleh digunakan untuk pemasangan tanpa kunci penyulitan yang ditentukan untuk ini
peranti. Tolong, buat semula simpanan.

Ini berlaku kerana komit ini diperkenalkan dalam versi Fedora 31 dari pemasang Anaconda. Kod pada dasarnya memeriksa bahawa peranti LUKS yang ada mempunyai kunci berdaftar, jika tidak pemasangannya dibatalkan. Masalahnya ialah Blivet, Perpustakaan Python yang digunakan oleh Anaconda untuk menguruskan partition memperoleh kunci hanya jika bekas dibuka olehnya: ini boleh dilakukan dari pemasang grafik tetapi tidak ada, pada saat menulis, arahan kickstart untuk membuka kunci yang ada Luks bekas. Saya secara peribadi mengulas komit yang menjelaskan keadaan, dan pepijat telah dibuka pada Bugzilla Red Hat.

Membuat kemas kini.fail IMG

Pada masa ini satu -satunya penyelesaian (yang saya tahu) adalah untuk menampal kod sumber Anaconda, mengulas garis yang melaksanakan kawalan yang diperkenalkan dengan komit yang kita nyatakan di atas. Berita baiknya ialah ia sangat mudah untuk beroperasi.

Sebagai perkara pertama, kita perlu mengklon repositori anaconda git, khususnya F31-Release Cawangan:

$ git clone https: // github.com/rhinstaller/anaconda -b f31 -rilease


Setelah repo diklonkan, kami memasuki Anaconda direktori dan ubah suai pyanaconda/penyimpanan/pemeriksa.py Fail: Yang harus kita lakukan ialah mengulas baris 619:

def set_default_checks (diri): "" "Tetapkan cek lalai."" ".cek = senarai () diri.add_check (verify_root) diri.add_check (verify_s390_constraints) diri.add_check (verify_partition_formatting) diri.add_check (verify_partition_sizes) diri.add_check (verify_partition_format_sizes) diri.add_check (verify_bootloader) diri.add_check (verify_gpt_biosboot) diri.add_check (verify_swap) diri.add_check (verify_swap_uuid) diri.add_check (verify_mountpoints_on_linuxfs) diri.add_check (verify_mountpoints_on_root) #self.add_check (verify_unlocked_devices_have_key).add_check (verify_luks_devices_have_key) diri.add_check (verify_luks2_memory_requirements) diri.add_check (verify_mounted_partitions)
Salinan

Kami menyimpan pengubahsuaian dan, dari akar repositori, kami melancarkan Makeupdates skrip yang terdapat di Skrip direktori. Untuk skrip yang akan dilaksanakan, kita mesti ada python2 Dipasang:

$ ./skrip/makeupdates

Skrip akan menjana kemas kini.img fail yang akan mengandungi pengubahsuaian kami. Untuk memeriksa kandungannya, kami boleh menggunakannya lsinitrd Perintah:

$ lsinitrd kemas kini.IMG Imej: Kemas kini.IMG: 8.0K ================================================ ====================== versi: Argumen: Dracut Modul: ================================================================== ================================================= == DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 . DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 RUN DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 RUN/Pasang DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 RUN/Pasang/ Kemas kini DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Run/Pasang/Kemas Kini/Pyanaconda DRWXR-XR-X 2 EGDOC EGDOC 0 Jan 30 09:29 Run/Pasang/Kemas Kini/Pyanaconda/Penyimpanan -RW-R- -R-- 1 EGDOC EGDOC 25443 30 Jan 09:29 Run/Pasang/Kemas kini/Pyanaconda/Penyimpanan/Pemeriksa.py ================================================ ======================= 

Kami akan menggunakan fail ini untuk "patch" pemasang fedora 31.

Memohon patch

Untuk menggunakan pengubahsuaian yang terkandung dalam fail yang baru saja kita hasilkan, kita perlu meletakkannya di mana kita dapat mengaksesnya dengan mudah, mungkin melalui FTP atau HTTP, atau bahkan pada peranti blok tempatan, dan gunakan Inst.kemas kini parameter untuk merujuknya dari gambar pemasang fedora. Dari menu grub kami menyerlahkan entri menu "Pasang Fedora":



Menu pemasang fedora 31

Sebaik sahaja garisan menu dipilih, kami tekan kekunci Tab: baris arahan kernel yang dikaitkan dengan entri dipaparkan di bahagian bawah skrin:



Baris arahan kernel yang digunakan oleh entri "pemasangan fedora" yang perlu kita lakukan sekarang adalah untuk menambahkan Inst.kemas kini arahan dan berikan jalan ke kemas kini.img fail yang kami buat. Menganggap kedua -dua kickstart dan kemas kini.Fail IMG boleh diakses melalui HTTP pada pelayan tempatan dengan IP 192.168.0.37, kami akan menulis:
vmlinuz initrd = initrd.Img Inst.Stage2 = HD: Label = Fedora-S-DVD-X86_31-31 Tenang Inst.Kemas kini = http: // 192.168.0.37/kemas kini.Img Inst.KS = http: // 192.168.0.37/ks.cfg

Pada ketika ini kita boleh tekan Enter untuk boot. Dengan pengubahsuaian di atas, pemasang tidak akan mengadu lagi
yang dibuka Luks peranti, dan pemasangan akan diteruskan tanpa masalah.

Kesimpulan

Dalam artikel ini kita melihat bagaimana untuk menyesuaikan pemasangan kickstart untuk menggunakan semula yang sudah ada Luks peranti, membukanya di %pra Bahagian fail kickstart, dan cara memohon penyelesaian kecil ke pemasang fedora 31 anaconda yang sebaliknya akan gagal apabila jenis pemasangan itu dicuba. Sekiranya anda ingin tahu mengenai sintaks kickstart sila lihat dokumentasi dalam talian.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Cara Memasang Debian pada bekas Luks yang ada
  • Cara Memasang Python Pengkomputeran Saintifik Anaconda ..
  • Cara Melakukan Pemasangan Linux Tanpa Jauh dengan Kickstart
  • Cara menggunakan fail sebagai kunci peranti luks
  • Oracle Linux vs Red Hat (RHEL)
  • Muat turun linux
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Perkara yang perlu dipasang di Ubuntu 22.04