**
一.前言
**
入手拿到rk3566这块板子后,默认是Android系统,程序存储在emmc(ROM)中。
开机可自检功能是否正常等等。
下载相关资料SDK等等,再安装虚拟机编译(建议使用虚拟机,双系统用了后比较麻烦,但编译速度较快)按照官方流程编译基本不会出错。
关于buildroot,debian,Ubuntu。这三个都是Linux的发行版本。
1.差异
既然都是发行版本那么其差异呢,在于rootfs根文件系统,三者区别就在于此,可以通过单独烧录rootfs来切换版本。如下图所示:
那么问题来了,根据官方的文档,我们是没有Ubuntu系统编译的,该怎么做呢?
通常的方法是这样的:
1.下载要移植的发行版本bash包对于Ubuntu来说通常可以从国内各个镜像源找到对应的版本或者从官网下载
地址 > http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/
2.在足够空间(至少10G)的位置创建文件夹
mk dir XXX
这里用temp来代替
mkdir temp
3.解压到Linux PC端中刚创建的文件(不是泰山派/目标机),
命令如下:
tar -xpf ubuntu-base-18.04.5-base-arm64.tar.gz -C temp/
4.安装模拟器
主要思路是用性能强的电脑PC模拟出开发板系统,挂载Ubuntu,再进行客制化修改(如下载桌面版,vim等等)。
这里安装的是qemu模拟器,无法安装的同学记得换源与更新,这里就不教学了
sudo apt-get install qemu-user-static
5.准备网络
我们的模拟器是没有网络的,所以我们要复制系统网络配置,来让模拟器能够上网
cp -b /etc/resolv.conf temp/etc/resolv.conf
6.配置模拟器
cp /usr/bin/qemu-aarch64-static temp/usr/bin/
7.准备挂载脚本
创建一个sh文件,以方便我们挂载要移植的系统
vim能够创建没有的文件
vim rootfs-mount.sh
将下方代码按I
复制进去 然后ESC
,之后输入:wq
保存退出.
#!/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 chroot ${2}
}
function umnt() {
echo "UNMOUNTING"
sudo umount ${2}/proc
sudo umount ${2}/sys
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 trailing '/')"
echo ""
echo "For example: ch-mount -m /media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
8。添加权限
脚本运行需要诸多权限
sudo chmod +x rootfs-mount.sh
9.挂载系统
sudo bash rootfs-mount.sh -m temp
9.1补充:若是加下来报错就输入下方代码,具体作用作者目前还不清楚,也是入门的记录教程
Get:4 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease [88.7 kB]
0% [1 InRelease gpgv 242 kB]gpgv: Signature made Thu Apr 26 23:38:40 2018 UTC
gpgv: using RSA key 3B4FE6ACC0B21F32
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key (2012)
autolinkftpmaster@ubuntu.comautolink
"
terminate called after throwing an instance of 'std::runtime_error'
what(): random_device::random_device(const std::string&)
qemu: uncaught target signal 6 (Aborted) - core dumped
Aborted (core dumped)
10.更新
记得换源,操作教程都很多
apt-get update
apt upgrade
11.客制化安装功能:
若是无法安装记得 sudo提供权限
推荐必安:
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
Ubuntu桌面版本:
apt-get install xubuntu-desktop
--------下面建议必须装---------
apt-get install vim
#语言包
apt-get install language-pack-en-base
#这个必须要否则无法生成/etc/network/interfaces配网文件
apt-get install ifupdown
#ping
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
wifi
apt-get install wpasupplicant
配置网络:
vim /etc/network/interfaces
source-directory /etc/network/interfaces.d
#以太网
auto eth0
iface eth0 inet dhcp
#wifi
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_config.conf
vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
12.添加用户
添加用户XXX为普通用户名自己改
useradd -s '/bin/bash' -m -G adm,sudo XXX
添加密码
passwd tspi
很重要!!涉及到可能的bug 要记得密码
/# passwd root
退出
exit
sudo bash rootfs-mount.sh -u temp
13.制作根文件系统
查看ROOTFS(根文件系统)大小
sudo du -h --max-depth=1
通常设为6g+,但如果是带桌面建议设置为10g
制作自己的根文件系统,大小依据自己的根文件系统而定,注意依据 temp 文件夹的大小来修改 count 值,因为我们这里的大小为3.5G所以count=5000*bs=1M保证大于我们的temp
mkdir rootfs
dd if=/dev/zero of=linuxroot.img bs=1M count=6000
mkfs.ext4 linuxroot.img
sudo mount linuxroot.img rootfs/
sudo cp -rfp temp/* rootfs/
sudo umount rootfs/
e2fsck -p -f linuxroot.img
resize2fs -M linuxroot.img
linuxroot.img就是最终的镜像文件了
烧录时单独替换根文件系统就行了,即rootfs
可能出现的bug:
开机后输入用户与密码后无限循环:
可通过切换登录root用户后删除原用户更改修复。
最后来个关注吧,用爱发电,造福世界!!!