安裝好后,我們能夠在/home/devel/_rootfs目錄下看到生成了的bin sbin usr/bin usr/sbin 目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接。
3、安裝Dropbear
我對dropbear的功能不是很明白,從百度上獲取到的信息是“dropbear實現完整的SSH客戶端和服務器版本2協議。它不支持SSH版本1 的向后兼容性,以節省空間和資源,并避免在SSH
版本1的固有的安全漏洞。還實施了SCP的。SFTP支持依賴于一個二進制文件,可以通過提供的OpenSSH或類似的計劃。”由于xilinx wiki上有這樣的步驟,還是老老實實的做吧。
下載dropbear,并解壓
wget
tar xfvz dropbear-0.53.1.tar.gz
配置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"
編譯
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 strip
安裝dropbear并創建符號鏈接
make install
ln -s /home/devel/_rootfs/usr/bin/scp
4、利用交叉編譯工具鏈,構建/lib目錄
進入/home/devel/_rootfs,創建lib目錄
cd /home/devel/_rootfs
bash> mkdir lib
將交叉編譯環境庫拷貝到這個目錄下
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/lib/* lib -r
同樣,將工具鏈拷貝到sbin/和usr/bin/下
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/sbin/* sbin/ -r
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r
注意:很多網友說,自己的電腦上沒有lin64文件夾,只有nt文件夾。這個問題是由于在安裝ISE版本是,操作系統32位/64位決定的。我在XP(32位)下安裝時也只有nt文件夾,因而我選擇
一個“懶”的方法:把OOB中的lib/、sbin/bin、 usr/bin文件夾直接拷貝出來,相應替換掉。
usr/bin目錄文件下載
sbin目錄文件下載
lib目錄文件下載
5、創建其他目錄和相應配置
至此,幾個重要的目錄和文件都已經創建完畢,需要安裝FHS要求把其他目錄和文件創建。切換到_rootfs目錄下,使用命令
mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www
創建"etc/fstab"文件,內容如下
LABEL=/ / tmpfs defaults 0 0none /dev/pts devpts gid=5,mode=620 0 0none /proc proc defaults 0 0none /sys
sysfs defaults 0 0none /tmp tmpfs defaults 0 0
創建"etc/inittab"文件,內容如下
::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
創建"etc/passwd"文件,內容如下
root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh
創建文件"etc/init.d/rcS" ,內容如下
#!/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"
并設置其權限
chmod 755 etc/init.d/rcS
sudo chown root:root etc/init.d/rcS
BTW,我們的后續設計中,為了實現應用程序上電后自動啟動運行,可以修改rcS文件內容,將應用程序執行命令寫入到rcS文件中。
6、生成ramdisk鏡像文件
至此,根文件系統所有需要的目錄和文件已經準備完畢。查看_rootfs下的內容
這個根文件系統能夠被執行,還需要將其制作成image鏡像文件,并壓縮。
接下來的操作如果和xilinx wiki上操作一致,最終的文件系統并不能被識別,所以這里介紹的和xilinx wiki有少許不同。
創建鏡像文件ramdisk8M.image,并設置大小為8M,文件系統格式為ext2:
cd ~dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0tune2fs ramdisk8M.image -i 0
chmod 777 ramdisk8M.image
大小可以按照需要自己調整,但是最好不要超過32M。
創建ramdisk目錄,將ramdisk8M.image 掛載到該目錄下,
mkdir ramdisk
mount -o loop ramdisk8M.image ramdisk/
接下來,只需要將_rootfs目錄下的內容全部拷貝到ramdisk下即可
cp -R /home/devel/_rootfs/* ramdisk
注意,這里cp的參數一定是R而非r。
這樣,這個鏡像文件的內容就是_rootfs目錄下的內容了。將其卸載就可
umount ramdisk/
到此,根文件系統鏡像文件ramdisk8M.image 制作完成,將其壓縮
gzip -9 ramdisk8M.image
生成ramdisk8M.image.gz文件,拷貝到SD上就可以了。
==========================
評論
查看更多