基于zynq的Linux根文件系统生成

linux中root filesystem(根文件系统)是必不可少的,常用的是busybox,本节就介绍一下使用busybox制作linux根文件系统rootfs,主要参考xilinx wiki上zynq root filesystem creation方法:
1. 准备工作: 首先在ubuntu中建立arm gnu交叉编译环境,笔者使用的是ubuntu11.04平台。
通过git下载busybox:
git clone git://git.busybox.net/busybox
2. 编译安装busybox 在ubuntu平台中进入busybox,进行初始化默认配置:
cd busybox
make defconfig
自定义配置busybox,会弹出图形界面设置窗口,如图1所示
make menuconfig
进入busybox settings->installation options->busybox installationprefix设置busybox的安装目录,将其设置为/home/devel/_rootfs,如图2所示。
完成配置后,输入以下脚本安装busybox:
make install
在设置的目录中会生成rootfs,其中包含了bin、sbin、usr/bin和usr/sbin 目录,其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,如图3所示。
3. 编译安装dropbear
dropbear提供支持ssh客户端/服务器功能。
从dropbear网站上下载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中建立链接,如图4所示为生成的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中还需要创建其它目录,如下脚本:
mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www
创建etc/fstab文件:sudo gedit etc/fstab,文件内容如下:
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
创建etc/inittab文件:sudo gedit 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文件:sudo gedit etc/passwd,文件内容如下:
root:$1$qc.cebjc$svjyqm.ig.gkelhaem.fd0:0:0:root:/root:/bin/sh
创建etc/init.d/rcs文件:sudo gedit 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
设置etc/init.d/rcs的权限:
chmod 755 etc/init.d/rcs
sudo chown root:root etc/init.d/rcs
到这一步,rootfs目录算是创建完成了
6. 生成ramdisk镜像文件
rootfs想要被识别,需要将其制作成镜像image文件,并且压缩。如下脚本为创建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镜像文件生成完毕,如图6所示。

Wolfspeed推出SpeedVal Kit™ 平台,采用模块化方法简化评估
电源符合AMD K8低功耗移动规范
河南铁塔成功打造全国首条地铁场景5G三家运营商共享线路
半导体工艺开发:利用虚拟晶圆制造的统计数据来提高良率
VR领头羊:虚拟现实时代来了谁是赢家?
基于zynq的Linux根文件系统生成
科创板西部超导董事施安平介绍、履历信息
合众新能源发布紧凑型SUV哪吒U,NEDC续航里程可超500千米
锁相环的基本原理,锁相环的相位模型及传输函数
日系家电三巨头齐巨亏:供过于求销售下滑
PCB光绘(CAM)的操作流程,你都做到位了吗?
GPS天线应该如何选择
磁阀式电流互感器MVCT的幅频特性研究
2nm战争打响 台积电、三星激战2nm
常用的贴片MOS场效应管分享
信合光电荣获“十大景观亮化企业”
三菱重工收购庞巴迪CRJ项目
浅析一起有载调压开关轻瓦斯报警处理案例
Realme的Narzo 20将在亚洲市场上市
可编程逻辑在微控制器中起什么关键作用