Hard Disk Upgrade Mini How-To Yves Bellefeuille, yan@ottawa.com Diterjemahkan oleh Yaya Heryadi, yheryadi@necnusa.co.id Version 1.0, 31 January 1998 Terj. 31 Jan 1999 Bagaimana mengcopy sebuah sistem Linux dari sebuah hard disk ke dalam sebuah hard disk yang lain. ______________________________________________________________________ Table of Contents 1. Menginstal kedua disk ke dalam sistem Anda 2. Melepaskan ( 3. Pembuatan partisi di dalam disk baru 4. Memformat disk baru 5. Pemasangan ( 6. Meng-copy file-file dari disk lama ke dalam disk baru 7. Memodifikasi 8. Mempersiapkan LILO untuk memboot disk yang baru 9. Melepaskan disk lama 10. Mem-boot ulang sistem, Menginstal LILO di dalam disk baru 11. Catatan dari penterjemah ______________________________________________________________________ Baru-baru ini penulis telah mengganti sebuah hard disk milik penulis yang berukuran 249 MB dengan sebuah hard disk yang berukuran lebih besar. Penulis ingin mentransfer keseluruhan sistem Linux, termasuk LILO, dari disk yang lama ke dalam sebuah disk yang baru. Berikut ini adalah uraian mengenai apa yang telah dilakukan penulis. Dalam uraian berikut, penulis menggunakan notasi-notasi /dev/hda untuk menunjukkan disk yang lama, dan /dev/hda1 bagi partisi Linux yang lama. /dev/hdb bagi disk yang baru, serta /dev/hdb1 bagi partisi Linux yang baru. Dokumen ini didasarkan kepada sistem yang penulis miliki, yang mengoperasikan Red Hat 4.2, dan penulis telah menguji seluruh perintah yang disediakan distribusi tsb. Penulis telah menguji hal yang sama di dalam distribusi-distribusi Debian 1.3.1 dan Slackware 3.3, dan penulis memberikan indikasi mengenai adanya beberapa perbedaan yang perlu dicatat jika Anda menggunakan distribusi- distribusi tsb. Jika perintah-perintah tadi tidak bekerja secara baik di dalam sistem Anda, mohon untuk memberitahu penulis serta menyampaikan versi Linux yang Anda gunakan. 1. Menginstal kedua disk ke dalam sistem Anda Sistem-sistem yang modern dapat menerima empat buah EIDE device di dalam satu kontroler hard disk yang terdapat di dalamnya, sehingga menginstal kedua disk secara bersamaan ke dalam sistem Anda seharusnya tidak merupakan masalah, meskipun Anda memiliki EIDE device yang lain. Hard disk dan CD-ROM drive merupakan EIDE device yang umum. Floppy drive dan tape drive lebih umum terkoneksi ke dalam sebuah kontroler floppy drive daripada ke dalam sebuah kontroler hard disk. SCSI adapter bahkan lebih fleksibel dan dapat menerima tujuh buah device. Jika Anda cukup beruntung (dan kaya) untuk memiliki sebuah SCSI adapter, Anda mungkin sudah mengetahui hal ini, dan mungkin Anda telah mengetahui pula device mana yang Anda miliki merupakan SCSI device! Untuk mendapatkan informasi lebih lanjut mengenai hal ini, silahkan untuk membaca dokumen SCSI-HOWTO. Sistem yang lama sekalipun dapat menerima dua buah device di dalam satu kontroler hard disk yang terdapat di dalamnya, sehingga Anda masih dapat menginstal kedua hard disk secara bersamaan. Namun demikian, Jika Anda memiliki sebuah device lain yang telah terinstal selain dari hard disk yang Anda miliki (misalnya jika Anda memiliki sebuah hard disk dan sebuah CD-ROM drive) maka Anda harus melepaskan device tadi agar Anda dapat menginstal sebuah hard disk baru dan sebuah hard disk lama secara bersamaan. Anda harus mengkonfigurasi kedua buah disk tadi sebagai "master" dan "slave" dengan cara menginstal jumper-jumper yang ada pada disk secara benar. Seringkali Anda bisa mendapatkan informasi mengenai konfigurasi tadi pada disk tersebut; jika tidak, Anda harus merujuk kepada manual atau menghubungi pembuat disk tersebut. Anda juga harus memberitahukan BIOS mengenai keberadaan disk tadi maupun "geometry" yang dimilikinya. Biasanya, Anda menjalankan program setup BIOS dengan cara menekan sebuah tombol pada saat sistem melakukan boot-up. Berikut ini yang harus dilakukan pada beberapa BIOS yang umum: o American Megatrends (AMI): tombol Del key pada saat Power-On Self- Test (POST) o Award: Ctrl-Alt-Esc o Compaq: tombol F10 sesudah sebuah ada tampilan berupa sebuah kotak di ujung kanan atas layar pada saat boot-up o Dell: Ctrl-Alt-Enter o DTK: tombol Esc pada saat Power-On Self-Test o IBM PS/2: tombol-tombol Ctrl-Alt-Del, kemudian Ctrl-Alt-Ins ketika cursor berada di pojok kanan atas o Phoenix: tombol-tombol Ctrl-Alt-Esc, atau Ctrl-Alt-S, atau Ctrl- Alt-Enter Banyak sistem-sistem yang lebih lama membutuhkan suatu instalasi ataupun sebuah disk rujukan (Reference Disk). (Penulis tertarik untuk mendapatkan informasi mengenai BIOS-BIOS lainnya untuk ditambahkan ke dalam daftar diatas) Lakukanlah boot ulang terhadap sistem kemudian login sebagai root. 2. Melepaskan ( unmount ) partisi-partisi Non-Linux Beberapa orang suka memasang (mount) partisi-partisi dari sistem operasi lain (DOS, Windows, OS/2, dsb) agar mereka dapat menggunakan partisi-partisi tersebut di dalam Linux. Partisi-partisi tadi harus dibuat dan di-copy dengan menggunakan sistem operasi yang bersangkutan, dan Anda harus terlebih dahulu melepaskan partisi- partisi tersebut sebelum Anda meng-copy partisi Linux. Sebagai contoh, apabila Anda memiliki sebuah partisi DOS yang dipasang di dalam direktori /dos maka Anda harus melepaskan partisi tersebut dengan perintah: umount /dos Catatan: perintah yang diberikan tadi adalah "umount", berasal dari kata "unmount" dengan menghilangkan huruf n pertama. 3. Pembuatan partisi di dalam disk baru Gunakanlah perintah berikut untuk melakukan pembuatan partisi di dalam sebuah disk baru: fdisk /dev/hdb Untuk mendapatkan informasi yang lebih lengkap mengenai pembuatan partisi, Anda dipersilahkan untuk membaca dokumen-dokumen "Installation How-To" dan "Partitioning Mini How-To". Apabila silinder yang dimiliki oleh disk baru Anda berjumlah lebih dari 1024 maka Anda dipersilahkan untuk membaca dokumen "Large Disk Mini How-To". Secara ringkas, Anda harus menginstal semua file yang dibutuhkan untuk mem-boot Linux ke dalam 1024 silinder pertama. Salah satu cara untuk melakukannya adalah dengan membuat sebuah partisi berukuran kecil (1 MB atau 2 MB) pada bagian awal dari disk Anda diperuntukkan hanya untuk direktori /boot. (Hanya bagi distribusi Slackware: Kernelnya terdapat di dalam file /vmlinuz, dan bukan di dalam file /boot/vmlinuz, sehingga Anda harus meletakkan kedua direktori yaitu direktori-direktori / dan /boot ke dalam partisi yang telah dibuat tadi). Partisi-partisi dari sistem lain selain Linux harus dibuat dengan menggunakan fdisk yang dimiliki oleh sistem yang bersangkutan atau menggunakan perintah yang setara dengannya, dan tidak menggunakan fdisk yang dimiliki Linux. 4. Memformat disk baru Gunakanlah perintah berikut untuk melakukan format terhadap sebuah disk yang baru: mkfs.ext2 /dev/hdb1 Untuk melakukan pemeriksaan mengenai keberadaan block yang rusak (bad block, atau kerusakan fisik), tambahkanlah opsi -c sebelum /dev/hdb1 dari perintah di atas. (Catatan: bertolak-belakang dengan apa yang telah dinyatakan di dalam halaman man, ternyata perintah mkfs -t ext2 -c /dev/hdb1 di dalam distribusi-distribusi Red Hat, Debian, dan Slackware tidak melakukan pengecekan terhadap kemungkinan adanya block yang rusak.) 5. Pemasangan ( mount ) disk baru Buatlah sebuah direktori yang akan digunakan untuk memasang disk baru, misalnya direktori /new-disk, lalu pasanglah disk baru tadi pada direktori tersebut: mkdir /new-disk mount -t ext2 /dev/hdb1 /new-disk 6. Meng-copy file-file dari disk lama ke dalam disk baru Anda perlu mereproduksi seluruh struktur disk secara lengkap termasuk semua link yang terdapat di dalamnya. Selanjutnya, Anda perlu membuat direktori /proc di dalam disk baru, namun Anda tidak perlu meng-copy isi direktori tersebut: /proc adalah filesistem virtual. dan isinya bukan merupakan file sebenarnya namun berisi informasi mengenai proses-proses yang sedang berjalan di dalam sistem. Berikut ini akan diuraikan 4 cara yang berbeda untuk meng-copy disk lama ke dalam disk baru. Dengan cara ini akan dibutuhkan waktu cukup lama terlebih-lebih jika Anda memiliki disk berkapasitas besar atau memori berukuran kecil. Anda dapat mengharapkan dapat meng-copy dengan kecepatan 10 MB per menit, bahkan mungkin bisa lebih cepat dari itu. Anda dapat mengikuti perkembangan proses peng-copy-an tadi dengan menggunakan perintah "df" yang dilakukan dari terminal yang lain. Jika Anda termasuk orang yang mudah tertarik seperti halnya penulis, cobalah untuk menggunakan perintah watch df atau watch -ls -l /new-disk untuk melihat sebuah laporan yang selalu di-update setiap 2 detik; tekanlah tombol Ctrl-C untuk menghentikan tampilan tersebut. Berhati-hatilah karena menjalankan program "watch" itu sendiri akan memperlambat proses peng-copy-an yang sedang berjalan. 1. cp -ax / /new-disk Cara ini merupakan cara yang paling sederhana, namun cara ini hanya akan bekerja jika sistem Linux yang asli terdapat di dalam satu partisi disk. Opsi -a adalah untuk menjaga agar sistem hasil copy sedapat mungkin sesuai dengan sistem aslinya. Opsi -x gunanya adalah untuk membatasi cp terhadap satu file sistem; pembatasan ini dibutuhkan untuk menghindarkan peng-copy-an terhadap direktori- direktori /new-disk maupun /proc. 2. cd / && cp -a `/bin/ls -1A | egrep -v "^new-disk$|^proc$"` /new- disk (Tulislah perintah diatas di dalam satu baris) Cara ini akan menuju ke dalam direktori root, kemudian melakukan copy terhadap semua file maupun direktori yang terdapat di dalam direktori root tadi ke dalam direktori /new-disk kecuali direktori-direktori /new-disk sendiri dan /proc. Perhatikan bahwa opsi sesudah ls adalah angka 1 (satu), bukan huruf L! Perintah ini harus dapat berjalan dalam situasi apapun juga. 3. (cd / && tar cpf - . --exclude new-disk --exclude proc) | (cd /new- disk && tar xpf -) (Tulislah perintah diatas di dalam satu baris) Cara ini akan menuju ke dalam direktori root, melakukan "tar" terhadap setiap file maupun direktori yang terdapat di dalamnya kecuali direktori-direktori /new-disk dan /proc, kemudian akan berpindah ke direktori /new-disk dan melakukan "untar" dari semua file serta direktori tadi pada tempat ini. Perhatikan bahwa tidak boleh ada sebuah slash (garis miring, /) sebelum dan sesudah nama- nama direktori di dalam opsi --exclude). (Catatan: opsi -l tidak akan bekerja disini, oleh karena tar akan selalu membuat kembali direktori-direktori /new-disk dan /proc meskipun tidak melakukan copy terhadap isi dari direktori-direktori tadi. Oleh karena itu, opsi -l dari perintah tar tidak memiliki perilaku yang sama dengan opsi -x dari perintah cp) Cara ini akan berjalan sedikit lebih lambat dibandingkan dengan cara-cara lainnya. 4. cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk (Tulislah perintah diatas di dalam satu baris) Direktori yang terakhir, /new-disk, merupakan tempat tujuan (destination) dari perintah cp sedangkan direktori-direktori lainnya merupakan sumber (source). Oleh karena itu, dengan cara ini penulis meng-copy semua direktori yang penulis telah urutkan ke dalam direktori /new-disk. Dengan cara ini, Anda cukup hanya dengan membuat urutan semua direktori yang akan di-copy. Di sini penulis mengurutkan semua direktori kecuali direktori-direktori /new-disk dan /proc. Jika Anda tidak dapat menggunakan cara-cara yang lain tadi karena suatu alasan tertentu, Anda selalu akan dapat menggunakan perintah ini yaitu mengurutkan secara manual semua direktori yang ingin Anda copy. Hanya pada cara ini, seandainya terdapat beberapa file di dalam direktori root sendiri maka Anda memerlukan perintah lain untuk meng-copy-kannya. Secara khusus, perintah ini dibutuhkan pada Debian dan Slackware oleh karena distribusi-distribusi tadi menempatkan beberapa file di dalam direktori root. cp -dp /* /.* /new-disk Sesudah Anda menggunakan salah satu dari cara diatas, Anda harus membuat direktori /proc di dalam disk yang baru tadi: mkdir /new-disk /proc Pada tahap ini, jika Anda menginginkannya, Anda dapat melakukan verifikasi terhadap struktur file yang terdapat di dalam disk baru: umount /new-disk fsck.ext2 -f /dev/hdb1 mount -t ext2 /dev/hdb1 /new-disk Andapun dapat pula menggunakan script berikut untuk membandingkan kedua disk tadi, untuk memastikan bahwa semua file telah di-copy-kan secara sempurna: #!/bin/sh cd / for file in `/bin/ls -1A | egrep -v '^new-disk$|^proc$'` do find $file -xtype f -exec cmp \{\} /new-disk/\{\} \; done (Hanya bagi distribusi Slackware: Instalasi dasar dari Slackware tidak memasukkan perintah-perintah "cmp" ataupun "diff", sehingga Anda tidak akan dapat menjalankan script ini apabila Anda hanya memiliki file-file dasar.) Script tadi hanya akan membandingkan file-file reguler; namun tidak akan membandingkan file-file spesial seperti character special file, block special file (yang terdapat di dalam direktori /dev) ataupun socket, dsb oleh karena perintah "cmp" tidak akan bekerja secara baik dengan file-file spesial tadi. Penulis akan menerima saran-saran mengenai cara untuk memverifikasi file-file "special" tadi. 7. Memodifikasi /etc/fstab secara tepat Jika disk baru Anda tidak memiliki partisi maupun organisasi yang sama dengan disk lama Anda, modifikasilah file /etc/fstab di dalam disk baru secara tepat. Harap diingat bahwa file ini sekarang berlokasi di dalam /new-disk/etc/fstab. Pastikanlah bahwa partisi disk yang terdapat di dalam kolom pertama berhubungan dengan organisasi yang akan Anda dapatkan di dalam disk baru Anda, sesudah disk lama dilepaskan maka Anda hanya memasangkan satu partisi di dalam "/" seperti yang diperlihatkan di dalam kolom kedua. 8. Mempersiapkan LILO untuk memboot disk yang baru Langkah ini merupakan langkah yang paling rumit. Penulis mengasumsikan bahwa LILO telah terinstal di dalam Master Boot Record (MBR) dari hard disk lama; kondisi ini merupakan konfigurasi yang paling umum. Anda bermaksud menginstal LILO ke dalam disk yang sekarang menjadi disk kedua. LILO dipastikan tidak akan dapat dijalankan dari hard disk kedua; namun demikian, dokumentasi LILO tidak mengantisipasi bahwa Anda bermaksud untuk menginstal LILO ke dalam disk yang kedua, misalnya pada saat hard disk pertama akan dilepaskan: LILO tidak dapat diletakkan di dalam setiap lokasi berikut: o di dalam hard disk kedua. (kecuali untuk keperluan backup, jika hard disk pertama yang ada saat ini akan dilepaskan akan dinon- aktifkan, atau jika boot loader yang lain akan digunakan, yang mampu untuk melakukan loading terhadap boot sector dari drive-drive yang lain.) Namun demikian, dokumentasi tadi tidak menjelaskan satupun cara yang tepat untuk menginstal LILO di dalam hard disk kedua seandainya hard disk pertama akan dilepaskan, dan sesudah mencoba beberapa kali akhirnya penulis menyimpulkan bahwa merupakan suatu yang tidak mungkin untuk menginstal LILO ke dalam MBR dari hard disk kedua dan membuatnya langsung berjalan. Sebagai gantinya, penulis menyarankan untuk menggunakan sebuah disket boot untuk melakukan boot yang pertama kali terhadap disk yang baru tadi. Masukkanlah sebuah disket kosong, lakukan format terhadapnya, buatlah file sistem di dalamnya, kemudian pasangkanlah: fdformat /dev/fd0H1440 mkfs.ext2 /dev/fd0 mount -t ext2 /dev/fd0 /mnt (Hanya bagi distribusi Debian: Perintah "fdformat" tidak termasuk ke dalam instalasi dasar dari Debian. Jika Anda tidak memiliki perintah ini maka Anda dapat melewati perintah ini jika floppy memang sudah di-format. Dalam kasus ini, Anda harus memeriksa block yang rusak dari disket tadi dengan menambahkan "-c" sesudah perintah "mkfs.ext2".) (Hanya bagi distribusi Debian dan Slackware: Gunakanlah perintah fdformat /dev/fd0h1440 dengan huruf kecil dari "h".) Copy-lah semua file yang terdapat di dalam direktori /boot ke dalam disket tadi: cp -dp /boot/* /mnt (Hanya bagi distribusi Slackware: Copy-lah file /vmlinuz ke dalam disket boot; gunakan perintah cp /vmlinuz /mnt.) Buatlah sebuah file baru yaitu /mnt/lilo.conf dengan isi sebagai berikut: boot=/dev/fd0 # Instal LILO ke dalam sebuah floppy disk. map=/mnt/map # Lokasi dari "map file". install=/mnt/boot.b # File yang akan di-copy ke dalam # boot sector dari floppy. prompt # LILO akan menampilkan prompt sbb: "LILO boot:" timeout=50 # Secara default sistem akan di-boot setelah 5 detik # (Angka yang diberikan adalah dalam sepersepuluh detik) image=/mnt/vmlinuz # Lokasi dari kernel Linux kernel di dalam floppy. label=linux # Label bagi sistem Linux root=/dev/hda1 # Lokasi dari partisi root partition # di dalam hard disk baru # Modifikasilah lokasi ini untuk # disesuaikan dengan sistem Anda # Perhatikan bahwa Anda harus menggunakan # nama dari lokasi # yang nanti akan Anda gunakan, # sesudah disk lama telah # dilepaskan. (Hanya bagi distribusi Debian: Di dalam baris "image" diatas, gunakanlah nama sebenarnya dari kernel Linux. Misalnya, pada Debian 1.3.1, gunakanlah "/mnt/vmlinuz-2.0.29".) Installah LILO ke dalam disket boot tadi: /sbin/lilo -C /mnt/lilo.conf Opsi -C dari perintah di atas adalah memberitahukan /sbin/lilo mengenai file konfigurasi yang digunakan. Lepaskanlah (unmount) disket tadi: umount /mnt Kemudian lakukan shut down terhadap sistem. 9. Melepaskan disk lama Sesudah melepaskan disk lama, agar diingat untuk melakukan modifikasi jumper-jumper disk maupun informasi BIOS untuk disesuaikan dengan perubahan yang telah terjadi. 10. Mem-boot ulang sistem, Menginstal LILO di dalam disk baru Lakukanlah boot ulang dengan menggunakan disket boot yang tadi telah dibuat. Untuk melakukannya, Anda harus memodifikasi urutan boot-up dari BIOS menjadi "A:, C:". Lakukan perubahan yang diperlukan terhadap file /etc/lilo.conf, kemudian jalankanlah /sbin/lilo untuk menginstal LILO ke dalam disk yang baru. Dengan distribusi Debian, Anda harus memastikan bahwa baris "boot" berisi "/dev/hda" dan bukannya "/dev/hda1" , atau sejenis dengan itu, apabila Anda bermaksud untuk menginstal LILO ke dalam Master Boot record. Selanjutnya Anda dapat mencoba untuk melakukan booting ulang sistem dengan menggunakan disk baru Anda untuk menguji apakah semua langkah telah dilakukan dapat berjalan dengan benar. Jika Anda mendapatkan masalah, Anda masih dapat menggunakan disket tadi untuk melakukan boot terhadap sistem Anda. Penghargaan Ucapan terima-kasih yang khusus penulis berikan kepada Dr. Konrad Hinsen dari Institut de biologie structurale, Grenoble, France, yang telah berperan sebagai guru Linux bagi pribadi penulis. Ucapan terima- kasih juga diperuntukkan bagi Frank Damgaard, Paul Koning dan Josh Rabinowitch, dan Scott Christensen yang telah memberi-tahu penulis mengenai kekhususan yang terdapat di dalam distribusi Slackware. 11. Catatan dari penterjemah 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.