zynq7020 ubuntu_base 跟文件系统
整体流程[*]制作 ubuntu_base 镜像
[*]运行 petalinux 构建的 ramdisk 系统
[*]用 ramdisk 系统把 ubuntu_base 镜像烧录到 emmc
[*]从 emmc 跟文件系统 启动内核
制作 ubuntu_base 镜像
制作 ubuntu_base 镜像
sudo apt-get install qemu-user-static # 安装 qemu
mkdir 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 upgrade
apt install -y systemd # 必须 sbin/init
apt install udev # 必须 不装串口初始化卡住
apt install net-tools # ifconfig
apt install vim # vim
sudo apt install iputils-ping # ping
useradd -s '/bin/bash' -m -G adm,sudo c # 添加用户 c
passwd c # 设置密码
passwd root # 设置密码
du . -sh # 统计大小
exit # 退出跟文件系统
./mount.sh -u temp/ # 卸载
mkdirrootfs #
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}proc
sudo mount -t sysfs /sys ${2}sys
sudo mount -o bind/dev ${2}dev
sudo mount -o bind/dev/pts ${2}dev/pts
}
umnt() {
echo "umount"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev/pts
sudo umount ${2}dev
}
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
umnt $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
# 自带ssh
petalinux-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/mmcblk1p2
df -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 - 0x11000000
setenv 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.1
vim /etc/resolv.conf
nameserver 192.168.137.1
options eth0
route add default gw 192.168.137.1 eth0
#ssh
apt install ssh
systemctl status sshd
# 选配 sudo命令报错
hostnamectl set-hostname ccj_pc
vim /etc/hosts
127.0.1.1 ccj_pc
# 选配 串口不能用root登录
vim /etc/securetty
ttyPS0 # 添加这一行
#开机自启网络
vim /etc/systemd/network/10-eth0.network
Name=eth0
Address=192.168.137.10/24
Gateway=192.168.137.1
DNS=192.168.137.1
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
# insmod
apt install kmod
测试
略
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]