Diskless Linux Mini-HOWTO <author>Robert Nemkin, buci@math.klte.hu Diterjemahkan oleh Yaya Heryadi, yheryadi@necnusa.co.id <date>V0.0.3, 12 September 1996 Terj. 8 January 1999 <abstract> Dokumen ini menjelaskan cara men-setup sebuah komputer Linux tanpa disk. Hak cipta dokumen ini dimiliki oleh Robert Nemkin, dengan GPL sebagai copyright policy. Penulis ingin mengucapkan terima-kasih kepada Bela Kis, bkis@cartan.math.klte.hu, yang telah menterjemahkan dokumen ini ke dalam bahasa Inggris. </abstract> <toc> <sect>Perubahan <p> V0.0.3 12 Sep 1996: Beberapa perbaikan terhadap kesalahan kecil <sect>Cara men-setup sebuah komputer Linux tanpa disk <p> Dokumen ini merupakan tulisan mengenai setup sebuah komputer Linux tanpa disk. Seringkali menjalankan Linux pada PC yang tidak memiliki baik hard disk maupun floppy disk diperlukan. Jika tersedia sebuah jaringan komputer, sebuah sistem UNIX lain yang memiliki bootp, tftp, sebuah NFS server, dan sebuah pembakar eprom maka mengoperasikan Linux tanpa hard/floppy disk merupakan suatu hal yang mungkin. <sect>Dokumen-dokumen yang terkait <p> <itemize> <item>NFS-root Mini HOWTO <item>Linux NET-2/3 HOWTO yang ditulis oleh Terry Dawson, 94004531@postoffice.csu.edu.au <item><tt>/usr/src/linux/README</> mengenai cara mengkonfigurasi dan mengkompilasi kernel. </itemize> <sect>Hardware <p> Semua yang diuraikan disini telah diuji menggunakan konfigurasi berikut: <itemize> <item>Sun-OS 4.1.3 sebagai boot server <item>Slackware 2.3 + Linux 1.2.8 + wd 8013 ethercard <item>Jaringan ethernet </itemize> <sect>Ide dasar <p> Ide dasarnya adalah sebagai berikut: sebuah PC akan mendapatkan alamat IP dari sebuah server boot melalui protokol bootp, menggunakan 0.0.0.0 sebagai alamat IP awal, dan mendapatkan kernel melalui protokol tftp. Melakukan boot melalui segment-segment (via router) bukan merupakan masalah sederhana, sehingga harus dipilih salah satu yaitu apakah meletakkan server dan komputer tanpa disk tadi keduanya didalam segmen LAN yang sama ataukah mengkonfigurasi sebuah alamat UDP helper didalam router yang Anda miliki dengan alamat bagi server. Untuk mendapatkan informasi lebih lanjut silahkan membaca manual produk router yang Anda miliki. Ikutilah langkah-langkah berikut ini. <sect1>Men-setup PC <p> Ambillah paket <tt/nfsboot/ (paket ini tersedia di situs mirror linux favorit Anda di dalam direktori <tt>/pub/Linux/system/Linux-boot</>). Paket itu berisi sebuah booteprom image untuk wd8013 card yang langsung dapat di-burned in. Ada beberapa cara alternatif untuk menyiapkan PC, yaitu: <itemize> <item>Jika komputer Anda bukan merupakan komputer yang tidak memiliki disk sama sekali, maka Anda dapat menggunakan sebuah program DOS yang kecil, atau <item>Binary floppy image sudah terdapat didalam paket yang sama </itemize> Jika Anda memilih pilihan kedua maka Anda harus menulis image tadi ke dalam sebuah floppy menggunakan perintah <tt/dd/. Image tadi berisi sebuah klien bootp dan sebuah klien tftp. Anda juga harus menyiapkan sebuah kernel Linux, yang berisi pilihan nfs-root. <itemize> <item>Jika Anda menggunakan kernel terakhir yang sudah stabil, linux-1.2.13, maka Anda harus melakukan patch terhadap kernel dengan file patch yang sudah termasuk kedalam paket nfsboot. Silahkan gunakan manual patch(1) sebagai referensi. <item>Jika Anda mencoba menggunakan kernel terakhir namun belum stabil dari seri linux-1.3.x, maka Anda harus mengkonfigur pilihan nfs-root. Anda mungkin perlu, dapat pula tidak, mengkonfigur dukungan bagi block device (floppy atau hard disk), namun Anda harus mengkonfigur dukungan tcp/ip, wd ethernet card, nfs filesystem. Kemudian mengkopile ulang kernel seperti biasa. </itemize> <sect1>Men-setup bootpd pada server <P> Bootpd dapat Anda temukan dialam paket <tt/bootpd-2.4.tar.gz/ (yang terdapat di situs mirror linux favorit Anda di dalam direktori <tt>/pub/Linux/system/Network/boot.net</>). Ambilah paket itu, kompilasilah, dan instal. Jika komputer lain yang Anda miliki kebetulan Slackware Linux maka Anda dapat melewati langkah ini karena distribusi standarnya telah berisi bootpd. Daemon itu dapat dijalankan baik melalui pemberian perintah langsung <verb> bootpd -s </verb> maupun menggunakan <tt/inetd/. Dengan cara kedua Anda harus mengedit: <itemize> <item>/etc/inetd.conf untuk menghapus tanda '#' diawal baris-baris berikut: <verb> # tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export # bootps dgram udp wait root /usr/sbin/in.bootpd bootpd </verb> <item>Menyisipkan atau menghapuskan tanda '#' dari baris-baris berikut di dalam file <tt>/etc/services</> <verb> bootps 62/tcp # BOOTP server tftp 69/udp # TFTP server </verb> <item>Menjalankan ulang inetd dengan perintah <verb> kill -HUP <id proses yang dimiliki oleh inetd> </verb> </itemize> <sect1>Mengkonfigurasi bootpd pada server <p> Terlebih dulu, bootpd memiliki sebuah file konfig yang disebut bootptab yang umumnya berlokasi di dalam direktori <tt>/etc</>. Anda harus memodifikasi file tsb untuk memasukkan alamat IP dari gateway Anda, dns server, serta alamat(-alamat) ethenet dari komputer(-komputer) yang Anda miliki. Contoh dari file <tt>/etc/bootptab</>: <verb> global.prof:\ :sm=255.255.255.0:\ :ds=192.168.1.5:\ :gw=192.168.1.19:\ :ht=ethernet:\ :bf=linux: machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140: machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141: machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142 </verb> <tt/global.prof/ merupakan sebuah template umum untuk isian host, dimana field-field: <itemize> <item> sm berisi subnet mask <item> ds berisi alamat dari Domain Name Server <item> gw berisi alamat gateway default <item> ht berisi jenis hardware media jaringan <item> bt berisi nama dari file boot </itemize> sesudah ini, setiap komputer harus memiliki sebuah baris: <itemize> <item> field pertama berisi nama komputer <item> field hd berisi direktori tempat bootfile <item> global template dapat dimasukkan kedalam field tc <item> field ha berisi alamat hardware dari ethernet card <item> field ip berisi alamat IP komputer tsb </itemize> <sect1>Memahami tftp <p> TFTP (<em/Trivial File Transfer Protocol/) merupakan sebuah protokol transfer file, seperti ftp, namun lebih sederhana untuk membantu penulisannya kedalam EPROM. TFTP dapat digunakan dalam dua cara: <itemize> <item><em/Simple tftp/: berarti klien dapat mengakses kedalam seluruh sistem file. Lebih sederhana namun memiliki sebuah lubang besar dalam hal keamanan (setiap orang dapat mengambil password Anda menggunakan tftp) <item><em/Secure tftp/: server tftp menggunakan system call <tt/chroot.2/ untuk merubah direktori root yang dimilikinya. Semua yang berada di luar direktori root yang baru menjadi tidak dapat diakses sama sekali. Oleh karena direktori chroot akan menjadi direktori root yang baru maka filed hd didalam bootptab harus mencantumkan keadaan baru ini. Misalnya: pada saat menggunakan insecure tftp, field hd berisi path lengkap dari direktori boot: <tt>/export/root/machine1</>. Pada saat menggunakan secure tftp dengan direktori <tt>/export</> sebagai direktori root, maka direktori <tt>/export</> menjadi direktori <tt>/</> dan isi dari field hd menjadi <tt>/root/machine1</>. </itemize> Hampir setiap implementasi UNIX berisi server tftp, mungkin Anda tidak perlu menginstal milik Anda sendiri. <sect1>Men-setup sebuah konfigurasi minimal Linux pada remote server <p> Konfigurasi Linux ini mungkin berisi paket-paket a, ap, n, dan x dari distribusi Slackware. Untuk menginstal lebih banyak adalah boleh saja; namun paket-paket diatas sudah mencukupi keperluan sebuah terminal X tanpa disk. Untuk melakukan instalasi Anda membutuhkan sebuah sistem Linux yang sudah jalan. Dapatkan beberapa disk space pada komputer remote kemudian export dan berikan izin untuk melakukan read-write. Mount-lah direktori yang telah dieksport tadi ke dalam suatu direktori (misalnya <tt>/mnt</>) didalam sistem file dari komputer Linux. Jalankan setup Linux dan rubahlah pilihan root di dalam setup dari <tt>/</> menjadi <tt>/mnt</>. Kemudian setup paket diatas seperti biasa. Jika Anda ingin menjalankan tidak lebih dari satu Linux tanpa disk maka tidak ada perubahan yang diperlukan. Disisi lain, jika Anda merencanakan untuk memiliki lebih dari satu komputer tanpa disk maka setup diatas tidak akan berjalan karena beberapa file dan direktori harus bersifat private terhadap komputer-komputer tersebut. Masalah tadi dapat diatasi dengan memindahkan direktori <tt>/usr</> (direktori ini tidak berisi data pribadi) lalu membuat sebuah subdirektori secara terpisah untuk setiap komputer tanpa disk tadi. Misalnya, jika <tt>/export/linux/machine1</> dipasangkan kedalam <tt>/mnt</> maka struktur direktori sesudah setup awal akan berupa: <verb> /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/machine1/usr </verb> Sesudah Anda melakukan perubahan maka akan menjadi <verb> /export/linux/machine1/bin /export/linux/machine1/sbin /export/linux/machine1/lib /export/linux/machine1/etc /export/linux/machine1/var /export/linux/usr </verb> Sekarang buatlah subdirektori-subdirektori bagi komputer lainnya. Dengan mengasumsikan bahwa komputer-komputer tadi Anda beri nama sebagai machine1, machine2, machine3, dst; maka Anda dapat menggunakan bash script berikut untuk men-setup direktori lainnya: <verb> cd /export/linux for x in machine2 machine3 ; do mkdir $x; cd $x (cd ../machine1; tar cf - *) | tar xvf - done </verb> Kemudian, lakukan export berikut: <verb> /export/linux/usr hanya hak read bagi setiap orang /export/linux/machine1 hanya ke machine1 dengan hak-hak rw, sebagai root /export/linux/machine2 hanya ke machine2 dengan hak-hak rw, sebagai root /export/linux/machine3 hanya ke machine3 dengan hak-hak rw, sebagai root </verb> sebagai berikut: Contoh berikut mengikuti format sintaks file eksport dari SunOs 4.1.3 <verb> # This file is /etc/export # for remote linux X terminals by Buci # this line is only once /export/root/usr -access=linuxnet # these lines once for every host /export/root/machine1 rw=machine1,root=machine1 /export/root/machine2 rw=machine2,root=machine2 /export/root/machine3 rw=machine3,root=machine3 </verb> Jangan lupa untuk menjalankan <tt/exportfs -a/. <sect1>Mengkonfigurasi server tftp <p> Sekarang saatnya untuk mengkonfigurasi server tftp. Jika Anda tidak membutuhkan secure tftp maka semua yang perlu dilakukan menjadi sederhana karena klien-klien Anda dapat di-boot dari direktori <tt>/export</>. Jika digunakan secure tftp maka Anda dapat membuat sebuah struktur direktori penuh dari <tt>/export/linux</> di bawah <tt>/tftpboot</> (dengan sebuah kernel yang riil dan symbolic links bagi komputer-komputer lainnya), atau menjadikan direktori <tt>/export</> sebagai direktori boot dari secure tftpd. Atau, apabila Anda memiliki sebuah direktori tftpboot yang terpisah maka, suatu hal yang sama, Anda hanya membutuhkan struktur direktori asli dengan sebuah kernel dan <em/symbolic link/ untuk komputer-komputer lainnya. Anda dapat melakukan setup ini menggunakan perintah berikut: <verb> mkdir -p /tftpboot/export/linux/machine1 cd /tftpboot/export/linux/machine1 cp /export/linux/machine1/<name of the kernel> . </verb> kemudian, gunakan perintah berikut: <verb> mkdir -p /tftpboot/export/linux/machine2 cd ../machine2 ln -s ../machine2/<name of the kernel> </verb> <sect1>Pekerjaan terakhir <p> Terakhir, Anda harus menyisipkan <verb> /sbin/mount nfs_server:/export/linux/usr /usr </verb> pada baris pertama dari file <tt>/export/linux/>machinex</etc/rc.d/rc.S</tt>. di mana ><tt/machinex/&;t; adalah <tt/machine1/, <tt/machine2/, dan seterusnya. <sect>Persyaratan memory dan diskspace; Kecepatan <p> Penulis telah melakukan pengujian namun hanya terbatas pada Slackware 2.3; Untuk distribusi/versi lainnya angka-angka dibawah ini mungkin bervariasi. <itemize> <item> Diskspace: 28 MB + 6.5 MB/komputer <item> RAM: Penulis menggunakan X dengan RAM 8 MB. Hanya 4 MB diperlukan untuk swap, menurut perkiraan penulis, yang masing-masing dibuat untuk untuk setiap komputer didalam direktori <tt>/tmp</>. Jangan lupa untuk menjalankan <tt/mkswap/. <item> Kecepatan: Penulis tidak mendapatkan masalah dalam penggunaan sebuah komputer 486 DX2/66 dengan 8 Megs </itemize> <sect>Kemungkinan kesalahan <p> <itemize> <item> Penulis menemukan suatu kesalahan aneh: daftar device yang terdapat didalam subdirektori <tt>/dev</> dari SunOS mengalami kerusakan sehingga penulis harus menjalankan ulang <tt/MAKEDEV/ dengan melakukan mounting subdirektori tadi kedalam sebuah komputer Linux berbasis disk (Penyebabnya adalah adanya perbedaan antara linux nfs dengan sunOS nfs: keduanya menggunakan 32 bit untuk nomor device Major maupun Minor, namun Linux menggunakan field sepanjang 16 bit untuk kedua penomoran tadi, SunOs menggunakan field sepanjang 14 bit untuk nomor device Major dan field sepanjang 18 bit untuk nomor device Minor). <item> Pada saat Linux tanpa disk di-boot, tabel routing hanya berisi satu route menuju server tftp, sehingga Anda harus men-setup tabel routing yang benar. Anda memiliki dua pilihan yaitu: <itemize> <item> Mengkonfigurasi setiap <tt/rc.S/ untuk setiap komputer secara manual <item> Menggunakan sebuah paket klien <tt/bootp/ dan menulis sebuah skrip yang bersifat umum untuk mensetup. </itemize> </itemize> <sect>Kesalahan-kesalahan dan kemungkinan pengembangan dokumen lebih lanjut. <p> <itemize> <item> Kutipan yang benar dari dokumen-dokumen yang terkait <item> SunOs memiliki basis BSD. Diperlukan untuk memasukkan konfigurasi server berbasis SVR4 (e.g Solaris) <item> Meskipun Linux sangat mirip dengan SunOS untuk menjadi server bootp/tftp, sebuah contoh menggunakan sebuah server berbasis Linux mungkin akan berguna. <item> Update terhadap dokumen ini sehingga sesuai dengan paket etherboot yang ada saat ini. <item> Perlihatkan perbedaan yang ada antara kernel versi 1.2.13 yang dilengkapi nfs root patched dengan kernel 1.3.x terbaru, yang berisi nfs-root patch. <item> Perlu mencoba ethercard-ethercard lain selain dari wd8013 <item> Memasukkan informasi konfigurasi mengenai bootpc, sebuah klien bootp untuk Linux yang berguna untuk men-setup tabel routing yang benar. <item> Kesalahan dalam pengetikan maupun atas kesalahan lainnya: silahkan melaporkannya ke buci@math.klte.hu. Terima kasih. </itemize> <sect>Catatan dari penterjemah <p> Penterjemah sudah berusaha menterjemahkan tulisan aslinya sedapat mungkin, namun tidak mustahil masih ada kekurangan dalam penterjemahan di sana-sini. Apabila ada saran-saran untuk memperbaiki penterjemahan tulisan ini silahkan disampaikan via e-mail ke penterjemah, yheryadi@necnusa.co.id, atau koordinator id LDP, mdamt@linux.or.id. </article>