一、环境
PC端ubuntu18.04
嵌入式ARM开发板
二、移植过程
1、下载镜像 ubuntu-base-18.04.5-base-arm64.tar.gz
2、创建目录
mkdir ubuntu_rootfs
3、解压文件
sudo tar xfvp ubuntu-base-18.04.5-base-arm64.tar.gz -C ubuntu_rootfs
4、安装 qemu 工具
sudo apt-get install qemu-user-static
然后:
sudo cp /usr/bin/qemu-arm-static ./ubuntu_rootfs/usr/bin/
sudo cp /usr/bin/qemu-aarch64-static ./ubuntu_rootfs/usr/bin/
5、设置配置文件
sudo cp -av /run/systemd/resolve/stub-resolv.conf ./ubuntu_rootfs/etc/resolv.conf
6、编写挂载和卸载脚本
(1)编写一个mount.sh脚本
#!/bin/bash
echo “MOUNTING”
sudo mount -t proc /proc ./ubuntu_rootfs/proc
sudo mount -t sysfs /sys ./ubuntu_rootfs/sys
sudo mount -o bind /dev ./ubuntu_rootfs/dev
sudo mount -o bind /dev/pts ./ubuntu_rootfs/dev/pts
sudo chroot /home/**/ubuntu_rootfs
(2)编写一个umount.sh脚本
#!/bin/bash
echo “UNMOUNTING”
sudo umount ./ubuntu_rootfs/proc
sudo umount ./ubuntu_rootfs/sys
sudo umount ./ubuntu_rootfs/dev
sudo umount ./ubuntu_rootfs/dev/pts
设置 shell 脚本可执行权限,
sudo chmod 777 mount.sh umount.sh
7、执行
./mount.sh
8:安装常用的命令和软件
#apt update
#apt install -y sudo vim kmod net-tools ethtool ifupdown language-pack-en-base rsyslog htop
#apt-get install vim git openssh-server sudo net-tools iputils-ping wireless-tools udev
#apt-get install htop rsyslog network-manager ifupdown ethtool
#apt-get install florence apt-get install ubuntu-session xubuntu-desktop
#update-alternatives --config x-session-manager
#dpkg-reconfigure lightdm
#echo auto eth0 > etc/network/interfaces.d/eth0
#echo iface eth0 inet dhcp >> etc/network/interfaces.d/eth0
#echo auto wlan0 > etc/network/interfaces.d/wlan0
#echo allow-hotplug wlan0 > etc/network/interfaces.d/wlan0
#echo iface wlan0 inet dhcp >> etc/network/interfaces.d/wlan0
9、增加用户
#vim /ect/hostname
useradd -s ‘/bin/bash’ -m -G adm,sudo userxx
passwd userxx(自己用户,自定义)
passwd 123
10、设置权限
vi /etc/sudoers
root ALL=(ALL:ALL) ALL
userxx ALL=(ALL:ALL) ALL
11、增加日志
touch /var/log/rsyslog
chown syslog:adm /var/log/rsyslog
chmod 666 /var/log/rsyslog
systemctl unmask rsyslog
systemctl enable rsyslog
12、主机名
echo “xxx” > /etc/hostname
echo “127.0.0.1 localhost” > /etc/hosts
echo “127.0.1.1 xxx” >> /etc/hosts
13、串口终端和网络dhcp
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyPS0.service
echo “auto eth0” > /etc/network/interfaces
echo “iface eth0 inet dhcp” >> /etc/network/interfaces
13、退出
exit
./umount.sh
14、文件拷贝,这部分操作根据板子来做,有差异性。
我这边是以一个sd卡启动的镜像为例子。
sd卡分为root(fat32)和rootfs(ext4)两个区域,将生成的系统拷贝到sd卡rootfs区。
常用指令
(sudo mkfs.vfat -F 32 -n BOOT /dev/sdb1
sudo mkfs.ext4 -L ROOTFS /dev/sdb2)
sudo chmod 755 /media/jcl/ROOTFS
sudo chmod 755 /media/jcl/ROOTFS/*
sudo chown root:root /media/jcl/ROOTFS
sudo chown root:root /media/jcl/ROOTFS/*
sudo rm -rfd /media/jcl/ROOTFS/*
sudo cp -a -r -v ./ubuntu_rootfs/* /media/jcl/ROOTFS/
最后执行 sync
然后弹出卡。
15、上板子运行,无界面版本Ubuntu启动,后续可以安装xfce4、weston。