您的位置 首页 发布

制造ZedBoard上linux根文件体系(ramdisk)

制作ZedBoard上linux根文件系统(ramdisk)-Digilent的OOB设计给出了一个ZedBoard上完整的运行的linux系统所需要的所有文件,包括配置FPGA的bit文件、 配置A

Digilent的OOB规划给出了一个ZedBoard上完好的运转的linux体系所需求的一切文件,包含装备FPGA的bit文件、 装备ARM PS体系的First-Stage boot loader(FSBL)和引导linux需求的Second-Stage boot loader(SSBL)、Linux内核zImage、设备树文件devicetree_ramdisk.dtb 以及根文件体系ramdisk8M.image.gz。linux在运转时,加载这个ramdisk8M.image.gz镜像文件到DDR3中来履行完结根文件体系的树立,许多并不像在ubuntu中对文件体系操作那样简略。本末节介绍怎么制造ZedBoard可运转的根文件体系ramdisk8M.image.gz镜像文件,参照xilinx wiki 。

经过本末节的学习,在今后的开发中,能够愈加顺畅的修正文件体系,给规划带来便当。

硬件渠道:Digilent ZedBoard

开发环境:Windows XP 32 bit + Wmare 8.0 + Ubuntu 10.04 + arm-linux-xilinx-gnueabi穿插编译环境

Zedboard linux: Digilent OOB Design

1、FHS(Filesystem Hierarchy Standard)规范介绍

当咱们在linux下输入ls / 的时分,见到的目录结构以及这些目录下的内容都迥然不同,这是因为一切的linux发行版在对根文件体系布局上都遵从FHS规范的主张规则。该规范规则了根目录下各个子目录的称号及其寄存的内容:

目录名

寄存的内容

/bin

必备的用户指令,例如ls、cp等

/sbin

必备的体系管理员指令,例如ifconfig、reboot等

/dev

设备文件,例如mtdblock0、tty1等

/etc

体系装备文件,包含发动文件,例如inittab等

/lib

必要的链接库,例如C链接库、内核模块

/home

普通用户主目录

/root

root用户主目录

/usr/bin

非必备的用户程序,例如find、du等

/usr/sbin

非必备的管理员程序,例如chroot、inetd等

/usr/lib

库文件

/var

看护程序和东西程序所寄存的可变,例如日志文件

/proc

用来供给内核与进程信息的虚拟文件体系,由内核主动生成目录下的内容

/sys

用来供给内核与设备信息的虚拟文件体系,由内核主动生成目录下的内容

/mnt

文件体系挂接点,用于暂时装置文件体系

/tmp

暂时性的文件,重启后将主动铲除

制造根文件体系便是要树立以上的目录,并在其间树立完好目录内容。其进程大体包含:

编译/装置busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录
运用穿插编译东西链,构建/lib目录
手艺构建/etc目录
制造根文件体系的镜像文件
下面就来具体介绍这个进程。

1、编译装置busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

首要下载BusyBox源码,运用指令
git clone git://git.busybox.net/busybox

当然,和平常相同,为了给上不了国外网站的同学们供给便当,这儿供给一个国内的下载链接:

busybox下载

下载后,切换到busybox目录,并进行默许装备
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig

运用指令
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig

翻开可视化界面装备

逐个进入
BusyBox SetTIngs->InstallaTIon OpTIons->BusyBox installaTIon prefix

将目录设置为
/home/devel/_rootfs

保存后退出,并装置busybox
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

装置好后,咱们能够在/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 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文件,内容如下
::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=8192
mke2fs -F ramdisk8M.image -L ramdisk -b 1024 -m 0
tune2fs 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上就能够了。

busybox下载

usr/bin目录文件下载

sbin目录文件下载

lib目录文件下载

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/179667.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部