Posts tagged ‘bootloader’

Agustus 15, 2008

Redboot, NFS dan TFTP

Dalam development aplikasi untuk board embedded, misalnya berbasis ARM9TDMI, dengan storage berupa flash, metode untuk mencoba aplikasi tersebut salah satunya adalah melalui network. Mencoba langsung dengan mendownload aplikasi tersebut ke flash akan sangat riskan, mengingat ketahanan/endurance flash (misalnya NAND) terhadap operasi penulisan sangat terbatas. Jadi, dengan loading aplikasi (dan kernel image) lewat network akan jauh lebih aman. Ketika sudah siap untuk diimplementasikan, aplikasi (dan kernel image) tersebut baru didownload ke flash.

Program yang didownload adalah image linux kernel (zImage) dan direktori root filesystem untuk board target. Di sini, hanya akan diuraikan penggunaan nfs dan tftp untuk board embedded dengan bootloader Redboot. (untuk bootloader lain seperti grub, lilo, u-boot bisa lihat dokumentasi linux, hehehe…).

Program yang akan didownload akan tersimpan di server. Redboot di board target mengenal download file menggunakan trivial ftp, sehingga tftp akan digunakan untuk download file zImage sedangkan untuk root filesystem digunakan NFS dengan memasukkan parameter nfsroot=. Sehingga di server harus dijalankan tftp daemon dan nfs-server daemon.

Download file kernel image

RedBoot> load -r -b 0x00218000 -h 192.168.78.178 zImage-2.4.26-ts9
Using default protocol (TFTP)
Raw file loaded 0x00218000-0x002fe8fb, assumed entry at 0x00218000

Use nfs-exported directory dari server

RedBoot> fis load zImage
RedBoot> exec -c  "console=ttyAM0,115200 ip=dhcp nfsroot=192.168.78.178:/data panic=3s"

Option panic=3s membuat sistem akan reboot setelah 3s saat kernel panic.

Jadi, deh. Lingkung development aplikasi untuk embedded board telah siap.

Iklan
April 17, 2008

Grub: Error 17

Temen punya laptop gak bisa jalan waktu booting ‘Grub: error 17’. Asal mulanya, saat maen di Linux ubuntu, laptop ngehang, trus dimatiin aja. Jadi deh, keluar error ntu.

Cari di google Grub error 17 : Cannot mount selected partition. Ada juga thread error ini di ubuntu panjang banget…, gak usah lah baca itu.

Jelas masalahnya adalah bootloader (grub) tidak dapat menemukan partisi Linux yang dijadikan root. Saya minta temen saya booting dari live-CD (saya prefer dengan distro puppy linux).

Puppy mendeteksi harddisk ada di /dev/hda. Perintah fdisk /dev/hda keluar list partisi, ada windows (NTFS), swap dan Linux di partisi 8 (type 0x83, unknown filesystem type, wow mungkin ini masalahnya). Benar saja, program mount tidak bisa untuk mount partisi ini baik pakai filesystem ext2/3 atau reiser, nihil. Dugaan, partisi rusak saat komputer dipaksa mati.

Salah satu solusi adalah menjalankan fsck /dev/hda8 dari puppy (mungkin dari distro lain, fsck.ext2 atau fsck.ext3 atau fsck.reiserfs), dan fsck dapat mendeteksi partisi tersebut mempunyai ext3 filesystem. Setelah beberapa menit nunggu fsck selesai, fsck melaporkan memang ada inode yang corrupt. OK, udah selesai coba booting tanpa nginstall grub lagi, dan DENK… boot sukses. Gak jadi tuh partisi di berangus… pake mkfs.. hehehe