GNU/Linux >> Belajar Linux >  >> Cent OS

Cara menginstal Fedora/RHEL/CentOS melalui kickstart pada perangkat LUKS yang ada

Instalasi Kickstart memungkinkan kami dengan mudah membuat skrip dan mereplikasi instalasi Fedora, Red Hat Enterprise Linux, atau CentOS tanpa pengawasan atau semi-tanpa pengawasan. 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 LUKS yang sudah ada (Linux Unified Keys Setup) wadah 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 mempelajari:

  • Cara menggunakan wadah LUKS yang ada saat melakukan instalasi Kickstart Fedora, RHEL atau CentOS
  • Cara membuat dan menggunakan file update.img untuk 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 tentang LUKS (Linux Unified Key Setup) dan perintah cryptsetup.
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Pengantar

Kickstart memungkinkan kami dengan mudah mereplikasi dan menyesuaikan instalasi sistem operasi dengan cara yang tidak mungkin dicapai dari penginstal grafis Anaconda. Kita dapat, misalnya, mendeklarasikan paket atau grup paket apa yang harus diinstal pada sistem dan apa yang harus dikecualikan.

Kami juga memiliki kesempatan untuk menjalankan perintah khusus sebelum atau setelah penginstalan dilakukan, dengan menetapkannya di dalam %pre khusus dan %post bagian dari file Kickstart masing-masing. Kami akan memanfaatkan fitur yang disebutkan terakhir ini untuk menggunakan LUKS yang sudah ada perangkat selama proses instalasi.

Enkripsi dengan sintaks Kickstart asli

Membuat container LUKS cukup mudah, dan dapat dilakukan hanya dengan menggunakan instruksi awal yang asli. Ini contohnya:

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

Pada contoh di atas, dengan menggunakan part instruksi, kami membuat lvm terenkripsi volume fisik pada /dev/sda disk. Kami menentukan LUKS versi yang akan digunakan (luks1 dalam hal ini – setidaknya dalam versi terbaru Fedora luks2 telah menjadi default), cipher , dan waktu, yang dinyatakan dalam milidetik, yang dihabiskan untuk PBKDF (Fungsi Derivasi Kunci Berbasis Kata Sandi) pemrosesan frasa sandi (sama dengan menggunakan --iter-time opsi cryptsetup ).

Meskipun  itu bukan kebiasaan yang aman, kami juga menggunakan --passphrase untuk memberikan frasa sandi enkripsi:tanpa opsi ini, proses penginstalan akan terganggu, dan kami akan diminta untuk memberikannya secara interaktif.

Kami dapat dengan jelas melihat bagaimana, dengan menggunakan Kickstart, kami mendapatkan lebih banyak fleksibilitas dibandingkan dengan instalasi tradisional; mengapa kita perlu melakukan langkah-langkah ekstra, lalu? Masih ada beberapa tugas yang tidak dapat kami capai hanya dengan menggunakan sintaks Kickstart standar. Antara lain, kami tidak dapat membuat LUKS container pada perangkat mentah (hanya pada partisi) atau tentukan algoritme hashing yang akan 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 parted di dalam %pre bagian dari file kickstart itu sendiri. Kami mungkin juga hanya memiliki LUKS pengaturan yang tidak ingin kami hancurkan. Dalam semua kasus ini, kita harus melakukan langkah ekstra yang akan kita lihat sebentar lagi.

Bagian awal %pra

%pre bagian dari file kickstart adalah yang pertama diurai saat file diambil. Ini digunakan untuk menjalankan perintah khusus sebelum penginstalan dimulai dan harus ditutup secara eksplisit dengan %end instruksi.

Di %pre , penerjemah bash shell digunakan secara default, tetapi yang lain dapat ditentukan melalui --interpreter opsi (untuk menggunakan python kita akan menulis %pre --interpreter /usr/bin/python ). Kita dapat menggunakan bagian ini untuk menjalankan perintah yang diperlukan untuk membuka LUKS . yang ada wadah. Berikut yang dapat kami tulis:

%pre
iotty="$(tty)"
exec > "${iotty}" 2> "${iotty}"

while true; do
  cryptsetup luksOpen /dev/sda1 cryptroot - && break
done
%end

Mari kita lihat kode di atas. Pertama-tama, kita simpan 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 kami akan dapat memasukkan kata sandi wadah ketika crytpsetup luksOpen perintah akan dijalankan dan prompt akan ditampilkan di layar. Perintah diluncurkan dalam loop tak terbatas yang terputus hanya jika LUKS penampung berhasil dibuka.

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

%pre
echo -n "ourverysecretpassphrase" | cryptsetup luksOpen /dev/sda1 cryptroot -
%end

Pada contoh di atas, kami meneruskan frasa sandi ke input standar dari perintah cryptsetup melalui pipa | :kami menggunakan echo perintah dengan -n opsi untuk menghindari karakter baris baru ditambahkan di akhir frasa sandi.

Menambal pemasang anaconda Fedora 31

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

Perangkat LUKS yang tidak terkunci yang ada tidak dapat digunakan untuk penginstalan tanpa kunci enkripsi yang ditentukan untuk
perangkat ini. Harap pindai ulang penyimpanan.

Ini terjadi karena komit ini diperkenalkan di versi Fedora 31 dari penginstal Anaconda. Kode pada dasarnya memeriksa bahwa perangkat LUKS yang ada memiliki kunci terdaftar, jika tidak, instalasi dibatalkan. Masalahnya adalah blivet , pustaka python yang digunakan oleh Anaconda untuk mengelola partisi memperoleh kunci hanya jika wadah dibuka olehnya:ini dapat dilakukan dari penginstal grafis tetapi tidak, pada saat penulisan, instruksi Kickstart untuk membuka kunci  LUKS wadah. Saya pribadi mengomentari komit yang menjelaskan situasinya, dan sebuah bug telah dibuka di bugzilla topi merah.

Membuat file update.img

Saat ini satu-satunya solusi (yang saya tahu) adalah menambal kode sumber Anaconda, mengomentari baris yang menjalankan kontrol yang diperkenalkan dengan komit yang kami sebutkan di atas. Kabar baiknya adalah pengoperasiannya sangat mudah.

Sebagai hal pertama, kita perlu mengkloning repositori git Anaconda, khususnya f31-release cabang:

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

Setelah repo dikloning, kita masukkan anaconda direktori dan ubah pyanaconda/storage/checker.py file:yang harus kita lakukan adalah mengomentari baris 619 :

def set_default_checks(self):
        """Set the default checks."""
        self.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)
       #self.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)

Kami menyimpan modifikasi dan, dari root repositori, kami meluncurkan makeupdates skrip yang ditemukan di scripts direktori. Untuk skrip yang akan dieksekusi kita harus memiliki python2 terpasang:

$ ./scripts/makeupdates

Script akan menghasilkan updates.img file yang akan berisi modifikasi kami. Untuk mengecek isinya kita bisa menggunakan lsinitrd perintah:

$ lsinitrd updates.img
Image: updates.img: 8.0K
========================================================================
Version:

Arguments:
dracut modules:
========================================================================
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/install
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run/install/updates
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run/install/updates/pyanaconda
drwxr-xr-x   2 egdoc    egdoc           0 Jan 30 09:29 run/install/updates/pyanaconda/storage
-rw-r--r--   1 egdoc    egdoc       25443 Jan 30 09:29 run/install/updates/pyanaconda/storage/checker.py
========================================================================

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

Menerapkan patch

Untuk menerapkan modifikasi yang terkandung dalam file yang baru saja kita buat, kita perlu menempatkannya di suatu tempat di mana kita dapat dengan mudah mengaksesnya, mungkin melalui ftp atau http, atau bahkan pada perangkat blok lokal, dan menggunakan inst.updates 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.updates instruksi dan berikan jalur ke updates.img file yang kita buat. Misalkan file Kickstart dan update.img dapat diakses melalui http pada server lokal dengan ip 192.168.0.37, kita akan menulis:
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=Fedora-S-dvd-x86_31-31 quiet
inst.updates=http://192.168.0.37/updates.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
LUKS yang tidak terkunci perangkat, dan penginstalan akan dilanjutkan tanpa masalah.

Kesimpulan

Dalam artikel ini kita melihat cara menyetel instalasi kickstart untuk menggunakan kembali LUKS yang sudah ada perangkat, membukanya di %pre bagian dari file kickstart, dan cara menerapkan solusi kecil ke penginstal Fedora 31 Anaconda yang jika tidak, akan gagal ketika jenis penginstalan tersebut dicoba. Jika Anda penasaran dengan sintaks Kickstart, silakan lihat dokumentasi online.


Cent OS
  1. Cara Memasang Google Chrome 17 di Fedora 16, CentOS 6 / RHEL 6

  2. Cara Menginstal Python 3.5 di CentOS/RHEL dan Fedora

  3. Cara menginstal buruh pelabuhan di CentOS / RHEL / Fedora

  1. Cara Memasang File RPM Di OS Linux (CentOS, RHEL, &Fedora)

  2. Cara menginstal phpMyAdmin di RHEL 8 / CentOS 8

  3. Bagaimana cara mengekstrak paket 7z di CentOS/RHEL/Fedora?

  1. Cara Menginstal P7Zip di RHEL 8 / CentOS 8

  2. Cara menginstal ntfs-3g di RHEL 8 / CentOS 8

  3. Cara Menginstal PHP-mbstring di RHEL 8 / CentOS 8