当前位置: 首页 > news >正文

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

测试

相关文章:

  • 深入解析Java Socket服务器实现:从基础到优雅停机
  • ICP 减少的是 不必要 的回表,而不是 所有 回表
  • 《Java 并发编程实践》阅读笔记(一):线程重要性
  • 空洞卷积(膨胀卷积/扩张卷积)本质理解
  • Java 本地缓存的实现:常见的四种方式
  • 逻辑过期怎么设计
  • PclSharp ——pcl的c#nuget包
  • 自己的账号
  • 细说STM32单片机FreeRTOS任务管理API函数vTaskList()的使用方法
  • 软件测试|App测试相关面试题(3)
  • 2025年第二期DAMA认证考试通知已发布!
  • kali下maven 的安装与配置
  • 自动化构建工具:makemakefile
  • 求简单交错序列前N项和
  • 【Linux我做主】探秘gcc/g++和动静态库
  • RestControllerAdvice 和 ControllerAdvice 两个注解的区别与联系
  • 二十、FTP云盘
  • Operator 开发入门系列(一):Hello World
  • 【Java学习笔记】标识符和保留字
  • NLP高频面试题(四十七)——探讨Transformer中的注意力机制:MHA、MQA与GQA
  • 过去24小时中美是否就关税问题进行过接触?外交部:没有
  • 制定出台民营经济促进法有何重大意义?全国人大常委会法工委回应
  • 李铁案二审今日宣判
  • 北京银行一季度净赚超76亿降逾2%,不良贷款率微降
  • 西班牙葡萄牙电力基本恢复
  • 香港警务处高级助理处长叶云龙升任警务处副处长(行动)