一、  编译环境

1、物理机配置:

1CPUINTEL I7 6700/48线程/2.8GHz

2)内存:16GB

3)硬盘:500GB

2、操作系统:Linux ubuntu-22.04.3-desktop-amd64

二、编译步骤

步骤1      下载Ubuntu系统SDK镜像文件

目标文件名:ubuntu-base-20.04.4-base-arm64.tar.gz

下载网址:http://cdimage.ubuntu.com/ubuntu-base/releases/20.04.4/release/

步骤2      解压Ubuntu系统SDK镜像文件

1)新建文件夹,作为目标系统文件夹

命令:sudo mkdir ubuntu_rootfs

2)解压SDK镜像文件

命令:sudo tar -zxvf ubuntu-base-20.04.5-base-arm64.tar.gz -C ubuntu_rootfs

步骤3      配置仿真开发环境qemu

1)在当前编译环境中安装仿真开发环境

命令:sudo apt install qemu-user-static

2)将当前编译环境中的仿真开发环境复制到目标系统文件夹

命令:sudo cp /usr/bin/qemu-aarch64-static ubuntu_rootfs/usr/bin/

步骤4      配置网络

将当前编译环境中的网络配置文件复制到目标系统文件夹

命令:sudo cp /etc/resolv.conf  ubuntu_rootfs/etc/

步骤5      更换目标系统中的软件源

1)修改目标系统中的软件源配置文件

命令:sudo vim ubuntu_rootfs/etc/apt/sources.list

2)添加阿里云软件源

命令:

deb http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted

deb http://mirrors.aliyun.com/ubuntu-ports/ focal universe

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates universe

deb http://mirrors.aliyun.com/ubuntu-ports/ focal multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security universe

deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security multiverse

步骤6      挂载根文件系统

1)编写挂载脚本

命令:sudo vim mount.sh

挂载脚本文件内容:

#!/bin/bash

function 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 -t devpts -o gid=5,mode=620 devpts ${2}dev/pts

    sudo mount -o bind /dev/pts ${2}dev/pts

    sudo chroot ${2}

}

function 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

elif [ "$1" == "-u" ] && [ -n "$2" ];

then

        umnt $1 $2

else

        echo ""

        echo "Either 1'st, 2'nd or both parameters were missing"

        echo ""

        echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"

        echo "2'nd parameter is the full path of rootfs directory(with tralling '/')"

        echo ""

        echo "For example: ch-mount -m /media/sdcard"

        echo ""

        echo 1st parameter : ${1}

        echo 2nd parameter : $[2]

fi

2)添加脚本执行权限

命令:sudo chmod +x mount.sh

3)挂载根文件系统

命令:./mount.sh -m ubuntu_rootfs/

【备注】当完成根文件系统挂载后,后续命令将在根文件系统中执行,直至根文件系统被卸载(步骤16

步骤7      在根文件系统中安装必要的软件

1)更新安装软件包列表

命令:apt update

2)更新和升级软件包

命令:apt upgrade

3)在目标系统中安装必要的软件

命令:apt install sudo vim udev net-tools ethtool udhcpc netplan.io language-pack-en-base language-pack-zh-han* iputils-ping openssh-sftp-server  ntp usbutils alsa-utils libmtp9   

【备注】安装过程中会提示配置地区和时区

1)亚洲地区选择“6Asia

2)中国时区选择:70Shanghai

3)该步骤下,你可以根据自己的需求,安装所需要的应用软件

步骤8      桌面环境安装

安装轻量级的桌面环境 lubuntu-desktop

命令:apt install lubuntu-desktop

【备注】如果安装过程中提示缺少依赖的组件,可以使用apt命令安装该组件后,再次执行上述命令

步骤9      卸载部分不必要的软件

1)卸载更新通知组件并清除相关配置文件

命令:apt-get remove --purge lubuntu-update-notifier

2)卸载办公套件并清除相关配置文件

命令:apt-get remove --purge libreoffice*

步骤10    添加用户并配置权限

1)在目标系统中添加用户

命令:adduser ubuntu

【备注】ubuntu为用户名,可以按照需要修改为任意其他名称

2)为用户添加管理员权限

命令:adduser ubuntu sudo 

3)修改用户密码

命令:passwd ubuntu

【备注】执行命令后,需要输入2遍口令

4)修改root用户密码

命令:passwd root

步骤11    允许root用户登录桌面

1)修改配置文件,允许root用户登录桌面

命令:vim /etc/gdm3/custom.conf

增加的配置文件内容:

AutomaticLoginEnable = true

AutomaticLogin = ubuntu

AllowRoot=true

修改后的效果:

2)修改配置文件,取消默认情况下不让ROOT用户登录的限制

命令:vim /etc/pam.d/gdm-password

注释掉的配置文件内容:

#auth required pam_succeed_if.so user != root quiet_success

修改后的效果:

3)修改桌面自动登录脚本文件,将autologin-user项修改成自己的用户名

命令:vim /etc/lightdm/lightdm.conf.d/20-autologin.conf

修改后的效果:

【备注】此处的用户名需要与步骤10中添加的用户名保持一致

步骤12    串口自动登录

命令:vim /lib/systemd/system/serial-getty\@.service

修改的配置文件内容:

1)注释:ExecStart=-/sbin/agetty -o -p \u --keep-baud 115200,38400,9600 %I $TERM

2)修改:ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM

修改后的效果:

步骤13    关闭自动休眠

命令:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

步骤14    修改开机等待网络延迟时间

默认情况下,系统启动过程中会出现“A start job is running for wait for network to be Configured”的提示信息,然后开始倒计时5分钟,需要等待倒计时结束后才能继续启动系统,通过修改配置文件,将倒计时时间缩短到5秒或关闭倒计时。

命令:vim  /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service

修改的配置文件内容:

ExecStart=/usr/bin/nm-online -s -q --timeout=0

步骤15    添加分区释放的系统服务(重要)

默认情况下,rootfs分区烧录后,只有固件本身大小。通过添加系统服务,实现分区释放。

1)修改配置文件

命令:vim etc/init.d/resize2fs.sh

修改的配置文件内容:

#!/bin/bash -e

# resize filesystem mmcblk0p6

if [ ! -e "/usr/local/boot_flag" ] ;

then

  echo "Resizing /dev/mmcblk0p6..."

  resize2fs /dev/mmcblk0p6

  touch /usr/local/boot_flag

fi

2)添加配置文件执行权限

命令:chmod +x etc/init.d/resize2fs.sh

3)创建执行上述脚本的系统服务

命令:vim lib/systemd/system/resize2fs.service

系统服务的内容:

#start

[Unit]

Description=Setup rockchip platform environment

Before=lightdm.service

After=resize-helper.service

[Service]

Type=simple

ExecStart=/etc/init.d/resize2fs.sh

[Install]

WantedBy=multi-user.target

#end

步骤16    退出并卸载根文件系统

1)退出根文件系统

命令:exit

2)卸载根文件系统

命令:sudo ./mount.sh -u ubuntu_rootfs/

步骤17    制作文件系统rootfs分区固件

1)创建空镜像文件

命令:sudo dd if=/dev/zero of=ubuntu_rootfs.img bs=1M count=8192

【备注】镜像文件的大小,需要大于上述根文件系统所在文件夹ubuntu_rootfs的整体大小,可以通过du命令查看ubuntu_rootfs

文件夹的大小,然后通过设置count项的值,配置合适的镜像文件大小。

2)将创建的镜像文件格式化为.ext4文件系统

命令:sudo mkfs.ext4 ubuntu_rootfs.img

3)新建一个文件夹,用于挂载

命令:sudo mkdir ubuntu_base_rootfs

【备注】上述文件夹名称ubuntu_base_rootfs可以按照需要修改为任意名称

4)为上述文件夹添加权限

命令:sudo chmod 777 ubuntu_base_rootfs

5)将创建的空白镜像文件挂载到上述文件夹

命令:sudo mount ubuntu_rootfs.img ubuntu_base_rootfs

6)将之前根文件系统所在文件夹内容全部复制到新建的空文件夹

命令:sudo cp -rfp ubuntu_rootfs/* ubuntu_base_rootfs/

7)卸载镜像文件

命令:sudo umount ubuntu_base_rootfs/

8)修复及检测镜像文件系统

命令:sudo e2fsck -p -f ubuntu_rootfs.img

9)压缩镜像文件的大小

命令:sudo resize2fs -M ubuntu_rootfs.img

【备注】上述的2.8小节中的释放rootfs分区大小与这里减少文件大小相关。

10)查看镜像文件的大小

命令:sudo du -sh ubuntu_rootfs.img

步骤18    后续

可以直接将上述ubuntu_rootfs.img镜像文件,通过瑞芯微开发工具的“下载镜像”功能,单独烧录进泰山派开发板。

或者,也可以将上述镜像文件复制到之前编译好的buildroot系统的rockdev文件夹下,然后通过执行build.sh updateimg脚本,打包成统一的update.img镜像文件,通过瑞芯微开发工具的“升级固件”功能,烧录进泰山派开发板。

三、编译成果

【备注】

根据嘉立创吴工指导、网上大佬教程及本人实践总结编写,难免存在错误,请大家(佬)批评指正。

 

\n#学习资料#
#!/bin/bash-e#
#学习资料#
立创开发板

还没有评论,抢个沙发!