[原创]基于Zynq Linux环境搭建(四)

此篇编译根文件系统

下载busybox和dropbear,

 

[#73#13:04:52 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS]$wget --no-check-certificate https://git.busybox.net/busybox/snapshot/busybox-1_23_1.tar.gz 
--2017-08-14 13:04:56--  https://git.busybox.net/busybox/snapshot/busybox-1_23_1.tar.gz
Resolving git.busybox.net (git.busybox.net)... 140.211.167.122
Connecting to git.busybox.net (git.busybox.net)|140.211.167.122|:443... connected.
WARNING: no certificate subject alternative name matches
        requested host name `git.busybox.net'.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: `busybox-1_23_1.tar.gz'

    [                                                 <=>                ] 2,800,283    230K/s   in 13s     

2017-08-14 13:05:14 (211 KB/s) - `busybox-1_23_1.tar.gz' saved [2800283]

  

[#74#13:05:14 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS]$wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.53.1.tar.gz
--2017-08-14 13:06:25--  http://matt.ucc.asn.au/dropbear/releases/dropbear-0.53.1.tar.gz
Resolving matt.ucc.asn.au (matt.ucc.asn.au)... 130.95.13.18, 2405:3c00:5200:100::18
Connecting to matt.ucc.asn.au (matt.ucc.asn.au)|130.95.13.18|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1772583 (1.7M) [application/x-gzip]
Saving to: `dropbear-0.53.1.tar.gz'

100%[===================================================================>] 1,772,583    156K/s   in 12s     

2017-08-14 13:06:39 (143 KB/s) - `dropbear-0.53.1.tar.gz' saved [1772583/1772583]

  

 

在busybox目录下,默认配置并初始化

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig

可视化配置

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig

 

 

 

安装根文件系统到指定目录

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

 

 

 

在dropbear目录下配置dropbear

/home/fpgadeveloper/Zybo_Demo/XilinxFS/dropbear-0.53.1

 

./configure --prefix=/home/fpgadeveloper/Zybo_Demo/XilinxFS/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并创建符号链接

sudo make install

 

 

建立软连接,进入/home/fpgadeveloper/Zybo_Demo/XilinxFS/RootFS/usr/bin

 

[#23#23:28:47 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/bin]$ln -s ../../sbin/dropbear ./scp

  

将交叉编译库拷贝到下述目录

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/lib/* lib -r

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/sbin/* sbin -r

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r

 

[#123#23:37:50 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$mkdir lib 
[#124#23:38:30 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/lib/* lib -r 
[#125#23:38:33 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/sbin/* sbin -r
[#126#23:38:35 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r

  

在usr目录下创建lib目录

 

[#125#23:38:33 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$cd usr/
[#126#23:42:37 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$ls 
bin  sbin
[#127#23:42:39 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$mkdir lib 
[#128#23:42:43 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$ls 
bin  lib  sbin

  

sudo cp ~/ SDK2015 /lin/arm-xilinx-linux-gnueabi/libc/usr/lib/* usr/lib/ -r

进入到usr/lib路径下,删除

sudo rm -rf locale

sudo rm -rf audit

sudo rm -rf bin

sudo rm -rf gconv

sudo rm *.a

sudo rm *.o

 

[#132#23:43:42 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/lib/* usr/lib/ -r
[#133#23:45:12 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$cd usr/lib/
[#134#23:46:52 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf locale
[#135#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf audit
[#136#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf bin
[#137#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf gconv
[#138#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm *.a
[#139#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm *.o
[#140#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$

  

在文件根目录下运行

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

其中文件都用Xilinx提供的ramdisk里面的文件,并拷贝到相关文件夹中

创建"etc/fstab"文件,内容如下

touch etc/fstab

 

touch etc/fstab                                             
echo "LABEL=/ / tmpfs defaults 0 0            " >> etc/fstab
echo "none /dev/pts devpts gid=5,mode=620 0 0 " >> etc/fstab
echo "none /proc proc defaults 0 0            " >> etc/fstab
echo "none /sys sysfs defaults 0 0            " >> etc/fstab
echo "none /tmp tmpfs defaults 0 0            " >> etc/fstab

  

创建"etc/inittab"文件,内容如下

 

touch etc/inittab                                                  
echo "::sysinit:/etc/init.d/rcS                    " >> etc/inittab
echo "# /bin/ash                                   " >> etc/inittab
echo "#                                            " >> etc/inittab
echo "# Start an askfirst shell on the serial ports" >> etc/inittab
echo "ttyPS0::respawn:-/bin/ash                    " >> etc/inittab
echo "# What to do when restarting the init process" >> etc/inittab
echo "::restart:/sbin/init                         " >> etc/inittab
echo "# What to do before rebooting                " >> etc/inittab
echo "::shutdown:/bin/umount -a -r                 " >> etc/inittab

  

创建"etc/passwd"文件,内容如下

 

touch etc/passwd                                                                     
echo "root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh" >> etc/passwd  

  

创建文件"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"

  

修改权限

sudo chmod 755 etc/init.d/rcS

sudo chown root:root etc/init.d/rcS

制作文件系统

dd if=/dev/zero of=ramdisknew.image bs=1024 count=32768
mke2fs -F ramdisknew.image -L "ramdisk" -b 1024 -m 0
tune2fs ramdisknew.image -i 0
chmod a+rwx ramdisknew.image
sudo mount -o loop ramdisknew.image tmp_mnt_new/
sudo cp -R /home/fpgadeveloper/Zybo_Demo/XilinxFS/RootFS/* tmp_mnt_new/
cd tmp_mnt_new
cd bin/
sudo cp -rf /home/fpgadeveloper/Zybo_Demo/UART_Tools/lrzsz-0.12.20/src/lrz .
sudo cp -rf /home/fpgadeveloper/Zybo_Demo/UART_Tools/lrzsz-0.12.20/src/lsz .
cd ..
cd ..
sudo umount tmp_mnt_new
gzip ramdisknew.image
mkimage -A arm -T ramdisk -C gzip -d ramdisknew.image.gz uramdisk.image.gz

拷贝uboot dtb *uramdisk.image.gz uImage等文件,在SDK环境下合并

可通过qspi flash 或者SD卡启动进行系统加载

转载于:https://www.cnblogs.com/ifpga/p/8182036.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq是一款基于ARM Cortex-A9架构的SoC芯片,它集成了FPGA和处理器,可以实现高性能的数字信号处理和控制。在Zynq上运行Linux操作系统可以充分发挥其处理器的性能和FPGA的可编程性能力,实现复杂的应用。 以下是在Zynq上搭建Linux操作系统的步骤: 1. 准备工作 在开始之前,需要准备好以下工具和材料: - 一台装有Ubuntu操作系统的PC机 - Vivado开发环境 - Xilinx SDK(包含ARM交叉编译器) - Bootgen工具 - SD卡 2. 创建Vivado工程 在Vivado中创建一个新的工程,选择Zynq Processing System作为IP核,并配置好FPGA和处理器的参数。 3. 生成硬件描述文件 在Vivado中生成硬件描述文件(bitstream)。 4. 创建FSBL工程 在Xilinx SDK中创建一个新的FSBL(First Stage Boot Loader)工程,用于加载Linux内核和根文件系统。 5. 编译FSBL 编译FSBL工程,生成boot.bin文件。 6. 创建Linux内核工程 在Xilinx SDK中创建一个新的Linux内核工程,配置好内核参数,并使用ARM交叉编译器编译内核。 7. 生成设备树文件 生成设备树文件(device tree)用于描述硬件系统的配置信息。 8. 创建根文件系统 创建一个根文件系统,包含Linux操作系统所需要的文件和工具。 9. 打包根文件系统 使用Bootgen工具将根文件系统打包成一个文件(image.ub)。 10. 在SD卡中创建分区 将SD卡插入PC机,使用fdisk工具在SD卡中创建两个分区,一个用于存放boot.bin和设备树文件,另一个用于存放根文件系统。 11. 将文件复制到SD卡中 将生成的boot.bin,设备树文件和image.ub复制到SD卡的第一个分区中,将根文件系统复制到第二个分区中。 12. 启动系统 将SD卡插入Zynq开发板中,连接串口和网线,开机启动系统。 以上是在Zynq上搭建Linux操作系统的基本步骤,具体实现过程可能会受到硬件和软件版本的影响。需要根据实际情况进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值