Presssed ile katılımsız Debian kurulumları nasıl gerçekleştirilir?

Preseed, RedHat dağıtım ailesi için Kickstart’ın ve Ubuntu için “otomatik kurulum”un eşdeğeridir. Bir “preseed” dosya hazırlayıp bu dosyayı Debian yükleyicisi tarafından sorulan soruların yanıtlarıyla doldurarak, gözetimsiz ve tekrarlanabilir Debian kurulumları gerçekleştirebiliriz. Bu eğitimde, önceden hazırlanmış bir dosyanın nasıl oluşturulacağını veya mevcut bir kurulumdan nasıl oluşturulacağını ve bunun Debian yükleyicisine nasıl aktarılacağını öğreniyoruz.

 

Mevcut bir Debian kurulumundan önceden hazırlanmış bir dosya edinme

Geçerli bir preseed dosyası edinmenin en kolay yolu ile başlayalım. Halihazırda bir Debian kurulumu gerçekleştirdiğimizi varsayarsak, yükleyiciye verdiğimiz yanıtları içeren preseed dosyasını elde etmek için, debconf-utils paketinin bir parçası olan debconf-get-selections yardımcı programını kullanabiliriz. İkincisinin kurulu olduğundan emin olmak için şunu çalıştırabiliriz:

$ sudo apt-get update && sudo apt-get install debconf-utils

 



Yardımcı program yüklendikten sonra, önceden hazırlanmış dosyayı elde etmek için aşağıdaki komutu çalıştırırız: 

$ sudo debconf-get-selections --installer > preseed.cfg

Yukarıdaki örnekte komutun çıktısını preseed.cfg adlı bir dosyaya yönlendirdik; bu, kurulumu kopyalamak için kullanılabilir ve Debian yükleyicisinde manuel olarak yaptığımız seçimleri tekrarlayacaktır. Kuşkusuz, verimli olmasına rağmen dosya oldukça ayrıntılı olabilir. Minimum içerikle nasıl bir tane oluşturulacağını görelim.

Sıfırdan bir preseed dosyası oluşturma

Sıfırdan bir preseed dosyasının nasıl oluşturulacağını görelim. Yaklaşım olarak, ana Debian kurulum adımlarını inceleyeceğiz ve soruları önceden hazırlanmış yapılandırma dosyasındaki talimatlar aracılığıyla yanıtlamaya çalışacağız.

“Grafik Kurulum” seçeneğini seçerek Debian kurulumunu yaptığımızda kurulumcunun bize sorduğu ilk soru sistem için hangi dilin kullanılması gerektiği (İngilizce varsayılan seçimdir), konumumuz ve istenen klavye düzenidir. Preseed dosyamızın içinde bu soruların yanıtlarını aşağıdaki talimatlarla sağlayabiliriz:

d-i debian-installer/language string en
d-i debian-installer/country string US
d-i keyboard-configuration/xkb-keymap select us

Yükleyici yanıtlarını sağlarken kullanmamız gereken sözdizimi, debconf-set-selections yardımcı programı tarafından kullanılan sözdizimidir:

<owner> <question-name> <question-type> <value>

İlk alanda sorunun “sahibini” yani cevabı kimin yöneteceğini belirtiyoruz. Çoğu durumda, önceden hazırlanmış dosyada bu, Debian-Installer anlamına gelen “di” olacaktır. İkinci alan soru adını, üçüncü alan ise soru türünü içerir. Son olarak dördüncü alan ise sorunun cevabını yani değeri içeriyor.

Ağı yapılandırma

Devam edelim. Standart Debian kurulumundaki bir sonraki adım ağ yapılandırmasıdır. Yükleyici bizden sistemimiz için bir ana bilgisayar adı ve isteğe bağlı bir etki alanı sağlamamızı ister ve en azından “gelişmiş olmayan” kurulum modunda, LAN’da varsa bir DHCP sunucusu kullanarak ağı otomatik olarak yapılandırır. Burada örnek olarak host adı olarak “linuxconfig” kullanacağız ve domain alanını boş bırakacağız. Preseed dosyamızda, bu seçenekleri aşağıdaki talimatları ekleyerek çeviriyoruz:

d-i netcfg/get_hostname string linuxconfig
d-i netcfg/get_domain string

 



Bazı durumlarda ağı DHCP sunucusuna bağlı kalmadan statik olarak yapılandırmak isteyebiliriz. Aşağıdaki örnekte yer alan talimatlar, önceden hazırlanmış bir dosyaya eklendiğinde ağ otomatik yapılandırmasını devre dışı bırakır, açıkça bir ağ arabirimi (bu durumda “eth0”) seçer ve ona bir IP adresi atar. Ağ maskesi değeri, ağ geçidi ve ad sunucusu adresleriyle birlikte statik olarak atanır. Son talimat, bu seçimleri sorulmadan onaylamak için gereklidir: 

d-i netcfg/disable_autoconfig boolean true
d-i netcfg/choose_interface select eth0
d-i netcfg/get_ipaddress string 192.168.122.150
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.122.1
d-i netcfg/get_nameservers string 192.168.122.1
d-i netcfg/confirm_static boolean true

Ön dağıtım dosyasında rapor edilen ağ talimatlarının yalnızca önceden dağıtım dosyasının kendisi ağdan (örneğin bir web sunucusundan) alınmazsa etkili olacağını unutmamak önemlidir. Bu tipik bir tavuk-yumurta sorunudur: Ağı yapılandırma talimatlarını içeren önceden hazırlanmış dosyayı getirmek için ağın kendisinin zaten yapılandırılmış olması gerekir. Bir DHCP sunucusu kullanarak veya göreceğimiz gibi ağ yapılandırma talimatlarını önyükleme argümanları olarak sağlayarak bu sorunu çözebiliriz.

Sistem kullanıcılarını yapılandırma

İşletim sistemi kurulumundaki bir sonraki adım, kullanıcıların ve şifrelerin ayarlanmasından oluşur. Normalde root şifresini boş bırakmak ve standart kullanıcı bilgilerini sağlamak isteriz: “tam adı” (“gerçek” adı), kullanıcı adı ve şifresi. Bu, kök hesabı kilitleyecek ve sudo kullanarak yönetim görevlerini gerçekleştirmemize izin verecektir. Preseed dosyasında şunu yazarak tercüme ediyoruz:

d-i passwd/root-login boolean false
d-i passwd/user-fullname string egidio
d-i passwd/username string egidio
d-i passwd/user-password-crypted password $6$GjYHPm0qkEd/Ijea$msrqFWfBzuVsVtlTbD.8mbRTq3I5lBegbv1ZtNMse5YyTohQIrMoz.m37lMzVwEm75Klp9bCVU12ySg.7twFj0

Yükleyicide şifreyi açık bir şekilde sağlarken, ön tohumlama dosyasında bunu sha512 algoritmasını kullanarak karma biçiminde sağlamamız gerektiğine dikkat edin.  en hızlı yöntemlerinden biri mkpasswd yardımcı programını kullanmaktır:

$ mkpasswd -m sha512crypt

Yukarıdaki komutu çalıştırdığımızda, yardımcı program bizden şifremizi girmemizi isteyecek ve  sürümün çıktısını verecektir. Parolayı doğrudan argüman olarak da verebiliriz, ancak bu işlem listelerinde görünmesini sağlayabilir ve aynı zamanda kabuk geçmişimize de kaydedilebilir. Eğer preseed dosyasında şifreyi sağlamayı atlarsak, kurulumcu diğer eksik bilgiler gibi şifreyi de etkileşimli olarak isteyecektir.

Bir saat dilimi belirtme

Bir sonraki adımda yükleyici bizden sistem saat dilimini seçmemizi ister. Örneğin ABD “Doğu” saat dilimini seçmek için şunu yazabiliriz:

d-i time/zone string US/Eastern

Diski bölümleme

Diskin bölümlenmesi muhtemelen kurulum sürecinin en önemli parçasıdır ve aynı zamanda preseed dosyasında raporlanması en karmaşık olanlardan biri olabilir. Debian yükleyicisi varsayılan olarak üç rehberli bölümleme “yöntemi” arasından seçim yapmamıza izin verir:

  1. Guided – use entire disk
  2. Guided – use entire disk and setup LVM
  3. Guided – use entire disk and setup up encrypted LVM

 



Yükleyicinin, daha özelleştirilmiş bir bölümleme şeması oluşturmamıza olanak tanıyan dördüncü bir seçeneği olan “Manuel” vardır. Eğitimin bu noktasında “LVM” önceden yapılandırılmış tarifin nasıl çevrileceğini göreceğiz. Daha sonra özel bir tarifin nasıl kullanılacağını da göreceğiz. Burada modern bir UEFI ürün yazılımı üzerinde çalıştığımızı ve Debian kurulumu için kullanmak istediğimiz diskin /dev/vda olduğunu varsayacağım. 

İlk olarak yükleyiciye açıkça bir GPT bölümleme tablosu kullanmak istediğimizi ve kurulum için vda diskini kullanmak istediğimizi söylüyoruz:

d-i partman-partitioning/choose_label string gpt
d-i partman-auto/disk string /dev/vda

Diskte önceden mevcut lvm veya raid bölümleri varsa yükleyici bir uyarı verecektir. Bunu önlemek için preseed dosyasına aşağıdaki talimatları ekleyebiliriz:

d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true

Daha sonra LVM kurulum yöntemini seçiyoruz ve LVM birim grubu için mevcut tüm alanı kullanmak istediğimizi belirtiyoruz:

d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max

Bu noktada mevcut üç bölümleme şeması arasından seçim yapabiliriz: Birincisi tüm sistemi tek bir bölüme kurar (“atomik” seçim), ikincisi /home için ayrı bir bölüm oluşturur (“ev” seçeneği), üçüncüsü ise /home, /var ve /tmp (“çoklu” seçim) için ayrı bölümler (kesin olarak mantıksal birimler). Burada ikinci seçeneği seçiyoruz:

d-i partman-auto/choose_recipe select home

Son olarak kurulumcuya bölümleri ayarlamayı bitirdiğimizi söylüyoruz, seçimlerimizi onaylıyoruz ve bunları diske yazıyoruz:

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish 
d-i partman/confirm boolean true 
d-i partman/confirm_nooverwrite boolean true

Paket yöneticisini yapılandırma

Yükleyici, apt için bir depo aynası kullanmak isteyip istemediğimizi, hangisini kullanacağımızı ve bir HTTP proxy kullanmak isteyip istemediğimizi/kullanmaya ihtiyacımız olup olmadığını seçmemize izin verir. Bu örnekte, yükleyiciye ABD’de bir ayna (deb.debian.org) kullanmak istediğimizi açıkça söylüyoruz ve proxy alanını boş bırakıyoruz:

d-i apt-setup/use_mirror boolean true
d-i mirror/country string US
d-i mirror/http/mirror select deb.debian.org
d-i mirror/http/proxy string

Ekstra kurulum medyasını taramak isteyip istemediğimizi soran istemi atlamak için aşağıdaki talimatı kullanırız:

d-i apt-setup/cdrom/set-first boolean false

Sistemi netinstall olmayan bir imajdan kurarsak, varsayılan olarak “cdrom” girişi yazılım kaynağı olarak /etc/apt/source.list dosyasına kaydedilir. Bunu önlemek için preseed dosyamıza aşağıdaki satırı ekliyoruz:

d-i apt-setup/disable-cdrom-entries boolean true

Paket kullanım anketine katılmak isteyip istemediğimizi de seçebiliyoruz. Burada “hayır” diyoruz (zaten varsayılan değer budur):

popularity-contest popularity-contest/participate boolean false

Hangi paketlerin yükleneceğini seçme

Debian yükleyicisi, sisteme hangi paketlerin kurulması gerektiğini seçmemize izin vermek için Tasksel’i kullanır. Mevcut seçenekler (en azından Debian Bookworm’da):

  • Debian desktop environment
  • …GNOME
  • …Xfce
  • …GNOME Flashback
  • …KDE Plasma
  • …Cinnamon
  • …MATE
  • …LXDE
  • …LXQt
  • web server
  • SSH server
  • Standard system utilities
  • laptop

Burada GNOME masaüstü ortamını, Standart sistem yardımcı programlarını ve ssh sunucusu meta paketlerini kurmayı seçiyoruz:

tasksel tasksel/first multiselect gnome-desktop,standard,ssh

 



Tekli paketleri kurmak için bunun yerine pkgsel/include seçeneğini kullanabilir ve boşluklarla ayrılmış paket adları listesini kanıtlayabiliriz. Örnek olarak vim ve git’i yüklemek için şunu yazabiliriz: 

d-i pkgsel/include string vim git

Kurulumu bitirme ve yeniden başlatma

Kurulumu tamamlamak ve yeniden başlatmak için dosyaya aşağıdaki satırları ekliyoruz:

d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false

Kurulum tamamlandıktan sonra sistemi yeniden başlatmak isteyip istemediğimizi soran istemi atlamak için ilk talimatı kullanırız; yeniden başlatmadan önce CD’nin çıkarılmasıyla ilgili uyarıyı önlemek için ikincisini kullanırız.

Önceden hazırlanmış dosyayı Debian yükleyicisine aktarma

Önceden hazırlanmış dosyayı Debian yükleyicisine aktarmak için temel olarak iki seçeneğimiz var. İlki, yükleyici önyükleme menüsünde “Gelişmiş seçenekler” girişinin seçilmesi ve ardından “Grafik otomatik kurulum” veya “Otomatik kurulum” seçeneğinin seçilmesinden oluşur. Bunu yaptığımızda, yükleyici gerekli modülleri yükleyecek, ağı yapılandırmaya çalışacak ve önceden hazırlanmış dosyanın URL’sini sağlamamızı isteyecektir:

Debian kurulumu “otomatik kurulum” modu.

Diğer seçenek mevcut bir menü girişinin değiştirilmesinden oluşur. İşte bir örnek: preseed dosyamızın http://192.168.0.35/preseed.cfg adresinde mevcut olduğunu varsayalım; Aşağıdaki dizeyi “linux” satırına ekleyerek ilk girdi olan “Grafik kurulum”u değiştirebiliriz, böylece şu şekilde olur:

linux    /install.amd/vmlinuz vga=788 --- quiet auto=true url=http://192.168.0.35/preseed.cfg

 



Kurulumu otomatik modda başlatmak için otomatik seçeneği (doğru olarak ayarlandı, yalnızca “otomatik” çalışmıyor) gereklidir; burada preseed dosyası getirilmeden önce ağın DHCP aracılığıyla otomatik olarak yapılandırılması ve yerel ayarlarla ilgili sorular ve tuş haritası, preseed dosyası aracılığıyla yapılandırılacak şekilde ertelenir. 

Ancak yükleyici yine de bir ana bilgisayar adı ve isteğe bağlı alan adı isteyeceğinden kurulum tam olarak otomatik olmayacaktır. Yalnızca bu bilgiyi sağladığımızda preseed dosyası alınacak ve diğer yükleyici sorularını yanıtlamak için kullanılacaktır. Tam otomatik bir kurulum için, önceden hazırlanmış dosyayı ağdan alırken, ana bilgisayar adını ve etki alanı adını önyükleme argümanları olarak önceden sağlayabiliriz. Örneğin:

linux    /install.amd/vmlinuz vga=788 --- quiet auto=true url=http://192.168.0.35/preseed.cfg netcfg/get_hostname=linuxconfig netcfg/get_domain=""

İstersek, ağı statik olarak yapılandırmak için bu yöntemi kullanabiliriz, böylece bir DHCP sunucusuna gerek kalmaz:

linux    /install.amd/vmlinuz vga=788 --- quiet \
  auto=true \
  url=http://192.168.0.35/preseed.cfg \ 
  netcfg/get_hostname=linuxconfig \
  netcfg/get_domain="" \
  netcfg/disable_autoconfig=true \
  netcfg/choose_interface=eth0 \
  netcfg/get_ipaddress=192.168.122.150 \
  netcfg/get_netmask=255.255.255.0 \
  netcfg/get_gateway=192.168.122.1 \
  netcfg/get_nameservers=192.168.122.1 \
  netcfg/confirm_static=true

Alternatif olarak, önceden hazırlanmış dosyalar Debian ISO dosya sistemine veya initramfs’a dahil edilebilir. Bu seçenekler, dosyayı almak için çalışan bir ağ yapılandırması gerektirmeme avantajına sahiptir, ancak dosyayı her değiştirdiğimizde dağıtım görüntüsünün yeniden oluşturulması gerektiğinden daha az kullanışlıdır.

 

Yazının orijinaline buradan ulaşabilirsiniz.