1. 請用 5V 的電源! SD 卡建議選購 8G 以下。32G SD 卡 (實際稱為 SDHC 卡,請見 SD..SDHC 傻傻分不清楚),安裝相當耗時,且不會很順利。
  2. 將映像檔寫進 SD 卡。可能需要接上螢幕,Ubuntu 非 server 版會在 serial console 靜默1)
    $ wget http://cdimage.ubuntu.com/releases/12.04/release/ubuntu-12.04-preinstalled-server-armhf+omap4.img.gz
    $ md5sum http://cdimage.ubuntu.com/releases/12.04/release/ubuntu-12.04-preinstalled-server-armhf+omap4.img.gz
    0c85f1ef517efae28acf062c54943ebf
    # 清空 sd card。
    $ dd if=/dev/zero of=/dev/sdb
    $ gunzip -c ubuntu-12.04-preinstalled-server-armhf+omap4.img.gz | sudo dd bs=1M of=/dev/sdb
    $ sync
  3. 接上 rs232,插上 SD 卡,插上電源。正常應該要亮兩個綠燈。亮一個綠燈代表 SD 卡有問題,亮紅燈代表燒壞了。開始安裝。
  4. 拷貝映像檔。
    # 倒出安裝好的映像檔 (2G sd card)
    $ sudo dd if=/dev/sdb of=card.image
    # 寫至新的 32G sd card
    $ sudo dd if=card.image of=/dev/sdb
    # 使用 gparted。先將 /dev/sdb2 卸載,再放大。
  5. 自行編譯內核。
    # 產生預設 config
    $ ARCH=arm make omap2plus_defconfig 
  1. 調整安裝好的映像檔。
    $ apt-get install partclone
    $ apt-get install btrfs-tools
    # 針對 ext4 檔案系統調整大小。
    $ apt-get install gparted
     
    # http://140.109.23.171/ubuntu-pandaboard/
    # 如果第一個分割起始位置在 32 (安裝),用底下的檔案。
    $ wget http://140.109.23.171/ubuntu-pandaboard/boot.partclone
    # 如果第一個分割起始位置在 2048,用底下的檔案。
    $ wget http://140.109.23.171/ubuntu-pandaboard/boot.partclone-2048
    $ wget http://140.109.23.171/ubuntu-pandaboard/rootfs-btrfs.partclone
     
    # 先把 sdcard 切成兩個分割,第一個放 boot.partclone,並設定成 active; 第二個放 root-btrfs.partclone。
    # http://www.tldp.org/HOWTO/html_single/Partition/ 
    # 用 n 切,用 t 設檔案系統類型,用 a 設定啟動分割。
    $ fdisk /dev/sdb
    /dev/sdb1   *        2048      206847      102400    6  FAT16
    /dev/sdb2          206848    62552063    31172608   83  Linu
     
    # 正常要看到 /dev/sdb1 和 /dev/sdb2
    $ ls /dev/sdb?
    $ partclone.vfat -s boot.partclone -o /dev/sdb1 -r
    $ mount /dev/sdb1 /mnt/tmp
    # boot.scr 和 MLO 是 bootloader,uImage 是內核映像。
    $ ls /mnt/tmp
    boot.scr  MLO  u-boot.bin  uImage  uInitrd
     
    # 請用以下指令寫入 sdcard, sdx2 請依照實際路徑修改,我的是 sdb2。
    # 這裡寫入的檔案系統是 btrfs,故底下用的是 btrfsctl 來調整大小。
    # 遇到 CRC 錯誤,用 md5sum 檢查映像檔的正確性。
    $ partclone.btrfs -s rootfs-btrfs.partclone -o /dev/sdb2 -r
     
    # mount /dev/sdb2 /mnt/tmp
    # 修改 /etc/hosts /etc/hostname /etc/network/interfaces
     
    # 寫入完成後, 依照以下方式調整 size
    # (因每張卡的 boot partition 大小有點差異, 所以還是需要跑 resize, 但速度比 ext4 快很多)
    $ mkdir /mnt/tmp
    $ mount -t btrfs /dev/sdx2 /mnt/tmp
    $ btrfsctl -r max /mnt/tmp
    $ umount /mnt/tmp
     
    # 另外如果發生連 boot loader 都無法載入的情況時,可嘗試把 mbr 清除。
    $ dd if=/dev/zero of=/dev/sdb bs=1024 count=1024
  1. Ubuntu 11.04 Headless 等同之後的 server 版,輸出為 serial console 2)
  2. 安裝完後將原本 ext4 轉成 btrfs 可減輕問題。Ubuntu 11.04 安裝過程較 Ubuntu 11.10 穩定。
    /dev/sdb1   *          32      147455       73712    c  W95 FAT32 (LBA)
    /dev/sdb2          147456    62552063    31202304   83  Linux
     
    # ext4 轉 btrfs。
    $ btrfs-convert /dev/sdb
    # 從 /dev/sdb1 生成 boot.partclone 供之後使用。注意! 透過安裝所得的分割,第一個分割是從 32 開始。
    # 此時所得的 boot.partclone 只適用在寫入從 32 開始的第一個分割。如果是自己手動用 fdisk 切分割,
    # 一般會從 2048 開始,此時所得的 boot.partclone 不能用。解法是先把 boot.partclone 寫入從 2048
    # 開始的第一個分割,再用 partclone 將該分割的內容寫出。這時候所得的 boot.partclone 才可用來寫入從
    # 2048 開始的第一個分割。 
    $ sudo partclone.vfat -s /dev/sdb1 -O boot.partclone -c
    $ sudo partclone.btrfs -s /dev/sdb2 -O rootfs-btrfs.partclone -c

其它

是否用能用 QEMU 模擬 pandaboard? 3)

編譯 Clang 需要超過 1G 的內存,在板子上切出 swap 空間,亦或是安裝 gold。

外部連結