小秦哥 发表于 7 天前

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]
查看完整版本: zynq7020 ubuntu_base 跟文件系统