Tuesday, January 10, 2012

Instalasi Linux Angstrom pada BeagleBoard-xM

Satu lagi hasil ngoprak-ngoprek gak jelas, tapi lumayan nambah ilmu. Tutorial yang udah cukup lama, jadi mungkin aja kadaluarsa. Feel free untuk koreksi ya. Enjoy!
-- Tutorial starts here --


I. Pendahuluan
Linux Angstrom adalah sebuah distribusi linux yang dikembangkan secara spesifik untuk komputer-komputer kecil seperti BeagleBoard-xM. Cara yang paling cepat untuk menjalankan Linux Angstrom adalah dengan menggunakan microSD yang disertakan dalam paket BeagleBoard-xM. MicroSD yang disertakan ini sebenarnya sudah berisi Linux Angstrom, akan tetapi yang disertakan hanyalah Linux Angstrom versi verifikasi. Dengan kata lain, Linux Angstrom versi ini hanya dapat digunakan untuk melakukan verifikasi terhadap seluruh sistem BeagleBoard-xM. Linux versi ini tidak mempunyai graphical user interface (GUI) dan melakukan seluruh pekerjaan seperti sebuah RAM; sehingga semua perubahan yang dilakukan terhadap Linux Angstrom akan hilang.

MicroSD yang disertakan terdiri dari sebuah partisi File Allocation Table (FAT) yang besarnya kira-kira 117MB, sedangkan sisanya tidak terformat (kapasitas microSD yang disertakan adalah 4GB). Partisi yang sudah diformat berisi beberapa file sebagai berikut:
a.       Boot loaders X-loader (MLO) dan U-boot (u-boot.bin)
b.      Kernel Linux (uImage)
c.       Boot script (user.scr)
d.      RAM disk root file system (ramdisk.gz)
e.      md5sum file, untuk pengecekan file

Agar kita dapat menggunakan semua fitur yang dimiliki Linux Angstrom, kita harus membuat sebuah file system Linux Angstrom baru agar mendapatkan akses root dan juga kernel. Pada bagian selanjutnya akan dijelaskan bagaimana mendapatkan image Linux Angstrom yang dibutuhkan dan cara melakukan boot dari image tersebut.

II. Mempersiapkan Beagleboard-xM dan Host (PC/Laptop)
Perhatikan bahwa Beagleboard-xM tidak mendukung sistem plug and play, jadi hubungkan semua perangkat tambahan ke Beagleboard-xM (kecuali port serial boleh terakhir) sebelum menghidupkan Beagleboard-xM.
Linux Angstrom pada BeagleBoard-xM dapat dijalankan sebagai client dan PC/Laptop sebagai host. Keduanya dijalankan sebagai client dan host menggunakan port Serial yang terdapat pada BeagleBoard-xM dan port USB pada host. Untuk itu diperlukan sebuah kabel penghubung dari port USB ke port Serial.

Untuk host, diperlukan sebuah software agar dapat membaca perangkat yang terhubung dengan port USB-Serial, dan semua aktivitas perangkat tersebut (dalam hal ini BeagleBoard-xM) akan ditampilkan dan dikendalikan melalui terminal atau konsol. Untuk sistem operasi Microsoft® Windows®, dapat menggunakan Hyperterminal atau PuTTy. Untuk pengguna Linux dapat menggunakan minicom, seperti yang akan ditampilkan pada contoh dibawah. Sedangkan untuk pengguna Mac dapat menggunakan screen, ZTerm, atau MacWise.

Bagi pengguna Linux yang belum memiliki minicom, jalankan perintah dibawah ini dan masukkan password jika diminta. Pastikan PC/Laptop telah tersambung dengan network/internet.

sudo apt-get install minicom

Setelah minicom terinstal, hubungkan kabel penghubung USB-Serial ke host melalui port USB pada host dan ke BeagleBoard-xM melalui port Serial. Setelah itu jalankan perintah ls /dev/ untuk mengetahui nama perangkat yang akan dihubungkan melalui port Serial. Catat nomor ttyUSBn yang ditampilkan pada konsol.

febrian@ubuntu:~$ ls /dev/
agpgart          fuse     mem                 ram13   sda1      tty12  tty28  tty43  tty59    usbmon0  vcsa2
autofs           hidraw0  net                 ram14   sda2      tty13  tty29  tty44  tty6     usbmon1  vcsa3
block            hidraw1  network_latency     ram15   sda3      tty14  tty3   tty45  tty60    usbmon2  vcsa4
bsg              hpet     network_throughput  ram2    sda4      tty15  tty30  tty46  tty61    usbmon3  vcsa5
btrfs-control    input    null                ram3    serial    tty16  tty31  tty47  tty62    usbmon4  vcsa6
bus              kmsg     oldmem              ram4    sg0       tty17  tty32  tty48  tty63    usbmon5  vcsa7
char             log      pktcdvd             ram5    shm       tty18  tty33  tty49  tty7     v4l      vga_arbiter
console          loop0    port                ram6    snapshot  tty19  tty34  tty5   tty8     vcs      video0
core             loop1    ppp                 ram7    snd       tty2   tty35  tty50  tty9     vcs1     zero
cpu              loop2    psaux               ram8    stderr    tty20  tty36  tty51  ttyS0    vcs2
cpu_dma_latency  loop3    ptmx                ram9    stdin     tty21  tty37  tty52  ttyS1    vcs3
disk             loop4    pts                 random  stdout    tty22  tty38  tty53  ttyS2    vcs4
dri              loop5    ram0                rfkill  tty       tty23  tty39  tty54  ttyS3    vcs5
ecryptfs         loop6    ram1                root    tty0      tty24  tty4   tty55  ttyUSB0  vcs6
fb0              loop7    ram10               rtc     tty1      tty25  tty40  tty56  uinput   vcs7
fd               mapper   ram11               rtc0    tty10     tty26  tty41  tty57  urandom  vcsa
full             mcelog   ram12               sda     tty11     tty27  tty42  tty58  usb      vcsa1

Setelah mengetahui alamat ttyUSBn, jalankan minicom menggunakan perintah di bawah ini.

sudo minicom -s

List di bawah menampilkan contoh tampilan konfigurasi minicom.

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+
Pilih Serial port setup yang akan menampilkan sub-menu seperti di bawah ini (setiap konfigurasi sub-menu dapat berbeda-beda).

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyS0                                |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : Yes                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Buatlah agar sub-menu tersebut memiliki konfigurasi seperti di bawah ini. Perhatikan bahwa nomor ttyUSB tergantung pada nomor yang didapat dari tahap sebelumnya!

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                        |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Setelah yakin semua konfigurasi telah benar, maka simpan konfigurasi ini sebagai default dengan cara memilih pilhan Save setup as dfl lalu keluar dengan memilih Exit. Maka pada konsol akan muncul tampilan minicom seperti di bawah ini.

Welcome to minicom 2.4

OPTIONS: I18n                                                               
Compiled on Jun  3 2010, 13:46:31.                                          
Port /dev/ttyUSB0                                                            
                                                                            
Press CTRL-A Z for help on special keys

Untuk memastikan, nyalakan BeagleBoard-xM (kabel yang terhubung dengan BeagleBoard-xM hanya kabel power dan kabel Serial, jangan ada yang lain) dan tekan sembarang tombol pada keyboard untuk menghentikan hitungan mundur autoboot. Pesan boot-loader akan menampilkan versi X-Loader dan U-boot, tanggal pembuatan, dan lain-lain. Tampilan pada konsol minicom akan seperti di bawah ini.

Texas Instruments X-Loader 1.4.4ss (Jan  4 2011 - 12:38:07)
Beagle xM Rev A
Reading boot sector
Loading u-boot.bin from mmc


U-Boot 2010.03 (Jan 04 2011 - 12:38:02)

OMAP3630/3730-GP ES2.0, CPU-OPP2, L3-165MHz,
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  512 MB
NAND:  0 MiB
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial

Probing for expansion boards, if none are connected you'll see a harmless I2C error.

No EEPROM on expansion board
Beagle xM Rev A
Die ID #45e600011ff00000015739eb0801f02b
Hit any key to stop autoboot:  0
OMAP3 beagleboard.org #

Apabila tampilan sudah seperti di atas, maka host dan BeagleBoard siap digunakan.

III. Tahapan-tahapan Membuat MicroSD Bootable Linux Angstrom
Bagian ini menjelaskan bagaimana mendapatkan image Linux Angstrom yang dibutuhkan dan juga bagaimana melakukan boot dari image tersebut. Disarankan untuk membaca bagian ini terlebih dahulu sampai mengerti urutannya (jangan mencoba sambil membaca), karena apabila urutannya salah maka harus dimulai lagi dari awal.

Berikut adalah tahapan-tahapan membuat microSD bootable Linux Angstrom.
  1. Mengunduh file-file berikut dari http://www.angstrom-distribution.org/demo/beagleboard/
a.    mkcard.txt
b.    MLO
c.     u-boot.bin
d.    Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2

  1. Masukkan microSD dengan kapasitas minimal 4GB (disarankan), dan tentukan nama dari microSD tersebut. Sebagai contoh, jika Anda menggunakan memory card reader, gunakan perintah fdisk dan carilah perangkat yang memiliki karakteristik yang sama dengen microSD yang digunakan. Contoh dibawah ini adalah /dev/sdb :

febrian@ubuntu:~# fdisk –l
...
Disk /dev/sdb: 1977 MB, 1977614336 bytes
255 heads, 63 sectors/track, 240 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1           9       72261    c  W95 FAT32 (LBA)
/dev/sdb2              10         240     1855507+  83  Linux

  1. Unmount semua partisi yang dimiliki microSD. Gunakan nama perangkat dari microSD dan perintah di bawah ini:

sudo umount /dev/sdb?
  1. Format microSD card meggunakan mkcard.txt yang telah diunduh. Gunakan nama perangkat dari microSD dan perintah di bawah ini:

chmod +x mkcard.txt
sudo ./mkcard.txt /dev/sdb
Catatan: Jangan sampai salah dalam melakukan format. Jangan sampai yang diformat adalah file system.

Apabila proses format telah selesai, maka Anda akan mendapatkan sebuah microSD yang memiliki dua buah partisi:
a.      Sebuah partisi FAT berkapasitas 70MB yang diberi label boot.
b.      Sebuah partisi ext3 berlabel Angstrom yang berkapasitas seluruh sisa dari microSD.

Seluruh sisa tutorial ini mengasumsikan bahwa partisi yang dimiliki oleh microSD adalah /media/boot dan /media/Angstrom.

  1. Unpack file Angstrom-Beagleboard.....tar.bz2 kedalam partisi /media/Angstrom (perintah ini memakan cukup banyak waktu).
sudo tar -C /media/Angstrom –xjvf Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2

  1. Pindahkan file-file berikut ke partisi /media/boot  secara berurutan (folder kernel dari partisi /media/Angstrom adalah kosong).

cp MLO /media/boot
cp u-boot.bin /media/boot
cp /media/Angstrom/boot/uImage /media/boot

  1. Setelah semua operasi selesai dilakukan, sinkronisasi file system dan unmount microSD.
sync
sudo umount /dev/sdb?

  1. Masukkan microSD kedalam BeagleBoard-xM dan nyalakan.
Catatan: Apabila saat melakukan boot pertama kali terjadi error seperti ini:
           Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block...
Restart BeagleBoard beserta sistem, hentikan hitungan mundur auto boot, dan ketikkan perintah berikut.
           setenv mmcroot /dev/mmcblk0p2 rw
           boot
Ketika melakukan boot pertama kali, sistem membutuhkan beberapa saat untuk melakukan konfigurasi terhadap sistem secara otomatis. Apabila BeagleBoard-xM terhubung dengan sebuah monitor menggunakan port video output (baik itu DVI-D Connector atau S-Video Connector), maka proses ini akan menampilkan logo Angstrom, sedangkan pada konsol akan menampilkan setiap komponen yang dikonfigurasi. Setelah sekitar 10 menit, maka akan muncul layar login Angstrom pada monitor dan sebuah prompt boot pada konsol. Gunakan layar login untuk membuat sebuah pengguna baru dan log-in, atau dapat pula log-in pada konsol sebagai root (tanpa password). Tampilan konsol (gunakan minicom dan port Serial pada BeagleBoard-xM) pada saat melakukan login diperlihatkan di bawah ini.

.-------.                                          
|       |                  .-.                     
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |
                '---'
The Angstrom Distribution beagleboard ttyS2
Angstrom 2010.7-test-20110104 beagleboard ttyS2
beagleboard login: root
root@beagleboard:~#

IV. Beberapa Hal yang Perlu Diketahui
Bagian ini akan menjelaskan beberapa hal penting yang perlu diketahui setelah berhasil melakukan boot Linux Angstrom pada BeagleBoard-xM. Untuk pengguna yang beru pertama kali menggunakan BeagleBoard-xM dan Linux Angstrom, tidak ada salahnya untuk membaca bagian ini.

1.     Menambahkan Password pada Pengguna
Untuk menambahkan password pada sebuah pengguna, dapat menggunakan baris perintah dibawah ini. 

passwd password

2.     Menambahkan Pengguna Baru
Untuk menambahkan pengguna baru, dapat menggunakan baris perintah dibawah ini.

useradd userBaru

3.     Melakukan Baris Perintah dengan Akses Root (saat menggunakan pengguna selain root)
Bagi yang sudah pernah berinteraksi dengan Ubuntu, pasti sedikit kebingungan saat akan melakukan baris perintah dengan akses root. Biasanya pada Ubuntu hal ini dapat dilakukan dengan menggunakan perintah sudo, namun perintah ini secara default tidak tersedia pada Angstrom. Sayangnya, mengkonfigurasi perintah sudo pada Angstrom cukup sulit, sehingga trik yang biasa dilakukan adalah tetap bekerja pada pengguna root (yang otomatis mendapatkan akses root), atau berpindah dari pengguna biasa ke pengguna root dengan memasukkan perintah dibawah ini (masukkan password root saat diperintahkan, bukan password pengguna seperti Ubuntu). 

su -

4.       Instalasi Software dan Manajemen Package
Seperti pada distribusi Linux lainnya, Angstrom menyediakan sebuah cara standar untuk mengatur software pada sistem, yaitu menggunakan Package Manager yang memungkinkan pengguna untuk melakukan instalasi software yang khusus telah disediakan untuk Angstrom dari local storage dan network repositories. Selain itu pengguna juga dapat menghapusnya sesuai kebutuhan, mencari yang dibutuhkan, dan lain sebagainya.

Angstrom adalah distribusi Linux yang mirip dengan Debian. Akan tetapi, bukannya menggunakan apt untuk melakukan manajemen package, Angstrom menggunakan opkg. Catat bahwa yang terbaik saat melakukan manajemen package adalah menggunakan perintah opkg dan tidak mengutak-atik file perintah tersebut. Berikut ini adalah beberapa trik yang penting untuk diketahui.

a.    Memperbarui Sistem atau Package (via Network)

opkg update
opkg upgrade

Perintah update akan mengunduh seluruh daftar package yang disediakan oleh jaringan resmi Angstrom. Sedangkan perintah upgrade akan memperbarui seluruh sistem dan software yang telah diinstal ke dalam Angstrom.

Catatan: Kedua perintah di atas sangat direkomendasikan saat baru pertama kali melakukan boot Linux Angstrom.

b.    Mencari Package (via Network)
opkg search kataKunci

atau

opkg list | grep kataKunci

c.     Mendapatkan Deskripsi Package
opkg info packagename
d.    Menginstal Package (via Network)

opkg install namaPackage

Catatan: Seluruh package lain yang diperlukan oleh package XYZ secara otomatis akan terinstal pula.

e.    Menginstal Package (via Local Filesystem)

opkg install /dir/dir/namaPackage.ipk
  
Catatan: Package lain yang diperlukan oleh package XYZ tidak secara otomatis terinstal.

f.     Menginstal Package yang Mengalami Konflik
Tidak seperti Ubuntu, Angstrom tidak secara otomatis menghapus package-package yang mengalami konflik. Apabila instalasi mengalami error akibat konflik, maka yang dapat dilakukan adalah menghapus terlebih dahulu package atau (cara terakhir) memakai baris perintah di bawah ini.

opkg install namaPackage --force-overwrite

g.    Menghapus Package

opkg remove namaPackage

Petunjuk: Tambahkan perintah --recursive untuk menghapus seluruh package yang saling berhubungan/bergantungan. Hati-hati!

Catatan: Apabila penghapusan package gagal karena daftar package yang saling berhubungan/bergantungan terlalu banyak, dan yakin kesemuanya tidak akan dipakai lagi, maka bisa menggunakan perintah di bawah ini.

opkg remove namaPackage --force-removal-of-dependent-packages
h.    Mendapatkan Daftar Seluruh Package yang Telah Diinstal pada Sistem
opkg list_installed

V. Referensi
BeagleBoard-xM System Reference Manual Revision A2. http://beagle.s3.amazonaws.com/design/xM-A/BB_xM_SRM_A2_01.pdf
BeagleBoard-xM System Reference Manual Revision A3. http://beagle.s3.amazonaws.com/design/xM-A3/Beagle_SRM_xM_A3_0.pdf
http://www.bidorbuy.co.za/item/21632891/USB_2_0_TO_RS232_SERIAL_DB9_9_PIN_ADAPTER_CABLE.html

-- Tutorial ends here --

Sip, tutorialnya udah beres. Selamat mencoba! :D PS: Yang sabar ngopreknya ya.. :)

1 comment: