zynq7020 ubuntu_base 跟文件系统

打印 上一主题 下一主题

主题 1604|帖子 1604|积分 4812

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
整体流程



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

制作 ubuntu_base 镜像

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

  1. #!/bin/bash
  2. mnt() {
  3.         echo "mount"
  4.         sudo mount -t proc  /proc       ${2}proc
  5.         sudo mount -t sysfs /sys        ${2}sys
  6.         sudo mount -o bind  /dev        ${2}dev
  7.         sudo mount -o bind  /dev/pts    ${2}dev/pts
  8. }
  9. umnt() {
  10.         echo "umount"
  11.         sudo umount ${2}proc
  12.         sudo umount ${2}sys
  13.         sudo umount ${2}dev/pts
  14.         sudo umount ${2}dev
  15. }
  16. if [ "$1" == "-m" ] && [ -n "$2" ] ;
  17. then
  18.         mnt $1 $2
  19. elif [ "$1" == "-u" ] && [ -n "$2" ];
  20. then
  21.         umnt $1 $2
  22. fi
复制代码
petalinux 构建 ramdisk 系统

需要用到的命令



  • ifconfg : 设置 ip
  • ssh : 上传 ubuntu_base 镜像
  • mkfs.ext4 : 初始化 ext4
  • mkfs.fat : 初始化 fat32
设置 rootfs 来支持命令

  1. petalinux-config -c rootfs
  2. # 勾选以下
  3. ethtools                # ifconfg
  4. e2fsprogs               # mkfs.ext4
  5. dosfstools              # mkfs.fat
  6.                         # 自带ssh
  7. petalinux-build -c rootfs
复制代码
启动 ramdisk

  1. # u-boot 设置网络
  2. setenv ipaddr 192.168.137.10
  3. setenv serverip 192.168.137.1
  4. ping 192.168.137.1
  5. # 启动ramdisk
  6. tftpboot 0x10000000 uImage
  7. tftpboot 0x11000000 system.dtb
  8. tftpboot 0x11A00000 rootfs.cpio.gz.u-boot
  9. setenv bootargs console=ttyPS0,115200 root=/dev/ram rw earlyprintk
  10. bootm 0x10000000 0x11A00000 0x11000000
  11. # 设置网络
  12. ifconfig eth0 up
  13. ifconfig eth0 192.168.137.10
  14. ping 192.168.137.1
  15. # ssh 登录并上传 ubuntu_base 镜像
复制代码
烧录到 emmc

  1. ls /dev/mmcblk*                 # 查看
  2. sudo fdisk /dev/mmcblk1         # 格式化
  3. # 删除
  4. p
  5. d
  6. d
  7. # boot分区
  8. n
  9. p
  10. +500M
  11. # 跟文件分区
  12. n
  13. p
  14. # 设置为fat32
  15. t
  16. 1
  17. c
  18. # 格式化
  19. mkfs.fat -F 32 -n boot /dev/mmcblk1p1
  20. mkfs.ext4 -L rootfs /dev/mmcblk1p2
  21. df -h
  22. umount /dev/mmcblk1p2                           # 卸载
  23. dd if=linuxroot.img of=/dev/mmcblk1p2 bs=2M     # 写入
  24. resize2fs /dev/mmcblk1p2                        # 扩容
复制代码
从 emmc 跟文件系统 启动

  1. # u-boot 设置网络
  2. setenv ipaddr 192.168.137.10
  3. setenv serverip 192.168.137.1
  4. ping 192.168.137.1
  5. # 启动分区的跟文件系统
  6. tftpboot 0x10000000 zImage
  7. tftpboot 0x11000000 system.dtb
  8. setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rw rootwait'
  9. bootz 0x10000000 - 0x11000000
  10. setenv bootcmd 'tftpboot 0x10000000 zImage; tftpboot 0x11000000 system.dtb; bootz 0x10000000 - 0x11000000'
  11. saveenv
  12. # setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rw rootwait' init=/bin/bash
复制代码
ubuntu_base 系统初始化

  1. # 设置网络
  2. ifconfig eth0 up
  3. ifconfig eth0 192.168.137.10
  4. ping 192.168.137.1
  5. vim /etc/resolv.conf
  6. nameserver 192.168.137.1
  7. options eth0
  8. route add default gw 192.168.137.1 eth0
  9. #ssh
  10. apt install ssh
  11. systemctl status sshd
  12. # 选配 sudo命令报错
  13. hostnamectl set-hostname ccj_pc
  14. vim /etc/hosts
  15. 127.0.1.1   ccj_pc
  16. # 选配 串口不能用root登录
  17. vim /etc/securetty
  18. ttyPS0          # 添加这一行
  19. #开机自启网络
  20. vim /etc/systemd/network/10-eth0.network
  21. [Match]
  22. Name=eth0
  23. [Network]
  24. Address=192.168.137.10/24
  25. Gateway=192.168.137.1
  26. DNS=192.168.137.1
  27. sudo systemctl enable systemd-networkd
  28. sudo systemctl restart systemd-networkd
  29. # insmod
  30. apt install kmod
复制代码
测试



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表