欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > zynq7020 ubuntu_base 跟文件系统

zynq7020 ubuntu_base 跟文件系统

2025/11/17 20:46:55 来源:https://blog.csdn.net/laidene/article/details/147311047  浏览:    关键词:zynq7020 ubuntu_base 跟文件系统

整体流程

  • 制作 ubuntu_base 镜像
  • 运行 petalinux 构建的 ramdisk 系统
  • 用 ramdisk 系统把 ubuntu_base 镜像烧录到 emmc
  • 从 emmc 跟文件系统 启动内核

制作 ubuntu_base 镜像

制作 ubuntu_base 镜像


sudo apt-get install qemu-user-static                           # 安装 qemumkdir temp
sudo tar -xpf ubuntu-base-18.04.5-base-arm64.tar.gz -C temp     # 解压sudo cp -b /etc/resolv.conf temp/etc/resolv.conf                # 准备网络
sudo cp /usr/bin/qemu-aarch64-static temp/usr/bin/              # 准备qemu./mount.sh -m temp/                                             # 挂载
sudo chroot temp/                                               # 进入跟文件系统apt update                                                      # 更新
apt upgradeapt install -y systemd                                          # 必须 sbin/init
apt install udev                                                # 必须 不装串口初始化卡住
apt install net-tools                                           # ifconfig
apt install vim                                                 # vim
sudo apt install iputils-ping                                   # pinguseradd -s '/bin/bash' -m -G adm,sudo c                         # 添加用户 c
passwd c                                                        # 设置密码
passwd root                                                     # 设置密码du . -sh                                                        # 统计大小exit                                                            # 退出跟文件系统
./mount.sh -u temp/                                             # 卸载mkdir  rootfs                                                   #
dd if=/dev/zero of=linuxroot.img bs=1M count=500                # 创建镜像文件
mkfs.ext4 linuxroot.img                                         # 格式化
sudo mount linuxroot.img rootfs/                                # 挂载到rootfs
sudo cp -rfp temp/*  rootfs/                                    # 复制
sudo umount rootfs/                                             # 卸载
e2fsck -p -f linuxroot.img                                      # 自动检查并修复
resize2fs  -M linuxroot.img                                     # 最小化 ext 文件系统镜像大小

挂载卸载脚本

#!/bin/bash
mnt() {echo "mount"sudo mount -t proc  /proc       ${2}procsudo mount -t sysfs /sys        ${2}syssudo mount -o bind  /dev        ${2}devsudo mount -o bind  /dev/pts    ${2}dev/pts
}
umnt() {echo "umount"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev/ptssudo umount ${2}dev
}if [ "$1" == "-m" ] && [ -n "$2" ] ;
thenmnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
thenumnt $1 $2
fi

petalinux 构建 ramdisk 系统

需要用到的命令

  • ifconfg : 配置 ip
  • ssh : 上传 ubuntu_base 镜像
  • mkfs.ext4 : 初始化 ext4
  • mkfs.fat : 初始化 fat32

配置 rootfs 来支持命令

petalinux-config -c rootfs# 勾选以下
ethtools                # ifconfg
e2fsprogs               # mkfs.ext4
dosfstools              # mkfs.fat# 自带sshpetalinux-build -c rootfs

启动 ramdisk

# u-boot 设置网络
setenv ipaddr 192.168.137.10
setenv serverip 192.168.137.1
ping 192.168.137.1# 启动ramdisk
tftpboot 0x10000000 uImage
tftpboot 0x11000000 system.dtb
tftpboot 0x11A00000 rootfs.cpio.gz.u-boot
setenv bootargs console=ttyPS0,115200 root=/dev/ram rw earlyprintk
bootm 0x10000000 0x11A00000 0x11000000# 设置网络
ifconfig eth0 up
ifconfig eth0 192.168.137.10
ping 192.168.137.1# ssh 登录并上传 ubuntu_base 镜像

烧录到 emmc

ls /dev/mmcblk*                 # 查看
sudo fdisk /dev/mmcblk1         # 格式化# 删除
p
d
d# boot分区
n
p
+500M# 跟文件分区
n
p# 设置为fat32
t
1
c# 格式化
mkfs.fat -F 32 -n boot /dev/mmcblk1p1
mkfs.ext4 -L rootfs /dev/mmcblk1p2df -h
umount /dev/mmcblk1p2                           # 卸载
dd if=linuxroot.img of=/dev/mmcblk1p2 bs=2M     # 写入
resize2fs /dev/mmcblk1p2                        # 扩容

从 emmc 跟文件系统 启动

# u-boot 设置网络
setenv ipaddr 192.168.137.10
setenv serverip 192.168.137.1
ping 192.168.137.1# 启动分区的跟文件系统
tftpboot 0x10000000 zImage
tftpboot 0x11000000 system.dtb
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rw rootwait'
bootz 0x10000000 - 0x11000000setenv bootcmd 'tftpboot 0x10000000 zImage; tftpboot 0x11000000 system.dtb; bootz 0x10000000 - 0x11000000'
saveenv
# setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rw rootwait' init=/bin/bash

ubuntu_base 系统初始化

# 设置网络
ifconfig eth0 up
ifconfig eth0 192.168.137.10
ping 192.168.137.1vim /etc/resolv.conf
nameserver 192.168.137.1
options eth0route add default gw 192.168.137.1 eth0#ssh
apt install ssh
systemctl status sshd# 选配 sudo命令报错
hostnamectl set-hostname ccj_pcvim /etc/hosts
127.0.1.1   ccj_pc# 选配 串口不能用root登录
vim /etc/securetty
ttyPS0          # 添加这一行#开机自启网络
vim /etc/systemd/network/10-eth0.network
[Match]
Name=eth0[Network]
Address=192.168.137.10/24
Gateway=192.168.137.1
DNS=192.168.137.1sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd# insmod
apt install kmod

测试

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词