linux文件系统xilinx,基于zynq的Linux根文件系统生成
发布日期:2021-06-24 16:53:03 浏览次数:2 分类:技术文章

本文共 3244 字,大约阅读时间需要 10 分钟。

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

d8f323da00278f993a19e563ffa3eda9.png

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

ffc88cf374272b680a45f4424662a989.png

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

make install

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

6c55b6d3866dc24c66431aadf83c2833.png

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

cb91c3bc7a1d159b10c5301c21173ba6.png

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

21ba92dfffa721a0a815736a955bc819.png

创建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所示。

转载地址:https://blog.csdn.net/weixin_33960567/article/details/116870603 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:falkon在哪个Linux目录,KaOS 2018.03切换到Falkon浏览器,使用KDE Plasma 5.12 LTS
下一篇:linux运行激战2,在Deepin 20.1系统下可用Wine来模拟运行激战2游戏

发表评论

最新留言

很好
[***.229.124.182]2024年04月20日 16时43分46秒