移植ubuntu18.04.4根文件系統(tǒng)到嵌入式平臺(tái)
1吩案、通過 ubuntu cdimage 下載 ubuntu18.04.4內(nèi)核
在 windows 系統(tǒng)網(wǎng)頁(yè)中下載
版本:ubuntu-base-18.04.4-base-armhf.tar.gz
2赊堪、解壓
$ mkdir linux-rootfs
$ sudo tar -xpf ubuntu-base-18.04.4-base-armhf.tar.gz -C linux-rootfs
3膀跌、在電腦的 ubuntu 系統(tǒng)中安裝模擬器并拷貝到根文件系統(tǒng)
$ sudo apt-get install qemu-user-static
$ sudo cp /usr/bin/qemu-arm-static linux-rootfs/usr/bin/
4奴愉、拷貝本地dns文件到根文件系統(tǒng)
$ sudo cp -b /etc/resolv.conf linux-rootfs/etc/resolv.conf
5蛉加、打開根文件系統(tǒng)中的 linux-rootfs/etc/apt/sources.list 修改安裝包源
$ sudo vim linux-rootfs/etc/apt/sources.list
將屏蔽的源全部打開
6钥弯、掛載腳本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 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
掛載根文件系統(tǒng) ./mount.sh -m linux-rootfs
7宪彩、更新根文件系統(tǒng)
#apt-get update
#apt-get upgrade
8魔市、安裝自己需要的工具包
#apt-get install vim git openssh-server sudo net-tools iputils-ping wireless-tools udev htop rsyslog network-manager ifupdown ethtool florence
安裝登錄界面恋日、顯示界面
XUBUNTU
#apt-get install ubuntu-session xubuntu-desktop
#update-alternatives --config x-session-manager
選擇 lightdm
UBUNTU
#apt-get install ubuntu-session ubuntu-desktop
自動(dòng)選擇gdm3
上述安裝可能報(bào)錯(cuò):
Errors were encountered while processing:
blueman
E: Sub-process /usr/bin/dpkg returned an error code (1)
解決方法:
#cd /var/lib/dpkg/
/var/lib/dpkg# mv info/ info_old
/var/lib/dpkg# mkdir info
/var/lib/dpkg# apt-get update
/var/lib/dpkg# apt-get -f install
/var/lib/dpkg# mv info/* info_old/
/var/lib/dpkg# rm -rf info/
/var/lib/dpkg# mv info_old/ info
9膀篮、配置網(wǎng)絡(luò)
#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
10、修改系統(tǒng)主機(jī)名稱
#vim /ect/hostname
添加用戶岂膳,設(shè)置密碼
useradd -s ‘/bin/bash’ -m -G adm,sudo admin
passwd admin
passwd root
11誓竿、退出掛載腳本
exit
./mount.sh -u linux-rootfs
12、制作鏡像文件
#!/bin/bash -e
TARGET_ROOTFS_DIR=./binary
MOUNTPOINT=./rootfs
ROOTFSIMAGE=linaro-rootfs.img
OUT=./out
echo Making rootfs!
if [ -e ${ROOTFSIMAGE} ]; then
rm ${ROOTFSIMAGE}
fi
if [ -e ${MOUNTPOINT} ]; then
rm -r ${MOUNTPOINT}
fi
#Create directories
mkdir ${MOUNTPOINT}
dd if=/dev/zero of=${ROOTFSIMAGE} bs=1M count=0 seek=6000
finish() {
sudo umount ${MOUNTPOINT} || true
echo -e "\e[31m MAKE ROOTFS FAILED.\e[0m"
exit -1
}
echo Format rootfs to ext4
mkfs.ext4 ${ROOTFSIMAGE}
echo Mount rootfs to ${MOUNTPOINT}
sudo mount ${ROOTFSIMAGE} ${MOUNTPOINT}
trap finish ERR
echo Copy rootfs to ${MOUNTPOINT}
sudo cp -rfp ${TARGET_ROOTFS_DIR}/* ${MOUNTPOINT}
echo Umount rootfs
sudo umount ${MOUNTPOINT}
echo Rootfs Image: ${ROOTFSIMAGE}
e2fsck -p -f ${ROOTFSIMAGE}
resize2fs -M ${ROOTFSIMAGE}
# [ ! -d ${OUT} ] && mkdir ${OUT}
# cp $ROOTFSIMAGE ${OUT}
13谈截,燒錄鏡像筷屡,開機(jī)發(fā)現(xiàn)的的問題
終端無(wú)法打開:
apt-get remove gnome-terminal
apt-get install xterminal
安裝標(biāo)準(zhǔn)ubuntu 用的 gmd3 HDMI登陸界面無(wú)法顯示
vim /etc/gdm3/custom.conf
取消注釋 WaylandEnable = false
#######后續(xù)問題,繼續(xù)完善########