7. SD卡文件內(nèi)容五(rootfs)
Linux中Root Filesystem(根文件系統(tǒng))是必不可少的,常用的是BusyBox,本節(jié)就介紹一下使用BusyBox制作Linux根文件系統(tǒng)rootfs,主要參考xilinx wiki上Zynq Root FileSystem Creation方法:
1. 準備工作:
首先在Ubuntu中建立ARM GNU交叉編譯環(huán)境,筆者使用的是Ubuntu11.04平臺。
通過Git下載BusyBox:
git clone git://git.busybox.net/busybox
復制代碼
2. 編譯安裝BusyBox
在Ubuntu平臺中進入BusyBox,進行初始化默認配置:
cd busybox
make defconfig
自定義配置BusyBox,會彈出圖形界面設置窗口:
make menuconfig
進入BusyBox Settings->Installation Options->BusyBox installationprefix設置BusyBox的安裝目錄,將其設置為/home/devel/_rootfs。
完成配置后,輸入以下腳本安裝BusyBox:
sudo make install
在設置的目錄中會生成rootfs,其中包含了bin、sbin、usr/bin和usr/sbin 目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接。
3. 編譯安裝Dropbear
Dropbear提供支持SSH客戶端/服務器功能。
從Dropbear網(wǎng)站上下載Dropbear,并解壓:
wget
tar xfvz dropbear-0.53.1.tar.gz
cd dropbear-0.53.1
配置Dropbear:
./configure --prefix=/home/devel/_rootfs --host=arm-xilinx-linux-gnueabi --disable-zlib CC=arm-xilinx-linux-gnueabi-gcc LDFLAGS="-Wl,--gc-sections" CFLAGS
="-ffunction-sections -fdata-sections -Os"
編譯Dropbear:
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 strip
安裝Dropbear,并且在rootfs中建立鏈接,生成scp
sudo make install
ln -s ../../sbin/dropbear /home/devel/_rootfs/usr/bin/scp
4. 工具鏈和應用程序配置
需要將Xilinx ARM工具鏈的庫拷貝到rootfs中的lib文件夾下,由于筆者沒有在Ubuntu平臺上安裝ISE套件,因此從Windows平臺上拷貝,在Windows平臺上的位置:*:\Xilinx\14.2\ISE_DS\EDK\gnu\arm\nt\arm-xilinx-linux-gnueabi\libc\lib
然后將libc/sbin和libc/usr/bin中的文件也拷貝進去。
5. 其它目錄生成和配置
rootfs中還需要創(chuàng)建其它目錄,如下腳本:
mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www
創(chuàng)建etc/fstab文件:sudo gedit etc/fstab,文件內(nèi)容如下:
LABEL=/ / tmpfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
none /tmp tmpfs defaults 0 0
創(chuàng)建etc/inittab文件:sudo gedit etc/inittab,文件內(nèi)容如下:
::sysinit:/etc/init.d/rcS
# /bin/ash
#
# Start an askfirst shell on the serial ports
ttyPS0::respawn:-/bin/ash
# What to do when restarting the init process
::restart:/sbin/init
# What to do before rebooting
::shutdown:/bin/umount -a –r
創(chuàng)建etc/ passwd文件:sudo gedit etc/passwd,文件內(nèi)容如下:
root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh
創(chuàng)建etc/init.d/rcS文件:sudo gedit etc/init.d/rcS,文件內(nèi)容如下:
#!/bin/sh
echo "Starting rcS..."
echo "++ Mounting filesystem"
mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs none /tmp
echo "++ Setting up mdev"
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /dev/pts
mkdir -p /dev/i2c
mount -t devpts devpts /dev/pts
echo "++ Starting telnet daemon"
telnetd -l /bin/sh
echo "++ Starting http daemon"
httpd -h /var/www
echo "++ Starting ftp daemon"
tcpsvd 0:21 ftpd ftpd -w /&
echo "++ Starting dropbear (ssh)daemon"
dropbear
echo "rcS Complete"
設置etc/init.d/rcS的權限:
chmod 755 etc/init.d/rcS
sudo chown root:root etc/init.d/rcS
到這一步,rootfs目錄算是創(chuàng)建完成了
6. 生成ramdisk鏡像文件
rootfs想要被識別,需要將其制作成鏡像image文件,并且壓縮。如下腳本為創(chuàng)建image文件:
cd ~
dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192
mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0
tune2fs ramdisk8M.image -i 0
chmod 777 ramdisk8M.image
新建一個ramdisk目錄,然后將ramdisk8M.image加載到該目錄下:
mkdir ramdisk
mount -o loop ramdisk8M.image ramdisk/
將_rootfs/目錄下的文件拷貝到ramdisk中:
cp -R /home/devel/_rootfs/* ramdisk
拷貝完成后卸載ramdisk
umount ramdisk/
最后壓縮ramdisk8M.image文件:
gzip -9 ramdisk8M.image
ramdisk8M.image.gz鏡像文件生成完畢。
附錄A SD卡分區(qū)方法
可以在windows系統(tǒng)和linux中分別進行分區(qū)操作,在linux下使用gparted分區(qū)工具,
在windows推薦使用sd 卡分區(qū)軟件PM9.0 漢化版工具。我是在xp下裝的ubuntu的虛擬機,
因此是在xp下對SD 卡進行分區(qū)的,使用的是PM工具。
使用VMware 虛擬機+gparted對SD卡分區(qū)參考:
安裝過程大同小異,選擇安裝目錄就可以了。
分區(qū)過程如下:
1) 插入SD 卡,容量不小于4GB
2) 將SD 卡格式化為FAT32 格式,注意不要選擇快速格式化
3) 打開PM 軟件,在SD 卡上右鍵打擊,選擇“移動/調整分區(qū)大小”
4) 將下圖的紅線框的數(shù)值改為FAT32 的大小,確保大于50MB,我這邊給的是100MB,
然后點擊線面的兩個框,就會自動更新數(shù)值,然后點擊“是”
5) 鼠標放在上圖藍色區(qū)域,點擊右鍵,選擇“更改卷標”,將其改為BOOT,然后點擊“是”
6) 接下來創(chuàng)建linux 分區(qū):點擊“創(chuàng)建分區(qū)”,然后創(chuàng)建新分區(qū)為“主分區(qū)”,卷標為“rootfs”,文件系統(tǒng)為“Linux
Ext3”,由于只分兩個區(qū),因此新分區(qū)大小就為剩下的區(qū)域的最大值,然后點擊“是”
7) 回到主界面,點擊“應用改變”,一路選擇“yes”。時間比較長,耐心等待
8) 分區(qū)完成后,點擊“close”,退出軟件
9) 要想重新將SD 弄成一個區(qū),只用刪除掉分區(qū),再創(chuàng)建分區(qū),指定大小和格式便可
評論
查看更多