在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5005|回复: 0

[活动] 【zynq征文】基于zynq的Linux根文件系统生成

[复制链接]
发表于 2013-2-22 09:42:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 huxiaokai2005 于 2013-2-22 09:50 编辑


LinuxRoot Filesystem(根文件系统)是必不可少的,常用的是BusyBox,本节就介绍一下使用BusyBox制作Linux根文件系统rootfs,主要参考xilinx wikiZynq Root FileSystem Creation方法:http://wiki.xilinx.com/zynq-rootfs


1. 准备工作:


首先在Ubuntu中建立arm GNU交叉编译环境,笔者使用的是Ubuntu11.04平台。


通过Git下载BusyBox





  1. git clone git://git.busybox.net/busybox


复制代码


2. 编译安装BusyBox


Ubuntu平台中进入BusyBox,进行初始化默认配置:






  1. cd busybox
  2. make defconfig


复制代码


自定义配置BusyBox,会弹出图形界面设置窗口,如图1所示





  1. make menuconfig


复制代码

Snap1.jpg

1

进入BusyBox Settings->Installation Options->BusyBox installationprefix设置BusyBox的安装目录,将其设置为/home/devel/_rootfs,如图2所示。

Snap2.jpg

2


完成配置后,输入以下脚本安装BusyBox





  1. make install


复制代码


在设置的目录中会生成rootfs,其中包含了binsbinusr/binusr/sbin 目录,其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,如图3所示。

Snap3.jpg

3

3. 编译安装Dropbear


Dropbear提供支持SSH客户端/服务器功能。


Dropbear网站上下载Dropbear,并解压:






  1. wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.53.1.tar.gz
  2. tar xfvz dropbear-0.53.1.tar.gz
  3. cd dropbear-0.53.1


复制代码


配置Dropbear





  1. ./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





  1. make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 strip


复制代码


安装Dropbear,并且在rootfs中建立链接,如图4所示为生成的scp






  1. sudo make install
  2. ln -s ../../sbin/dropbear /home/devel/_rootfs/usr/bin/scp


复制代码

Snap4.jpg

4


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/sbinlibc/usr/bin中的文件也拷贝进去。


5. 其它目录生成和配置


rootfs中还需要创建其它目录,如下脚本:





  1. mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www


复制代码

Snap5.jpg

5


创建etc/fstab文件:sudo gedit etc/fstab,文件内容如下:






  1. LABEL=/    /           tmpfs   defaults        0 0
  2. none       /dev/pts    devpts  gid=5,mode=620  0 0
  3. none       /proc       proc    defaults        0 0
  4. none       /sys        sysfs   defaults        0 0
  5. none       /tmp        tmpfs   defaults        0 0


复制代码

创建etc/inittab文件:sudo gedit etc/inittab,文件内容如下:






  1. ::sysinit:/etc/init.d/rcS

  2. # /bin/ash
  3. #
  4. # Start an askfirst shell on the serial ports

  5. ttyPS0::respawn:-/bin/ash

  6. # What to do when restarting the init process

  7. ::restart:/sbin/init

  8. # What to do before rebooting

  9. ::shutdown:/bin/umount -a –r


复制代码

创建etc/ passwd文件:sudo gedit etc/passwd,文件内容如下:





  1. root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh


复制代码

    创建etc/init.d/rcS文件:sudo gedit etc/init.d/rcS,文件内容如下:






  1. #!/bin/sh

  2. echo "Starting rcS..."

  3. echo "++ Mounting filesystem"
  4. mount -t proc none /proc
  5. mount -t sysfs none /sys
  6. mount -t tmpfs none /tmp

  7. echo "++ Setting up mdev"

  8. echo /sbin/mdev > /proc/sys/kernel/hotplug
  9. mdev -s

  10. mkdir -p /dev/pts
  11. mkdir -p /dev/i2c
  12. mount -t devpts devpts /dev/pts

  13. echo "++ Starting telnet daemon"
  14. telnetd -l /bin/sh

  15. echo "++ Starting http daemon"
  16. httpd -h /var/www

  17. echo "++ Starting ftp daemon"
  18. tcpsvd 0:21 ftpd ftpd -w /&

  19. echo "++ Starting dropbear (ssh)daemon"
  20. dropbear

  21. echo "rcS Complete"


复制代码


设置etc/init.d/rcS的权限:






  1. chmod 755 etc/init.d/rcS
  2. sudo chown root:root etc/init.d/rcS


复制代码


到这一步,rootfs目录算是创建完成了


6. 生成ramdisk镜像文件


rootfs想要被识别,需要将其制作成镜像image文件,并且压缩。如下脚本为创建image文件:






  1. cd ~
  2. dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192
  3. mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0
  4. tune2fs ramdisk8M.image -i 0
  5. chmod 777 ramdisk8M.image


复制代码


新建一个ramdisk目录,然后将ramdisk8M.image加载到该目录下:






  1. mkdir ramdisk
  2. mount -o loop ramdisk8M.image ramdisk/


复制代码


_rootfs/目录下的文件拷贝到ramdisk中:





  1. cp -R /home/devel/_rootfs/* ramdisk


复制代码


拷贝完成后卸载ramdisk





  1. umount ramdisk/


复制代码


最后压缩ramdisk8M.image文件:





  1. gzip -9 ramdisk8M.image


复制代码


ramdisk8M.image.gz镜像文件生成完毕,如图6所示。

Snap6.jpg

6

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 05:57 , Processed in 0.021707 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表