B.5. Opsi tingkat lanjut

B.5.1. Menjalankan perintah ubahan selama instalasi

Opsi yang sangat kuat dan fleksibel yang ditawarkan oleh alat prakonfigurasi adalah kemampuan untuk menjalankan perintah atau skrip pada titik-titik tertentu dalam instalasi.

When the filesystem of the target system is mounted, it is available in /target. If an installation CD/DVD is used, when it is mounted it is available in /cdrom.

# d-i preseed secara inheren tidak aman. Tidak ada dalam pemasang yang
# memeriksa upaya buffer overflow atau eksploitasi lain dari nilai-nilai
# berkas prakonfigurasi seperti ini. Hanya gunakan berkas prakonfigurasi dari
# lokasi tepercaya! Untuk mengantarnya pulang, dan karena umumnya berguna,
# inilah cara untuk menjalankan perintah shell apa pun yang Anda inginkan
# di dalam pemasang, secara otomatis.

# Perintah pertama ini dijalankan sedini mungkin, tepat setelah
# preseed dibaca.
#d-i preseed/early_command string anna-install some-udeb
# Perintah ini dijalankan segera sebelum pemartisi dimulai. Mungkin saja
# berguna untuk menerapkan preseed partisi dinamis yang tergantung pada keadaan
# disk (yang mungkin tidak terlihat saat preseed/early_command berjalan).
#d-i partman/early_command \
#       string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
# Perintah ini dijalankan tepat sebelum instalasi selesai, tetapi ketika masih
# ada direktori /target yang dapat digunakan. Anda dapat chroot ke /target dan
# menggunakannya langsung, atau gunakan perintah apt-install dan in-target untuk
# memasang paket dengan mudah dan menjalankan perintah dalam sistem target.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

B.5.2. Menggunakan preseed untuk mengubah nilai baku

Dimungkinkan untuk menggunakan preseed agar mengubah jawaban baku untuk sebuah pertanyaan, tetapi masih memiliki pertanyaan yang diajukan. Untuk melakukan ini, bendera seen harus disetel ulang ke false setelah mengatur nilai untuk pertanyaan.

d-i foo/bar string value
d-i foo/bar seen false

Efek yang sama dapat dicapai untuk semua pertanyaan dengan mengatur parameter preseed/interactive=true pada prompt boot. Ini juga dapat berguna untuk menguji atau men-debug berkas prakonfigurasi Anda.

Perhatikan bahwa pemilik d-i hanya boleh digunakan untuk variabel yang digunakan dalam pemasang itu sendiri. Untuk variabel milik paket yang dipasang pada sistem target, Anda harus menggunakan nama paket itu sebagai gantinya. Lihat catatan kaki untuk Bagian B.2.2, “Menggunakan parameter boot untuk pertanyaan preseed”.

Jika Anda melakukan preseed menggunakan parameter boot, Anda dapat membuat pemasang mengajukan pertanyaan yang sesuai dengan menggunakan operator ?=, yaitu foo/bar?=nilai (atau pemilik:foo/bar?=nilai). Hal ini tentu saja hanya akan berpengaruh pada parameter yang sesuai dengan pertanyaan yang sebenarnya ditampilkan selama instalasi dan bukan untuk parameter internal.

Untuk informasi debug lebih lanjut, gunakan parameter boot DEBCONF_DEBUG=5. Ini akan menyebabkan debconf mencetak lebih banyak detail tentang pengaturan saat ini dari setiap variabel dan tentang kemajuannya melalui skrip instalasi masing-masing paket.

B.5.3. Memuat berkas prakonfigurasi berrantai

Dimungkinkan untuk menyertakan berkas prakonfigurasi lain dari suatu berkas prakonfigurasi. Pengaturan apa pun dalam berkas tersebut akan menggantikan pengaturan yang sudah ada sebelumnya dari berkas yang dimuat sebelumnya. Ini memungkinkan untuk meletakkan, misalnya, pengaturan jaringan umum untuk lokasi Anda dalam satu berkas dan pengaturan yang lebih spesifik untuk konfigurasi tertentu dalam berkas lain.

# Lebih dari satu berkas dapat dicantumkan, dipisahkan oleh spasi; semua
# akan dimuat. Berkas yang disertakan dapat memiliki direktif preseed/include
# mereka sendiri juga. Perhatikan bahwa jika nama berkas itu relatif, mereka
# diambil dari direktori yang sama dengan berkas prakonfigurasi yang
# menyertakannya.
#d-i preseed/include string x.cfg

# Pemasang dapat secara opsional memverifikasi checksum berkas prakonfigurasi
# sebelum menggunakannya. Saat ini hanya md5sum yang didukung, buat daftar
# md5sums dalam urutan yang sama dengan daftar berkas yang akan disertakan.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# Lebih fleksibel, ini menjalankan perintah shell dan jika mengeluarkan
# nama-nama berkas prakonfigurasi, sertakan berkas-berkas itu. 
#d-i preseed/include_command \
#      string if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Yang paling fleksibel dari semuanya, ini mengunduh program dan
# menjalankannya. Program dapat menggunakan perintah seperti debconf-set
# untuk memanipulasi basis data debconf. Lebih dari satu skrip dapat
# dicantumkan, dipisahkan oleh spasi. Perhatikan bahwa jika nama berkas
# itu relatif, mereka diambil dari direktori yang sama dengan berkas
# prakonfigurasi yang menjalankannya.
#d-i preseed/run string foo.sh

Dimungkinkan juga untuk chainload dari fase initrd atau berkas preseed, ke dalam preseed jaringan dengan mengatur preseed/url di berkas sebelumnya. Ini akan menyebabkan preseed jaringan dilakukan ketika jaringan muncul. Anda harus berhati-hati saat melakukan ini, karena akan ada dua eksekusi berbeda pada preseed, artinya misalnya Anda mendapatkan kesempatan lain untuk menjalankan perintah preseed/early, yang kedua terjadi setelah jaringan muncul.