基于Zynq Linux环境搭建(四)

https://www.cnblogs.com/ifpga/p/8182036.html

此篇编译根文件系统

下载busybox和dropbear,

1

2

3

4

5

6

7

8

9

10

11

12

13

[#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]

  

1

2

3

4

5

6

7

8

9

10

11

[#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

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

1

[#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

1

2

3

4

[#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目录

1

2

3

4

5

6

[#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

1

2

3

4

5

6

7

8

9

[#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

1

2

3

4

5

6

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"文件,内容如下

1

2

3

4

5

6

7

8

9

10

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"文件,内容如下

1

2

touch etc/passwd                                                                    

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

  

创建文件"etc/init.d/rcS" ,内容如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#!/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卡启动进行系统加载

猜你喜欢

转载自blog.csdn.net/wxh0000mm/article/details/84785694