联系管理员

开通文章发布权限

扫码 添加微信
微信图片
电话:18888888888 QQ:-

泰山派的Ubuntu编译

前置条件

虚拟机在ubuntu18.4下,
图片#B #S #R #60% #auto

二、编译步骤

步骤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)亚洲地区选择“6,Asia”
图片#B #S #R #60% #auto
(2)中国时区选择:70,Shanghai
图片#B #S #R #60% #auto
(3)该步骤下,你可以根据自己的需求,安装所需要的应用软件

apt install vim
apt install git
apt-get install ssh 
apt-get install ethtool 
apt-get install rsyslog 
apt-get install bash-completion 
apt-get install htop 
apt-get install net-tools 
apt-get install wireless-tools 
apt-get install network-manager 
apt-get install iputils-ping

--------下面建议必须装---------

apt-get install vim #语言包 
apt-get install language-pack-en-base #这个必须要否则无法生成/etc/network/interfaces配网文件 
apt-get install ifupdown
apt-get install inetutils-ping #串口 
apt-get install cutecom #录音 
apt-get install audacity #摄像头 
apt-get install v4l-utils 
apt-get install cheese #浏览器 
apt-get install chromium-browser
apt-get install wpasupplicant


步骤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
修改后的效果:
图片#B #S #R #60% #auto

(2)修改配置文件,取消默认情况下不让ROOT用户登录的限制
命令:vim /etc/pam.d/gdm-password
注释掉的配置文件内容:
#auth required pam_succeed_if.so user != root quiet_success
修改后的效果:
图片#B #S #R #60% #auto
(3)修改桌面自动登录脚本文件,将autologin-user项修改成自己的用户名
命令:vim /etc/lightdm/lightdm.conf.d/20-autologin.conf
修改后的效果:
图片#B #S #R #60% #auto

【备注】此处的用户名需要与步骤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
修改后的效果:
图片#B #S #R #60% #auto
步骤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镜像文件,通过瑞芯微开发工具的“升级固件”功能,烧录进泰山派开发板。

三、编译成果

图片#B #S #R #60% #auto

 

评论

快捷导航

把好文章收藏到微信

打开微信,扫码查看

关闭

还没有账号?立即注册