顯示具有 qemu-arm-static 標籤的文章。 顯示所有文章
顯示具有 qemu-arm-static 標籤的文章。 顯示所有文章

2014年3月20日 星期四

為什麼使用debian作為嵌入式系統的根目錄來源

根據維基百科指出,debian的設計理念是「若一段時間無錯誤回報才發行」,因此debian通常用在「不動的」的系統場合,像是伺服器之類的。另外搭配qemu-arm-static程式,可以做到在PC端搭配chroot而成的跨平台根目錄建構用環境,不但可以跨平台建構根目錄,同時debian也有發布多種cpu的套件可供安裝。另外也可以製作「開發用」目錄,也就是在chroot內安裝build-essential開發環境套件,而達到跨平台開發的目的。

惟缺點是,套件通常是舊的,但可經由重新編譯套件原始碼解決。另外組建根目錄的內容皆以PC需求為主,因此根目錄大小往往過於龐大,不利於嵌入式系統所用。

因此目前朝向如何組建最小debian根目錄的方向研究中。

2014年2月14日 星期五

使用debootstrap 在pc上製作arm的root

# 開始之前要確定目錄下沒有名稱是root的資料夾 那是以下設定的目的資料夾
# 使用 sudo apt-get install debootstrap 安裝debootstrap
# 第一階段 會產生一個名為root的資料夾 裡面即將是root結構 下載的套件檔按會放在 root/var/cache

sudo debootstrap --verbose --foreign --variant=minbase --arch=armel squeeze ./root http://ftp.tw.debian.org/debian

# 可以實驗性質的使用 --exclude 參數將套件預設不安裝 要注意必須是從0開始安裝才會看到檔案有減少
#sudo debootstrap --verbose --foreign --variant=minbase --arch=armel --exclude gcc,perl,locale squeeze ./root http://ftp.tw.debian.org/debian

# 置入arm模擬器 使用 sudo apt-get install qemu-user-static 安裝

sudo cp /usr/bin/qemu-arm-static root/usr/bin

# 進入chroot 執行第二階段 使用chroot指令 進入以 root/ 為根目錄的環境 此時裡面的執行檔都是arm的執行檔 所以要有上述模擬器支援 才能進行第二階段的安裝

cd root

sudo chroot $(pwd) /debootstrap/debootstrap --second-stage



# 使用 sudo chroot $(pwd) 在 root/目錄下執行 可進入以 root/ 為根目錄的環境中
# 設定網路 網路將因此開通 之後可以使用chroot指令 執行apt-get或是dpkg 以進行套件安裝或設定

cat > /etc/network/interfaces << EOF

auto lo

iface lo inet loopback

EOF



# 設定套件來源 設定完成後 搭配網路開通 首先執行 apt-get update 系統因此取得最新套件來源列表 之後就可以開始使用apt-get install 指令

cat > /etc/apt/sources.list << EOF

deb http://ftp.debian.org/debian/ squeeze main contrib non-free

deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free 

EOF



# 重置語系檔案

#locale-gen --purge en_US.UTF-8

# 移除locale

#apt-get install localepurge



# 移除不需要檔案 參考資料
# http://www.linuxdiyf.com/bbs/thread-74373-1-1.html
# http://askubuntu.com/questions/129566/remove-documentation-to-save-hard-drive-space



# 製作ramdisk 此時的ramdisk 映像檔大約 <48mb data-blogger-escaped-br="">
cd root

find . | cpio -o -H newc | gzip > ../image.cpio.gz

cd ..

mkimage -T ramdisk -C gzip -n 'Ramdisk Image' -d image.cpio.gz ramdisk.bin

# 參考資料
# http://hi.baidu.com/zengzhaonong/item/365c55c651e11363f7c95d9f