平台:orangepi4 rockchip rk3399 LPDDR4 4G eMMC 16G
系统:ubuntu 20.04
下载ubuntu-base
ubuntu-base是一个基础的Ubuntu系统,可以理解为最小的Ubuntu系统,本文适用所有arm/aarch64,这里我使用的是ubuntu2020.04版本
wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.3-base-arm64.tar.gz
解压:
mkdir ubuntu2020.04
sudo tar -xzvf http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.3-base-arm64.tar.gz -C ubuntu2020.04/
为系统增加dns域名地址,否则在apt-update的时候可能会报错
sudo vi vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 192.168.1.1
配置qemu
在进行制作文件系统镜像之前需要先对系统安装一些必要的工具,这时候需要用到qemu虚拟机工具,通过虚拟机工具挂载到chroot。chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/
,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/
位置。
安装qemu
sudo apt-get install qemu-user-static
通过以下脚本挂载
#!/bin/bash
mnt ()
{
echo "MOUNTING"
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
sudo chroot ${2}
}
umnt ()
{
echo "UNMOUNTING"
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
echo "mnt -m pwd"
elif [ "$1" = "-u" ] && [ -n "$2" ];
then
umnt $1 $2
echo "mnt -u pwd"
else
echo ""
echo "Either 1'st, 2'nd or bothparameters were missing"
echo ""
echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m/media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
执行挂载
sudo sh ms.sh -m ubuntu2020.04
MOUNTING
root@work-B85M-D3V:/#
系统配置
安装必要工具
apt-get update
apt-get install python3 vim net-tools iputils-ping iproute2 isc-dhcp-client telnetd
可安装图形界面:
apt-get install ubuntu-gnome-desktop
apt-get install xubuntu-desktop
安装图形界面比较久,如果只是验证可不安装
设置密码
passwd root
根据需要修改/etc/fstab,/etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。
# stock fstab - you probably want to override this with a machine specific one
/dev/root / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
tmpfs /var/volatile tmpfs defaults 0 0
# uncomment this if your device has a SD/MMC/Transflash slot
dev/mmcblk0p3 /media/card ext4 defaults 0 0
退出绑定,退出时一定要执行,否则会导致系统出错
root@work-B85M-D3V:/# exit
sudo sh ms.sh -u ubuntu20.04
制作镜像
使用以下脚本
#!/bin/bash
rm -rf rootfs.ext3
rm -rf fs
dd if=/dev/zero of=./rootfs.ext3 bs=1M count=$2
mkfs.ext3 rootfs.ext3
mkdir fs
mount -o loop rootfs.ext3 ./fs
cp -rf ./$1/* ./fs
umount ./fs
gzip --best -c rootfs.ext3 > rootfs.img.gz
我们制作一个ext3文件系统的镜像
sudo sh mkfs.sh ubuntu2020.04 4096
可根据生成的文件夹大小来调整文件系统的大小,生成成功后得到rootfs.ext3文件,将这个文件系统下载到开发板开机: