-
-
-
5V 電源線
Serial to USB 線
8G SD 卡
-
請用 5V 的電源! SD 卡建議選購 8G 以下。32G SD 卡 (實際稱為 SDHC 卡,請見 SD..SDHC 傻傻分不清楚),安裝相當耗時,且不會很順利。
將映像檔寫進 SD 卡。可能需要接上螢幕,Ubuntu 非 server 版會在 serial console 靜默
。
$ 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
接上 rs232,插上 SD 卡,插上電源。正常應該要亮兩個綠燈。亮一個綠燈代表 SD 卡有問題,亮紅燈代表燒壞了。開始安裝。
拷貝映像檔。
# 倒出安裝好的映像檔 (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 卸載,再放大。
自行編譯內核。
# 產生預設 config
$ ARCH=arm make omap2plus_defconfig
調整安裝好的映像檔。
$ 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
-
安裝完後將原本 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?
編譯 Clang 需要超過 1G 的內存,在板子上切出 swap 空間,亦或是安裝 gold。
外部連結