Cara menginstal fedora/rhel/centos melalui kickstart pada perangkat luks yang ada

Cara menginstal fedora/rhel/centos melalui kickstart pada perangkat luks yang ada

Instalasi Kickstart Mari kita dengan mudah skrip dan mereplikasi instalasi Fedora, Red Hat Enterprise Linux atau Centos yang tidak dijaga atau semi-tidak disesuaikan. Instruksi yang diperlukan untuk menginstal sistem operasi ditentukan, dengan sintaks khusus, di dalam file kickstart yang diteruskan ke penginstal Anaconda. Dalam tutorial ini kita akan melihat cara menggunakan kembali yang sudah ada Luks (Linux Unified Keys Setup) Kontainer Saat melakukan instalasi kickstart: Ini adalah sesuatu yang tidak dapat dicapai hanya dengan instruksi kickstart dan memerlukan beberapa langkah tambahan.

Dalam tutorial ini Anda akan belajar:

  • Cara menggunakan wadah Luks yang ada saat melakukan instalasi kickstart dari fedora, rhel atau centos
  • Cara membuat dan menggunakan pembaruan.file img yang akan digunakan dengan penginstal anaconda.
Cara menginstal fedora/rhel/centos melalui kickstart pada perangkat luks yang ada

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Fedora/rhel/centos
Perangkat lunak Tidak diperlukan perangkat lunak khusus untuk mengikuti tutorial ini.
Lainnya
  • Pengetahuan tentang sintaks kickstart
  • Pengetahuan Luks (Pengaturan Kunci Terpadu Linux) dan Perintah Cryptsetup.
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Perkenalan

Kickstart Mari kita mereplikasi dengan mudah dan menyesuaikan instalasi sistem operasi dengan cara yang tidak mungkin dicapai dari penginstal grafis Anaconda. Kami dapat, misalnya, menyatakan paket atau grup paket apa yang harus diinstal pada sistem dan apa yang harus dikecualikan sebagai gantinya.

Kami juga memiliki kesempatan untuk menjalankan perintah khusus sebelum atau setelah instalasi dilakukan, menentukannya di dalam yang berdedikasi %pra Dan %pos Bagian dari file kickstart masing -masing. Kami akan memanfaatkan fitur yang disebutkan terakhir ini untuk menggunakan yang sudah ada Luks perangkat selama proses pemasangan.

Enkripsi dengan sintaks kickstart asli

Membuat wadah Luks cukup mudah, dan dapat dilakukan dengan hanya menggunakan instruksi kickstart asli. Inilah contohnya:



Bagian PV.01 --ondisk = SDA --Encrypted ---luks-Type = luks1 --cipher = aes-xts-plain64 --pbkdf-time = 5000 --passphrase = SecretPassphrase

Dalam contoh di atas, dengan menggunakan bagian instruksi, kami membuat terenkripsi LVM volume fisik pada /dev/sda disk. Kami menentukan Luks Versi untuk digunakan (luks1 dalam hal ini - setidaknya dalam versi terbaru dari fedora luks2 telah menjadi default), sandi, dan waktu, diekspresikan dalam milidetik, untuk dibelanjakan PBKDF (Fungsi Derivasi Kunci Berbasis Kata Sandi) Pemrosesan Frasa Pascapor (ini setara dengan menggunakan --waktu iter opsi cryptsetup).

Bahkan jika itu bukan kebiasaan yang aman, kami menggunakan juga --frasa sandi Untuk memberikan frasa sandi enkripsi: tanpa opsi ini, proses instalasi akan terganggu, dan kami akan diminta untuk menyediakan satu secara interaktif.

Kami dapat dengan jelas melihat bagaimana, menggunakan Kickstart, kami mendapatkan lebih banyak fleksibilitas dibandingkan dengan instalasi tradisional; Mengapa kita perlu melakukan langkah tambahan, lalu? Masih ada beberapa tugas yang tidak dapat kita capai dengan hanya menggunakan sintaks kickstart standar. Antara lain, kami tidak dapat menciptakan Luks wadah pada perangkat mentah (hanya pada partisi) atau tentukan algoritma hashing untuk digunakan untuk Luks pengaturan kunci, yang secara default diatur ke sha256 (Tidak ada yang salah dengan itu).

Untuk alasan ini kami mungkin ingin membuat pengaturan partisi kami sebelum melakukan instalasi, baik secara manual atau dengan menggunakan alat seperti berpisah di dalam %pra bagian dari file kickstart itu sendiri. Kami juga mungkin memiliki yang ada Luks Penyiapan yang tidak ingin kami hancurkan. Dalam semua kasus ini kita harus melakukan langkah -langkah tambahan yang akan kita lihat sebentar lagi.

Bagian pra kickstart %

Itu %pra bagian dari file kickstart adalah yang pertama diuraikan saat file diambil. Ini digunakan untuk melakukan perintah khusus sebelum instalasi dimulai dan harus ditutup secara eksplisit dengan %akhir petunjuk.

Di dalam %pra, Interpreter Bash Shell digunakan secara default, tetapi yang lain dapat ditentukan melalui --penerjemah opsi (menggunakan python yang akan kami tulis %pre --terterpreter/usr/bin/python). Kita dapat menggunakan bagian ini untuk menjalankan perintah yang diperlukan untuk membuka yang ada Luks wadah. Inilah yang bisa kita tulis:

%pra iotty = "$ (tty)" exec> "$ iotty" 2> "$ iotty" while true; do cryptsetup luksopen /dev /sda1 cryptroot - && break done %end
Menyalin

Mari kita lihat kode di atas. Pertama -tama, kami menyimpan hasil dari Tty perintah, yang mencetak nama file terminal yang terhubung ke input standar, ke dalam iotty variabel.

Dengan exec> "$ iotty" 2> "$ iotty" Perintah kami mengarahkan output standar dan kesalahan standar ke terminal yang sama:
Dengan cara ini kita akan dapat memasukkan kata sandi wadah saat crytpsetup luksopen Perintah akan dieksekusi dan prompt akan ditampilkan di layar. Perintah ini diluncurkan dalam loop tak terbatas yang terputus hanya jika Luks wadah berhasil dibuka.

Jika kita ingin menjalankan instalasi yang benar -benar tanpa pengawasan, kita harus meneruskan frasa sandi langsung ke cryptsetup (sekali lagi, ini tidak disarankan). Kami akan menulis:

%pra echo -n "ourverysecretpassphrase" | cryptsetup luksopen /dev /sda1 cryptroot - %end

Dalam contoh di atas kami melewati frasa sandi ke input standar dari perintah cryptsetup melalui pipa |: Kami menggunakan gema Perintah dengan -N Opsi untuk menghindari karakter garis baru yang akan ditambahkan di akhir frasa sandi.

Patching Fedora 31 Installer Anaconda

Jika kami mencoba menggunakan wadah Luks yang tidak terkunci saat memasang Fedora 31 melalui Kickstart, kami akan menerima yang berikut ini
pesan, dan prosesnya akan dibatalkan:

Perangkat Luks yang tidak terkunci yang ada tidak dapat digunakan untuk instalasi tanpa kunci enkripsi yang ditentukan untuk ini
perangkat. Tolong, ulangi penyimpanannya.

Ini terjadi karena komit ini diperkenalkan dalam versi Fedora 31 dari penginstal Anaconda. Kode pada dasarnya memeriksa apakah perangkat LUKS yang ada memiliki kunci terdaftar, jika tidak diinstalinya dibatalkan. Masalahnya adalah Boak, Perpustakaan Python yang digunakan oleh Anaconda untuk mengelola partisi memperoleh kunci hanya jika wadah dibuka olehnya: Ini dapat dilakukan dari pemasang grafis tetapi tidak ada, pada saat penulisan, instruksi kickstart untuk membuka kunci yang ada Luks wadah. Saya pribadi mengomentari komitmen yang menjelaskan situasinya, dan bug telah dibuka di Red Hat Bugzilla.

Membuat pembaruan.file img

Saat ini satu -satunya solusi (yang saya tahu) adalah menambal kode sumber Anaconda, mengomentari garis yang mengeksekusi kontrol yang diperkenalkan dengan komit yang kami sebutkan di atas. Berita baiknya adalah bahwa ini sangat sederhana untuk dioperasikan.

Sebagai hal pertama, kita perlu mengkloning repositori anaconda git, khususnya F31-rilis cabang:

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


Setelah repo dikloning, kami memasuki Anaconda direktori dan memodifikasi pyanaconda/penyimpanan/checker.py File: Yang harus kita lakukan adalah berkomentar baris 619:

def set_default_checks (self): "" "atur cek default.""" diri sendiri.checks = list () self.add_check (verify_root) self.add_check (verify_s390_constraints) self.add_check (verify_partition_formatting) self.add_check (verify_partition_sizes) self.add_check (verify_partition_format_sizes) self.add_check (verify_bootloader) self.add_check (verify_gpt_biosboot) self.add_check (verify_swap) self.add_check (verify_swap_uuid) self.add_check (verify_mountpoints_on_linuxfs) self.add_check (verify_mountpoints_on_root) sendiri.add_check (verify_unlocked_devices_have_key) self.add_check (verify_luks_devices_have_key) self.add_check (verify_luks2_memory_requirements) self.add_check (verify_mounted_partitions)
Menyalin

Kami menyimpan modifikasi dan, dari akar repositori, kami meluncurkan makeupdates skrip yang ditemukan di skrip direktori. Agar skrip dapat dieksekusi yang harus kita miliki Python2 terpasang:

$ ./skrip/makeupdates

Skrip akan menghasilkan pembaruan.img file yang akan berisi modifikasi kami. Untuk memeriksa isinya, kami dapat menggunakan lsinitrd memerintah:

Pembaruan $ LSinitrd.Gambar IMG: Pembaruan.IMG: 8.0K ===================================================== ======================= Versi: Argumen: Modul Dracut: ====================== ==================================================== == DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 . DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Jalankan DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Jalankan/Pasang DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Jalankan/instal/instal Pembaruan DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Jalankan/Instal/Pembaruan/Pyanaconda DRWXR-XR-X 2 EGDOC EGDOC 0 Jan 30 09:29 Jalankan/instal/update/pyanaconda/penyimpanan -rw-r- -r-- 1 EGDOC EGDOC 25443 30 Jan 09:29 Jalankan/instal/pembaruan/pyanaconda/penyimpanan/checker.py ===================================================== ======================== 

Kami akan menggunakan file ini untuk "menambal" penginstal Fedora 31.

Menerapkan tambalan

Untuk menerapkan modifikasi yang terkandung dalam file yang baru saja kami hasilkan, kami perlu menempatkannya di suatu tempat di mana kami dapat dengan mudah mengaksesnya, mungkin melalui FTP atau HTTP, atau bahkan pada perangkat blok lokal, dan menggunakan inst.pembaruan parameter untuk merujuknya dari gambar penginstal fedora. Dari menu Grub kami menyorot entri menu "Instal Fedora":



Menu Penginstal Fedora 31

Setelah baris menu dipilih, kami menekan tombol tab: baris perintah kernel yang terkait dengan entri ditampilkan di bagian bawah layar:



Baris perintah kernel yang digunakan oleh entri "instal fedora" yang harus kita lakukan sekarang adalah menambahkan inst.pembaruan instruksi dan berikan jalan ke pembaruan.img file yang kami buat. Seandainya kickstart dan pembaruan.File IMG dapat diakses melalui HTTP di server lokal dengan IP 192.168.0.37, kami akan menulis:
vmlinuz initrd = initrd.IMG Inst.tahap2 = hd: label = fedora-s-dvd-x86_31-31 tenang inst.Pembaruan = http: // 192.168.0.37/pembaruan.IMG Inst.ks = http: // 192.168.0.37/ks.CFG

Pada titik ini kita dapat menekan enter untuk boot. Dengan modifikasi di atas penginstal tidak akan mengeluh lagi tentang
yang tidak terkunci Luks perangkat, dan instalasi akan dilanjutkan tanpa masalah.

Kesimpulan

Pada artikel ini kami melihat cara menyetel instalasi kickstart untuk menggunakan kembali yang sudah ada Luks perangkat, membuka kunci di %pra bagian dari file kickstart, dan bagaimana menerapkan solusi kecil ke fedora 31 installer anaconda yang jika tidak akan gagal ketika jenis instalasi tersebut dicoba. Jika Anda penasaran dengan sintaks kickstart, silakan lihat dokumentasi online.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Cara menginstal debian pada wadah Luks yang ada
  • Cara menginstal python komputasi ilmiah anaconda…
  • Cara melakukan instalasi linux tanpa pengawasan dengan kickstart
  • Cara menggunakan file sebagai kunci perangkat luks
  • Oracle Linux vs Red Hat (RHEL)
  • Unduh Linux
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada Ubuntu 22.04