在survey的過程中,並沒有在raspbian的官網上找到raspbian distro project的位置. 用google能找到的是另一個open source的Distro project: RaspberryPi-BuildRoot . "據說"這個project可以在menu config時選擇哪些套件要包進去,但是因為我想試看看手工下去做rootfs的過程,所以並沒用這個project.
我的做法是:在ubuntu開發PC上,使用Debootstrap下載raspbian下的rootfs相關套件,接著利用qemu配合chroot去config rootfs上的配置(例如帳號密碼)
以下依序列出執行步驟
1. 拿一張新的SD卡,format出兩個partition:一個是FAT的boot(空間大概留50MB),剩下空間給另一個做為rootfs的ETX4 partition.
2. mount這兩個partion到開發PC上,並將你原本RPi記憶卡上boot內的所有檔案複製到新卡的boot.
3. 在開發PC上安裝相關環境
sudo apt-get install qemu qemu-user qemu-user-static binfmt-support debootstrap
4. 假設新卡的rootfs partition mount到/media/rootfs下,執行qemu-debootstrap下載rootfs檔案到/media/rootfs中
cd /media
sudo qemu-debootstrap --arch armhf wheezy rootfs http://archive.raspbian.org/raspbian
5.上一步會執行好一陣子,等完成後應該就有可執行的rootfs. 接著是設定rootfs
6. 準備qemu環境相關
編輯記憶卡內 /etc/qemu-binfmt.conf (如果沒有此檔案,請自己新增),並加入以下這行
EXTRA_OPTS="-L/usr/lib/arm-linux-gnueabihf"
複製qemu所需檔案到rootfs中cp $(which qemu-arm-static) rootfs/usr/bin
7.利用chroot修改rootfs內設定,例如root帳號的密碼
chroot rootfs/ /usr/bin/passwd root
8.複製firmware到rootfs上
複製你原本RPi記憶卡上rootfs下/libs中的modules和firmware到新卡的/libs目錄下
9.補齊firmware
git clone https://github.com/raspberrypi/firmware.git
cp -R /home/user/firmware/hardfp/opt/* rootfs/opt/
到這個階段,你就可以拿新的卡去RPi上測試開機了.不過確認過程中也發現了一些問題
- 下載下來的rootfs還需要很多手工設定,對於沒有做過linux distro的我來說,目前只用root帳號來做簡單驗證
- 無法確定抓下來的rootfs跟官方release image差了多少檔案,因為在我下載的rootfs中就找不到原本應該在usr/bin下的raspi-config
0 意見:
張貼留言