12.3. Pemasangan Otomatis
Administrator Falcot Corp, seperti banyak administrator dari layanan TI yang besar, membutuhkan alat untuk menginstal (atau menginstal ulang) dengan cepat, dan secara otomatis jika mungkin, mesin-mesin baru mereka.
Persyaratan ini dapat dipenuhi oleh berbagai macam solusi. Di satu sisi, alat-alat generik seperti SystemImager menangani hal ini dengan menciptakan sebuah image yang didasarkan pada mesin templat, kemudian menyebarkan image ke sistem target; di ujung lain spektrum, penginstal Debian standar dapat diprabibit dengan berkas konfigurasi yang memberikan jawaban-jawaban untuk pertanyaan-pertanyaan yang ditanyakan selama proses instalasi. Sebagai semacam jalan tengah, alat hibrida seperti FAI (Fully Automatic Installer) menginstal mesin menggunakan sistem pemaketan, tetapi juga menggunakan infrastrukturnya sendiri untuk tugas-tugas yang lebih spesifik bagi penyebaran masif (seperti memulai, mempartisi, mengkonfigurasi, dan seterusnya).
Masing-masing solusi ini memiliki pro dan kontra: SystemImager bekerja secara independen dari sebarang sistem pemaketan tertentu, yang memungkinkan untuk mengatur set besar mesin menggunakan beberapa distro Linux yang berbeda. Ini juga mencakup sebuah sistem pemutakhiran yang tidak memerlukan instalasi ulang, tapi sistem pemutakhiran ini hanya dapat diandalkan jika mesin tidak diubah secara independen; dengan kata lain, pengguna harus tidak memperbarui perangkat lunak mereka sendiri, atau memasang perangkat lunak lainnya. Demikian pula, pembaruan keamanan harus tidak otomatis, karena mereka harus pergi melalui image referensi terpusat yang dikelola oleh SystemImager. Solusi ini juga memerlukan mesin target yang homogen, bila tidak banyak image yang berbeda mesti disimpan dan dikelola (image i386 tidak akan cocok pada mesin powerpc, dan sebagainya).
Di sisi lain, instalasi otomatis menggunakan debian-installer dapat beradaptasi dengan spesifik dari setiap mesin: pemasang akan mengambil paket kernel dan perangkat lunak yang sesuai dari repositori yang relevan, mendeteksi perangkat keras yang tersedia, mempartisi seluruh hard disk untuk mengambil keuntungan dari semua ruang yang tersedia, memasang sistem Debian yang sesuai, dan mengatur sebuah bootloader yang sesuai. Namun, pemasang standar hanya akan memasang versi Debian standar, dengan sistem dasar dan satu set "tugas" yang terprapilih; ini menghalang memasang sistem tertentu dengan aplikasi yang tidak dipaketkan. Memenuhi kebutuhan khusus ini memerlukan penyesuaian pemasang… Untungnya, pemasang sangat modular, dan ada alat untuk mengotomasi kebanyakan pekerjaan yang diperlukan untuk kustomisasi ini, yang paling penting simple-cdd (CDD adalah singkatan Custom Debian Derivative). Bahkan solusi ini, bagaimanapun, hanya menangani instalasi awal; hal ini biasanya tidak masalah karena perangkat APT memungkinkan penggelaran pemutakhiran yang efisien nanti.
Kita hanya akan memberikan gambaran kasar FAI, dan melewati SystemImager sama sekali (yang tidak ada lagi di Debian, tapi tersedia sebagai paket pihak ketiga), agar fokus lebih bersungguh-sungguh pada debian-installer dan simple-cdd, yang lebih menarik dalam konteks hanya Debian.
12.3.1. Fully Automatic Installer (FAI, Pemasang Otomatis Sepenuhnya)
Fully Automatic Installer mungkin adalah sistem penggelaran otomatis tertua untuk Debian, yang menjelaskan statusnya sebagai referensi; tetapi sifatnya yang sangat fleksibel hanya mengkompensasi kompleksitas yang melibatkannya.
FAI memerlukan sebuah sistem server untuk menyimpan informasi penggelaran dan memungkinkan mesin target untuk boot dari jaringan. Server ini memerlukan paket fai-server (atau fai-quickstart, yang juga membawa elemen-elemen yang diperlukan untuk sebuah konfigurasi standar).
FAI menggunakan pendekatan khusus untuk menentukan berbagai profil yang dapat dipasang. Bukan hanya menduplikasi sebuah referensi instalasi, FAI adalah sebuah pemasang penuh, sepenuhnya dikonfigurasi melalui serangkaian berkas dan skrip yang disimpan di server; lokasi baku /srv/fai/config/
menurut /etc/fai/nfsroot.conf
tidak secara otomatis diciptakan, sehingga administrator perlu menciptakannya beserta berkas-berkas yang relevan. Hampir setiap kali, berkas-berkas ini akan disesuaikan dari berkas contoh yang tersedia dalam dokumentasi untuk paket fai-doc, khususnya direktori /usr/share/doc/fai-doc/examples/simple/
.
Sekali profil didefinisikan, perintah fai-setup
menghasilkan unsur-unsur yang diperlukan untuk memulai instalasi FAI; ini sebagian besar berarti mempersiapkan atau memperbarui sistem minimal (NFS-root) yang digunakan selama instalasi. Satu alternatif adalah untuk menghasilkan CD boot terdedikasi dengan fai-cd
.
Menciptakan semua berkas konfigurasi ini memerlukan pemahaman tentang cara FAI bekerja. Suatu proses instalasi biasanya tersusun dari langkah-langkah berikut:
mengambil sebuah kernel dari jaringan, dan mem-boot itu;
mengait sistem berkas root dari NFS;
mengeksekusi /usr/sbin/fai
, yang mengontrol seluruh proses (langkah berikutnya karena itu diprakarsai oleh skrip ini);
menyalin ruang konfigurasi dari server ke /fai/
;
menjalankan fai-class
. Skrip /fai/class/[0-9][0-9]*
dijalankan sesuai gilirannya, dan mengembalikan nama "kelas" yang berlaku untuk mesin yang diinstal; informasi ini akan berfungsi sebagai dasar untuk langkah-langkah berikut. Hal ini memungkinkan untuk beberapa fleksibilitas dalam mendefinisikan layanan yang akan diinstal dan dikonfigurasi.
mengambil sejumlah variabel konfigurasi, tergantung pada kelas yang relevan;
mempartisi disk dan memformat partisi, berdasarkan informasi yang diberikan dalam /fai/disk_config/kelas
;
mengaitkan partisi yang disebut;
memasang sistem dasar;
memprabibit basis data Debconf dengan fai-debconf
;
mengambil daftar paket yang tersedia untuk APT;
menginstal paket-paket yang tercantum dalam /fai/package_config/kelas
;
menjalankan skrip pasca konfigurasi, /fai/scripts/kelas/[0-9][0-9]*
;
merekam log instalasi, melepas kait partisi, dan reboot.
12.3.2. Memprabibit Debian-Installer
Pada akhirnya, alat yang terbaik untuk memasang sistem Debian secara logis mestinya adalah Debian installer yang resmi. Inilah mengapa, sejak dari awal, debian-installer telah dirancang untuk penggunaan otomatis, mengambil keuntungan dari infrastruktur yang disediakan oleh debconf. Yang kedua memungkinkan, di satu sisi, untuk mengurangi jumlah pertanyaan yang diajukan (pertanyaan-pertanyaan tersembunyi akan menggunakan jawaban baku yang disediakan), dan di sisi lain, untuk menyediakan jawaban baku secara terpisah, sehingga instalasi bisa non-interaktif. Fitur terakhir ini dikenal sebagai preseed.
12.3.2.1. Menggunakan Berkas Preseed
Ada beberapa tempat dimana installer bisa memperoleh berkas preseed:
di initrd yang digunakan untuk memulai mesin; dalam kasus ini, prabibit terjadi pada awal instalasi, dan semua pertanyaan dapat dihindari. Berkas hanya perlu disebut preseed.cfg
dan disimpan dalam root initrd.
pada media boot (CD atau kunci USB); prabibit kemudian terjadi segera setelah media dipasang, yang berarti tepat setelah pertanyaan tentang bahasa dan tata letak papan ketik. Parameter boot preseed/file
dapat digunakan untuk menunjukkan lokasi berkas prabibit (misalnya, /cdrom/preseed.cfg
ketika instalasi dilakukan dari CD-ROM, atau /hd-media/preseed.cfg
dalam kasus kunci USB).
dari jaringan; preseed kemudian hanya terjadi setelah jaringan (secara otomatis) dikonfigurasi; parameter boot yang relevan adalah kemudian preseed/url=http://server/preseed.cfg
(HTTPS, FTPS, SFTP, dsb. tidak didukung).
Sekilas, menyertakan berkas prabibit di initrd tampak seperti solusi yang paling menarik; namun, ini jarang digunakan dalam praktek, karena menghasilkan installer initrd agak rumit. Kedua solusi yang lain lebih umum, terutama karena parameter boot menyediakan cara lain untuk memprabibit jawaban atas pertanyaan pertama dari proses instalasi. Cara yang biasa untuk menghindari kerepotan mengetik parameter boot ini di setiap instalasi adalah dengan menyimpan mereka ke dalam konfigurasi untuk isolinux
(dalam kasus CD-ROM) atau syslinux
(kunci USB).
12.3.2.2. Membuat Berkas Preseed
Prabibit adalah berkas teks biasa, dimana setiap baris berisi jawaban atas satu pertanyaan Debconf. Baris dipecah ke empat bidang yang dipisahkan oleh spasi atau tab, seperti, misalnya, d-i mirror/suite string stable
:
bidang pertama adalah "pemilik" pertanyaan; "d-i" digunakan untuk pertanyaan-pertanyaan yang relevan dengan installer, tetapi juga bisa berupa nama paket untuk pertanyaan-pertanyaan yang datang dari paket-paket Debian;
ruas kedua adalah pengidentifikasi untuk pertanyaan (nama templat);
ketiga, jenis pertanyaan;
ke empat dan ruas terakhir memuat nilai untuk jawaban. Perhatikan bahwa ini harus dipisahkan dari ruas ke tiga dengan satu spasi; jika ada lebih dari satu, karakter spasi yang mengikuti dianggap bagian dari nilai.
Cara termudah untuk menulis berkas preseed adalah untuk menginstal sebuah sistem dengan tangan. Kemudian debconf-get-selections --installer
akan memberikan jawaban tentang installer. Jawaban tentang paket lainnya dapat diperoleh dengan debconf-get-selections
. Namun, solusi yang lebih bersih adalah dengan menulis berkas preseed dengan tangan, mulai dari contoh dan dokumentasi referensi: dengan pendekatan seperti itu, hanya pertanyaan yang jawaban bakunya perlu ditimpa dapat diprabibit; menggunakan parameter boot priority=critical
akan menginstruksikan Debconf untuk hanya mengajukan pertanyaan yang kritis, dan menggunakan jawaban baku bagi yang lain.
Pra-pengaturan nilai dalam berkas preseed secara otomatis menginstruksikan pemasang Debian untuk tidak mengajukan pertanyaan itu. Ini terjadi, karena memuat berkas preseed tidak hanya menetapkan nilai yang diberikan, tetapi juga menandai setiap dialog yang terpengaruh sebagai "dilihat" oleh pengguna. Dengan demikian dimungkinkan untuk mengatur nilai pertanyaan sebelumnya dan masih menyajikan dialog kepada pengguna dengan mengatur ulang bendera "terlihat". Berhati-hatilah bahwa urutan dalam hal ini penting dan bahwa nilai harus didahulukan sebelum mengatur dialog ke "tidak terlihat" seperti yang ditunjukkan dalam contoh berikut:
d-i netcfg/hostname string worker
d-i netcfg/hostname seen false
12.3.2.3. Membuat sebuah Media Boot Ubahan
Mengetahui di mana untuk menyimpan berkas preseed itu baik, tapi lokasi bukan segalanya: kita harus, dengan satu cara atau lainnya, mengubah media boot instalasi untuk mengubah parameter boot dan menambahkan berkas preseed.
12.3.2.3.1. Boot dari Jaringan
Ketika komputer di-boot dari jaringan, server mengirimkan elemen inisialisasi juga mendefinisikan parameter boot. Dengan demikian, perubahan perlu dibuat dalam konfigurasi PXE untuk server boot; lebih khusus lagi, dalam berkas konfigurasi
/tftpboot/pxelinux.cfg/default
. Pengaturan boot jaringan merupakan prasyarat; lihat Panduan Instalasi untuk rincian.
12.3.2.3.2. Mempersiapkan sebuah Flash Disk USB yang Dapat Di-boot
Setelah flash disk yang dapat di-boot disiapkan (lihat
Bagian 4.1.2, “Mem-boot dari Flash Disk USB”), beberapa operasi tambahan diperlukan. Dengan asumsi konten utama tersedia di bawah
/media/usbdisk/
, salin berkas preseed ke
/media/usbdisk/preseed.cfg
.
Jika Anda telah menggunakan image ISO hibrida untuk membuat flash disk USB yang dapat di-boot, maka Anda harus menyunting /media/usbdisk/boot/grub/grub.cfg
(untuk layar boot EFI):
Contoh 12.2. berkas boot/grub/grub.cfg dan parameter preseed
menuentry --hotkey=i 'Install' {
set background_color=black
linux /install.amd/vmlinuz preseed/file=/cdrom/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 --- quiet
initrd /install.amd/initrd.gz
}
Dan Anda harus mengedit /media/usbdisk/isolinux/isolinux.cfg
(untuk boot BIOS) atau salah satu berkas yang digunakannya - misalnya /media/usbdisk/isolinux/txt.cfg
- untuk menambahkan parameter boot yang diperlukan:
Contoh 12.3. berkas isolinux/txt.cfg dan parameter preseed
label install
menu label ^Install
kernel [...]
append preseed/file=/cdrom/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 initrd=/install.amd/initrd.gz --- quiet
Jika Anda telah menggunakan gambar pemasang hd-media
untuk flash disk USB khusus, sunting /media/usbdisk/syslinux.cfg
dan tambahkan parameter boot yang diperlukan seperti yang ditunjukkan pada contoh di bawah ini:
Contoh 12.4. berkas syslinux.cfg dan parameter preseed
default vmlinuz
append preseed/file=/hd-media/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 initrd=initrd.gz --
12.3.2.3.3. Membuat suatu Image CD-ROM
Kunci USB adalah media baca-tulis, jadi mudah bagi kita untuk menambahkan berkas ke sana dan mengubah beberapa parameter. Dalam kasus CD-ROM, operasi lebih kompleks, karena kita perlu melakukan regenerasi image ISO penuh. Tugas ini ditangani oleh debian-cd, tapi alat ini agak aneh untuk digunakan: dibutuhkan cermin lokal, dan itu memerlukan pemahaman tentang semua pilihan yang disediakan oleh /usr/share/debian-cd/CONF.sh
; bahkan kemudian, make
harus dipanggil beberapa kali. /usr/share/debian-cd/README
sangat dianjurkan untuk dibaca.
Setelah itu semua, debian-cd selalu beroperasi dengan cara yang sama: direktori "image" dengan isi eksak CD-ROM dibuat, lalu dikonversi ke berkas ISO dengan alat seperti genisoimage
, mkisofs
, atau xorriso
. Direktori image diselesaikan setelah langkah make image-trees
debian-cd. Pada saat itu, kita menyisipkan berkas preseed ke dalam direktori yang sesuai (biasanya $TDIR/$CODENAME/CD1/
, $TDIR dan $CODENAME adalah parameter yang didefinisikan oleh berkas konfigurasi CONF.sh
). CD-ROM menggunakan isolinux
sebagai bootloader, dan berkas konfigurasinya harus diadaptasi dari apa yang dihasilkan oleh debian-cd, untuk memasukkan parameter boot yang diperlukan (berkas tepatnya adalah $TDIR/$CODENAME/boot1/isolinux/isolinux.cfg
dan $TDIR/$CODENAME/CD1/boot/grub/grub.cfg
seperti ditunjukkan di atas). Kemudian proses "normal" dapat dilanjutkan, dan kita dapat meneruskan menghasilkan image ISO dengan make image CD=1
(atau make images
jika ada beberapa CD-ROM yang dihasilkan).
12.3.3. Simple-CDD: Solusi Semua-Jadi-Satu
Hanya menggunakan berkas preseed ini tidak cukup untuk memenuhi semua persyaratan yang mungkin muncul untuk penggelaran besar. Meskipun dimungkinkan untuk mengeksekusi beberapa skrip pada akhir proses penginstalan normal, pemilihan set paket yang akan diinstal ini tetap tidak cukup fleksibel (pada dasarnya, hanya "task" yang dapat dipilih); lebih penting, ini hanya memungkinkan menginstal paket-paket Debian yang resmi, dan mencegah dipasangnya yang dihasilkan secara lokal.
Di sisi lain, debian-cd mampu mengintegrasikan paket eksternal, dan debian-installer dapat diperluas dengan memasukkan langkah-langkah baru dalam proses instalasi. Dengan menggabungkan kemampuan-kemampuan ini, seharusnya mungkin untuk menciptakan sebuah pemasang yang disesuaikan yang memenuhi kebutuhan kita; itu bahkan dapat mengonfigurasi beberapa layanan setelah membuka paket yang diperlukan. Untungnya, hal ini tidak hanya sebuah hipotesis, karena ini adalah persis apa yang dilakukan oleh simple-cdd.
Tujuan alat ini adalah untuk memungkinkan orang dengan mudah membuat distribusi yang berasal dari Debian, dengan memilih subset dari paket yang tersedia, memprakonfigurasi mereka dengan Debconf, menambahkan perangkat lunak khusus, dan menjalankan skrip-skrip ubahan pada akhir proses instalasi. Ini sesuai dengan filosofi "sistem operasi universal", karena siapa pun dapat mengadaptasi ke kebutuhan mereka sendiri.
12.3.3.1. Menciptakan Profil
Simple-CDD mendefinisikan "profil" yang sesuai dengan konsep "kelas" FAI, dan sebuah mesin dapat memiliki beberapa profil (yang ditentukan pada saat instalasi). Profil didefinisikan oleh satu set berkas profiles/profil.*
:
berkas .description
berisi satu baris deskripsi untuk profil;
berkas .packages
berisi daftar paket yang akan secara otomatis diinstal jika profil dipilih;
berkas .downloads
berisi daftar paket yang akan disimpan ke media instalasi, tetapi tidak harus diinstal;
berkas .preseed
berisi informasi preseed untuk pertanyaan Debconf (untuk installer dan atau paket);
berkas .postinst
berisi skrip yang akan dijalankan pada akhir proses instalasi;
terakhir, berkas .conf
memungkinkan mengubah beberapa parameter berdasarkan profil yang akan dimasukkan dalam image.
Profil default
memiliki peran tertentu, karena selalu dipilih; ini berisi minimal yang diperlukan oleh Simple-CDD untuk bekerja. Satu-satunya hal yang biasanya disesuaikan dalam profil ini adalah parameter preseed simple-cdd/profiles
: hal ini memungkinkan menghindari pertanyaan, diperkenalkan oleh Simple-CDD, tentang profil apa yang akan dipasang.
Perhatikan juga bahwa perintah akan perlu dijalankan dari direktori induk direktori profil
.
12.3.3.2. Mengkonfigurasi dan Menggunakan build-simple-cdd
Simple-CDD memerlukan banyak parameter untuk beroperasi secara penuh. Mereka akan paling sering dikumpulkan dalam berkas konfigurasi, yang dapat diarahkan ke build-simple-cdd
dengan opsi --conf
, tetapi mereka dapat juga ditentukan melalui parameter khusus yang diberikan kepada build-simple-cdd
. Berikut ini adalah gambaran bagaimana perintah ini berperilaku, dan bagaimana parameternya digunakan:
parameter profil
memuat daftar profil yang akan disertakan pada CD-ROM image yang dihasilkan;
berdasarkan daftar paket yang diperlukan, Simple-CDD mengunduh berkas-berkas yang sesuai dari server yang disebutkan di server
, dan mengumpulkan mereka menjadi cermin parsial (yang akan kemudian diberikan kepada debian-cd);
paket ubahan yang dicantumkan dalam local_packages
juga diintegrasikan ke dalam cermin lokal ini;
debian-cd kemudian dijalankan (dalam lokasi baku yang dapat dikonfigurasi dengan variabel debian_cd_dir
), dengan daftar paket untuk diintegrasikan;
setelah debian-cd menyiapkan direktorinya, Simple-CDD menerapkan beberapa perubahan ke direktori ini:
berkas yang berisi profil ditambahkan dalam subdirektori simple-cdd
(yang akan berakhir pada CD-ROM);
berkas lain yang tercantum dalam all_extras
parameter juga ditambahkan;
parameter boot disesuaikan sehingga memungkinkan preseed. Pertanyaan mengenai bahasa dan negara dapat dihindari jika informasi yang diperlukan disimpan dalam variabel language
dan country
.
debian-cd kemudian menghasilkan image ISO akhir.
12.3.3.3. Menghasilkan suatu Image ISO
Setelah kita menulis berkas konfigurasi dan mendefinisikan profil, langkah yang tersisa adalah untuk menjalankan build-simple-cdd --conf simple-cdd.conf
. Setelah beberapa menit, kita mendapatkan image yang diperlukan di images/debian-11-amd64-CD-1.iso
.