4.5. Mempersiapkan Berkas untuk Boot Jaringan TFTP

Jika komputer Anda terhubung ke jaringan area lokal, Anda mungkin dapat mem-boot-nya melalui jaringan dari mesin lain, menggunakan TFTP. Jika Anda bermaksud untuk mem-boot sistem instalasi dari mesin lain, berkas boot harus ditempatkan di lokasi tertentu pada mesin itu, dan mesin dikonfigurasi untuk mendukung boot mesin spesifik Anda.

Anda perlu menyiapkan sebuah server TFTP, dan untuk banyak mesin, sebuah server DHCP, atau server BOOTP.

BOOTP adalah protokol IP yang menginformasikan komputer tentang alamat IP-nya dan di mana di jaringan untuk mendapatkan image boot. DHCP (Dynamic Host Configuration Protocol) adalah ekstensi BOOTP yang lebih fleksibel dan kompatibel ke belakang. Beberapa sistem hanya dapat dikonfigurasi melalui DHCP.

Trivial Berkas Transfer Protocol (TFTP) digunakan untuk melayani image boot ke klien. Secara teoretis, server apa pun, pada platform apa pun, yang mengimplementasikan protokol ini, dapat digunakan. Dalam contoh di bagian ini, kami akan memberikan perintah untuk SunOS 4.x, SunOS 5.x (alias Solaris), dan GNU/Linux.

[Catatan] Catatan

Untuk server Debian GNU/Linux kami merekomendasikan tftpd-hpa. Ini ditulis oleh penulis yang sama dengan bootloader syslinux dan oleh karena itu paling kecil kemungkinannya untuk menyebabkan masalah. Alternatif yang baik adalah atftpd.

4.5.1. Menyiapkan server DHCP

Salah satu perangkat lunak DHCP server bebas adalah ISC dhcpd. Untuk Debian GNU/Linux, paket isc-dhcp-server direkomendasikan. Berikut adalah contoh berkas konfigurasi untuk itu (lihat /etc/dhcp/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Dalam contoh ini, ada satu server servername yang melakukan semua pekerjaan server DHCP, server TFTP, dan gateway jaringan. Anda hampir pasti perlu mengubah opsi nama domain, serta nama server dan alamat perangkat keras klien. Opsi nama berkas harus berupa filename yang akan diambil melalui TFTP.

Setelah Anda mengedit berkas konfigurasi dhcpd, jalankan ulang dengan /etc/init.d/isc-dhcp-server restart.

4.5.1.1. Mengaktifkan Boot PXE dalam konfigurasi DHCP

Berikut adalah contoh lain untuk dhcp.conf menggunakan metode Pre-boot Execution Environment (PXE) TFTP.

option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# The next paragraph needs to be modified to fit your case
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# the gateway address which can be different
# (access to the internet for instance)
  option routers 192.168.1.1;
# indicate the dns you want to use
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Perhatikan bahwa untuk boot PXE, nama berkas klien pxelinux.0 adalah boot loader, bukan image kernel (lihat Bagian 4.5.4, “Pindahkan Image TFTP Ke Tempatnya” di bawah).

Jika mesin Anda menggunakan UEFI untuk boot, Anda harus menentukan boot loader yang sesuai untuk mesin UEFI, misalnya

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}

4.5.2. Menyiapkan server BOOTP

Ada dua server BOOTP yang tersedia untuk GNU/Linux. Yang pertama adalah CMU bootpd. Yang lainnya sebenarnya adalah server DHCP: ISC dhcpd. Dalam Debian GNU/Linux ini masing-masing ada dalam paket bootp dan isc-dhcp-server.

Untuk menggunakan CMU bootpd, Anda harus terlebih dahulu menghapus komentar (atau menambahkan) baris yang relevan di /etc/inetd.conf. Pada Debian GNU/Linux, Anda dapat menjalankan update-inetd --enable bootps, lalu /etc/init.d/inetd reload untuk melakukannya. Untuk berjaga-jaga jika server BOOTP Anda tidak berjalan pada Debian, baris yang dimaksud akan terlihat seperti:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Sekarang, Anda harus membuat berkas /etc/bootptab. Ini memiliki jenis format yang akrab dan cryptic yang sama dengan berkas printcap, termcap, dan disktab BSD lama yang bagus. Lihat halaman manual bootptab untuk informasi lebih lanjut. Untuk CMU bootpd, Anda perlu mengetahui alamat perangkat keras (MAC) klien. Berikut adalah contoh /etc/bootptab:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Anda perlu mengubah setidaknya opsi ha, yang menentukan alamat perangkat keras klien. Opsi bf menentukan berkas yang harus diambil klien melalui TFTP; lihat Bagian 4.5.4, “Pindahkan Image TFTP Ke Tempatnya” untuk lebih jelasnya.

Sebaliknya, menyiapkan BOOTP dengan ISC dhcpd sangat mudah, karena memperlakukan klien BOOTP sebagai kasus yang cukup khusus dari klien DHCP. Beberapa arsitektur memerlukan konfigurasi kompleks untuk mem-boot klien melalui BOOTP. Jika milik Anda adalah salah satunya, baca bagian ini Bagian 4.5.1, “Menyiapkan server DHCP”. Jika tidak, Anda mungkin akan bisa lolos hanya dengan menambahkan direktif allow bootp ke blok konfigurasi untuk subnet yang berisi klien di /etc/dhcp/dhcpd.conf, dan jalankan ulang dhcpd dengan /etc/init.d/isc-dhcp-server restart.

4.5.3. Mengaktifkan Server TFTP

Untuk menyiapkan server TFTP, Anda harus terlebih dahulu memastikan bahwa tftpd diaktifkan.

Dalam kasus tftpd-hpa ada dua cara layanan dapat dijalankan. Ini dapat dimulai sesuai permintaan oleh daemon inetd sistem, atau dapat diatur untuk dijalankan sebagai daemon independen. Yang mana dari metode ini yang digunakan dipilih ketika paket dipasang dan dapat diubah dengan mengonfigurasi ulang paket.

[Catatan] Catatan

Secara historis, server TFTP menggunakan /tftpboot sebagai direktori tempat menyajikan image. Namun, paket Debian GNU/Linux dapat menggunakan direktori lain untuk mematuhi Filesystem Hierarchy Standard. Misalnya, tftpd-hpa secara baku menggunakan /srv/tftp. Anda mungkin harus menyesuaikan contoh konfigurasi di bagian ini.

Semua alternatif in.tftpd yang tersedia di Debian harus mencatat permintaan TFTP ke log sistem secara baku. Sebagian dari mereka mendukung argumen -v untuk meningkatkan verbositas. Disarankan untuk memeriksa pesan log ini jika terjadi masalah boot karena merupakan titik awal yang baik untuk mendiagnosis penyebab kesalahan.

4.5.4. Pindahkan Image TFTP Ke Tempatnya

Selanjutnya, tempatkan image boot TFTP yang Anda butuhkan, seperti yang ditemukan di Bagian 4.2.1, “Di Mana Menemukan Berkas Instalasi”, dalam direktori image boot tftpd. Anda mungkin harus membuat tautan dari berkas itu ke berkas yang tftpd akan gunakan untuk mem-boot klien tertentu. Sayangnya, nama berkas ditentukan oleh klien TFTP, dan tidak ada standar yang kuat.

Untuk boot PXE, semua yang Anda butuhkan diatur di tarball netboot/netboot.tar.gz. Cukup ekstrak tarball ini ke dalam direktori image boot tftpd. Pastikan server dhcp Anda dikonfigurasi untuk meneruskan pxelinux.0 ke tftpd sebagai nama berkas untuk boot. Untuk mesin UEFI, Anda harus meneruskan nama image boot EFI yang sesuai (seperti /debian-installer/amd64/bootnetx64.efi).