马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
整体流程
- 制作 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/ # 卸载
- 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}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
- [Match]
- Name=eth0
- [Network]
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |