Instalasi RedHat Linux Via Network

Kalau biasanya saya menginstal Linux dengan cara booting dari CD media instalasinya, kali ini saya mencoba menginstal Linux dengan cara booting dari network. Caranya saya harus  membuat sebuah server yang menyediakan media booting bagi PC lain yang terhubung dengannya. Di lingkungan Linux (dalam hal ini saya pakai Red Hat Linux) ada mekanisme Kickstart Installation.

Lewat Google saya menemukan link tentang instalasi Linux lewat network, berikut adalah panduan yang saya pakai selama utak-atik :

http://www.stanford.edu/~alfw/PXE-Kickstart/PXE-Kickstart.html#toc12

Prinsip bodoh-bodohannya bagaimana mekanisme kickstart adalah seperti ini :

“………….PC yang akan diinstal “dipaksa” untuk booting via network, dia akan mencari DHCP server yang menyediakan alamat IP. Kickstart server diatur supaya bila ada request dari PC tersebut (dia tahu dari MAC address si PC), server akan merespon dengan memberikan alamat IP tertentu. Ok setelah PC mendapat IP, dia akan mencoba menggunakan boot media yang ada pada kickstart server. Proses ini menggunakan protokol TFTP. Setelah boot media berhasil digunakan oleh PC, PC akan mencari bahan-bahan instalasi. Bahan-bahan instalasi ini akan disediakan oleh kickstart server melalui sharing NFS. Selanjutnya proses instalasi akan berjalan otomatis karena di dalam kickstart server sudah disediakan pula aturan-aturan instalasi (bagaimana partisi harddisk, apa passwordnya, aplikasi apa yang perlu diinstal, dsb)………..”

Ada beberapa hal yang perlu saya jelaskan sebelum menuliskan langkah-langkah instalasinya :

  1. Semua konfigurasi ini dijalankan oleh user root.
  2. PC yang akan dipakai sebagai installation server menggunakan sistem operasi Red Hat Linux 5.1. Untuk selanjutnya sebut saja server ini sebagai kickstart-server.
  3. PC kosong yang perlu diinstal selanjutnya kita sebut kickstart-client.

Langkah-langkah yang harus saya lakukan pada kickstart-server adalah seperti berikut ini :

1. Mount DVD Red Hat Linux (saya  pilih Red Hat Linux Enterprise). Pada contoh ini saya menggunakan file ISO image RHEL 5.1

[root@aptserver ~]# mount -o loop /home/tedy/RHEL_5-1.iso /media/iso
mount: /home/tedy/RHEL_5-1.iso already mounted on /media/iso

2. Buat sebuah direktori baru yang akan menyimpan media instalasi. Selanjutnya kita sebut direktori ini sebagai direktori-kickstart.

[root@aptserver ~]# mkdir -p /export/cdrom

3. Salin isi DVD RHEL ke dalam  direktori-kickstart, kali ini saya menggunakan rsync :

[root@aptserver ~]# rsync -rtv /media/iso/ /export/cdrom/
building file list ... done
./
.discinfo
EULA
GPL
README-as.html
README-bn.html
README-de.html
..............
..............
..............
isolinux/rescue.msg
isolinux/splash.lss
isolinux/vmlinuz

sent 2987057878 bytes  received 52700 bytes  11083898.25 bytes/sec
total size is 2986502132  speedup is 1.00

4. Share  direktori-kickstart dengan menggunakan NFS. Caranya adalah dengan mendaftarkan direktori tersebut ke dalam file  /etc/exports seperti pada contoh berikut ini :

[root@aptserver cdrom]# cat /etc/exports
/export/cdrom/      192.168.1.20/255.255.255.0 (ro)
[root@aptserver cdrom]#

Kita juga mengatur komputer mana saja yang boleh mengakses NFS share direktori tersebut. Pada contoh di atas, yang boleh mengakses hanyalah komputer dengan alamat IP 192.168.1.20. Oh ya, client hanya boleh mengakses direktori tersebut secara read only. Setelah konfigurasi selesai baru kita mulai menjalankan service NFS server seperti berikut ini :

[root@aptserver cdrom]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
[root@aptserver cdrom]# service nfs status
rpc.mountd (pid 2460) is running...
[root@aptserver cdrom]# showmount -e
Export list for aptserver:
/export/cdrom 192.168.1.20/255.255.255.0

5. kickstart-client akan mencari media boot yang tersedia di jaringan melalui protokol TFTP (trivial file transfer protocol). Buat sebuah direktori baru yang akan berfungsi sebagai boot directory, selanjutnya kita sebut direktori-TFTP.

[root@aptserver ~]# mkdir /tftpboot/
[root@aptserver ~]# mkdir /tftpboot/pxelinux.cfg/

6. Copy kernel image ke dalam direktori-TFTP :

[root@aptserver ~]# cp /export/cdrom/images/pxeboot/initrd.img /tftpboot
[root@aptserver ~]# cp /export/cdrom/images/pxeboot/vmlinuz /tftpboot

7. Copy file pxelinux.0 ke dalam direktori TFTP. File pxelinux.0 dapat diambil di dalam direktori-kickstart atau bisa juga diambil di dalam /usr/lib/syslinux/  :

[root@aptserver ~]# cp /export/cdrom/syslinux-3.73/core/pxelinux.0 /tftpboot/

8. Buat kickstart profile di dalam direktori-TFTP.  Contohnya seperti berikut ini :

[root@aptserver ~]# cat /tftpboot/pxelinux.cfg/default.netks-7.2
default linux
serial 0,9600n8
label linux ks=192.168.1.5:/export/cdrom/
kernel vmlinuz
append ksdevice=eth0 console=ttyS0,38400 console=tty0 load_ramdisk=1 initrd=initrd.img
network ks=nfs:192.168.1.5:/export/cdrom/ks.cfg
[root@aptserver ~]#

9. Buat softlink dari kickstart profile tadi. Pada contoh di bawah ini, link yang dibuat adalah  C0A80114. Kombinasi itu berasal dari alamat IP 192.168.1.20 yang diubah ke dalam bentuk hexadecimal : 192 -> C0, 168 -> A8, 1 -> 01, 20 -> 14. IP ini adalah alamat IP yang akan dipakai oleh  kickstart-client, akan dibahas di langkah selanjutnya.

[root@aptserver pxelinux.cfg]# ln -s default.netks-7.2 C0A80114
[root@aptserver pxelinux.cfg]# ls -lh
total 8.0K
lrwxrwxrwx 1 root root  17 Jan 31 04:30 C0A80114 -> default.netks-7.2
-rw-r--r-- 1 root root  38 Jan 31 02:04 default
-rw-r--r-- 1 root root 222 Jan 31 05:01 default.netks-7.2

10. Tahap berikutnya adalah menginstal TFTP server . Pada contoh ini saya menggunakan atftpd sebagai TFTP server. Oh ya karena paket atftpd tidak tersedia di dalam DVD instalasi Red Hat, jadi saya harus download dulu.

[root@aptserver ~]# wget http://www.silfreed.net/download/repo/packages/atftp/atftp-0.7-5.fc8.i386.rpm
--04:18:14--  http://www.silfreed.net/download/repo/packages/atftp/atftp-0.7-5.fc8.i386.rpm
Resolving www.silfreed.net... 66.59.109.136, 2002:423b:6d88::1
Connecting to www.silfreed.net|66.59.109.136|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 83279 (81K) [application/x-rpm]
Saving to: `atftp-0.7-5.fc8.i386.rpm'

100%[====================================================================================>] 83,279   28.0K/s   in 2.9s

04:18:18 (28.0 KB/s) - `atftp-0.7-5.fc8.i386.rpm' saved [83279/83279]

[root@aptserver ~]# rpm -i atftp-0.7-5.fc8.i386.rpm
warning: atftp-0.7-5.fc8.i386.rpm: Header V3 DSA signature: NOKEY, key ID ed00d312
error reading information on service atftp: No such file or directory
error: %post(atftp-0.7-5.fc8.i386) scriptlet failed, exit status 1
[root@aptserver ~]#
[root@aptserver ~]# rpm -ivh atftp-0.7-5.fc8.i386.rpm
warning: atftp-0.7-5.fc8.i386.rpm: Header V3 DSA signature: NOKEY, key ID ed00d312
Preparing...                ########################################### [100%]
package atftp-0.7-5.fc8 is already installed
[root@aptserver ~]#

11. Setelah TFTP server terinstal, yang harus dilakukan adalah melakukan konfigurasi seperti berikut ini :

[root@aptserver ~]# /usr/sbin/atftpd --daemon --no-multicast --group nobody --tftpd-timeout 0 -m 1000 /tftpboot/

Dengan perintah di atas, kita memberitahu TFTP server untuk menggunakan /tftpboot/ sebagai direktori TFTP.

12. Saat mulai proses booting dari network, kickstart-client akan meminta alamat IP dari kickstart-server. Oleh karenanya, selain menjalankan TFTP server,  kickstart-server juga berfungsi sebagai DHCP server. Untuk menjalankan servis DHCP di Red Hat Linux, kita harus mengatur file /etc/dhcpd.conf terlebih dulu. Lihat contohnya sebagai berikut :

[root@aptserver Server]# cat /etc/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
ignore client-updates;
default-lease-time 600;
max-lease-time 7200;
deny unknown-clients;
not authoritative;
option domain-name "tedytirta.com";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
allow bootp;
allow booting;
subnet 192.168.1.0 netmask 255.255.25.0 {
range 	192.168.1.18 192.168.1.21;
option routers		192.168.1.1;
option subnet-mask	255.255.255.0;
}
group {
next-server 192.168.1.5;
filename "gpxelinux.0";
host JumpstartClient {
hardware ethernet 08:00:27:E4:57:BB;
fixed-address 192.168.1.20;
}
}
[root@aptserver Server]#

Di dalam file/etc/dhcpd.conf kita mendaftarkan MAC address dari kickstart-client supaya bisa memperoleh IP address. Selain itu pada contoh di atas, saya juga mendefinisikan bahwa kickstart-client akan menggunakan alamat IP 192.168.1.20. Setelah file /etc/dhcpd.conf selesai diatur, baru kita bisa menjalankan DHCP server seperti terlihat pada contoh berikut ini :

[root@aptserver Server]# service dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@aptserver Server]#

13. Langkah terakhir adalah membuat sebuah file konfigurasi. File ini mendeskripsikan proses instalasi yang harus dijalankan oleh kickstart-client (bagaimana partisi harddisk, apa password rootnya, aplikasi apa yang perlu diinstal, alamat IP yang harus dipakai, dsb). File ini disimpan di dalam  direktori-kickstart. Dengan adanya file ini tidak perlu lagi ada intervensi user pada saat instalasi, kita cukup boot kickstart-client lewat network dan tunggu sampai instalasi selesai. Makanya penting sekali mengatur file ini, file ini mendeskripsikan segala detail proses instalasi. Lihat contohnya berikut ini :

[root@aptserver cdrom]# cat /export/cdrom/ks.cfg
# Kickstart file automatically generated by anaconda.
install
text
nfs --server 192.168.1.5 --dir /export/cdrom
key --skip
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto=static --ip=192.168.1.231 --netmask=255.255.255.0 --gateway=192.168.1.1
rootpw --iscrypted $1$.dZrkeXj$CLB4rgZWpI7bzX5W5NINS/
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
reboot
selinux --enforcing
timezone --utc Asia/Jakarta
bootloader --location=mbr --driveorder=hda --append="acpi=off rhgb quiet"
clearpart --all --drives=hda --initlabel
part /boot --fstype ext3 --size=100 --ondisk=hda --asprimary
part / --fstype ext3 --size=1024 --grow --ondisk=hda --asprimary
part swap --size=128 --grow --size=256 --ondisk=hda --asprimary
%packages
@mysql
@editors
@system-tools
@text-internet
@legacy-network-server
@dns-server
@dialup
@core
@base
@ftp-server
@network-server
@java
@smb-server
@base-x
@kde-desktop
@development-libs
@web-server
@printing
@mail-server
@server-cfg
@sql-server
@admin-tools
@development-tools
@graphical-internet
audit
kexec-tools
bridge-utils
device-mapper-multipath
dnsmasq
vnc-server
#xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
-compiz-kde
-knetworkmanager
-amarok
imake
-sysreport
mc
festival
libgnome-java
libgtk-java
libgconf-java
kexec-tools
%post
useradd -d /home/tedy -m -p tedy123 tedy
mv /etc/motd /etc/motd.orig
echo "" >> /etc/motd
echo "========================================" >> /etc/motd
echo " Kickstart Client Server" >> /etc/motd
echo "========================================" >> /etc/motd
echo "" >> /etc/motd
[root@aptserver cdrom]#

Pada contoh di atas, password root yang saya pakai dalam bentuk terenkripsi. Supaya mudah, saya salin saja password kickstart-server (lihat dari file  /etc/passwd ).

Ok sampai di sini semua konfigurasi kickstart-server sudah selesai. Tinggal tes, lihat hasil yang saya dapat :

Dalam contoh ini  kickstart-client yang saya pakai adalah sebuah virtul mesin (dibuat dengan Sun VirtualBox). Saya masuk BIOSnya lalu saya set supaya boot via network. Dan lihat proses instalasi berjalan otomatis sampai selesai. Saya tinggal tunggu sampai muncul halaman login…..ah senangnya 😀 Proses ini berguna sekali kalau ingin menginstal Linux ke dalam beberapa PC sekaligus.

Wah ternyata tulisan ini panjang sekali, lega juga bisa selesai menulisnya di blog ini. Padahal sudah lama juga saya melakukan tes instalasi kickstart. Ok sekarang saatnya berangkat ke kantor :-p

3 thoughts on “Instalasi RedHat Linux Via Network

  1. Wahh keren, nambah wawasan..

    btw intalasai ini (%packages) udh mencakup semua paket seperti halnya install dgn konfigurasi “everything” ?

    terus bisa gak ya kita tambahin command (kyk di console)
    “chkconfig sendmail off” di script ks.cfg (kyknya sih bisa di bagian %post) ? :-D

    thx,
    ^_^

Leave a Reply