天天看點

Linux rootfs:移植Ubuntu-base檔案系統到IMX6ULL開發闆

1、鏡像下載下傳

去Ubuutu鏡像官網下載下傳對應CPU架構的鏡像,IMX6ULL支援硬體浮點運算,屬于armhf,是以下載下傳ubuntu-base-16.04.6-base-armhf.tar.gz即可,其他發行版本切換到其他目錄去查找。

注意:ubuntu-base建構的檔案系統是沒有UI界面的!

2、建構Ubuntu-base根檔案系統步驟

(1)解壓鏡像,并且進入檔案系統目錄;
mkdir ubuntu_base_rootfs
sudo tar xzf ubuntu-base-16.04.6-base-armhf.tar.gz -C ./ubuntu_base_rootfs/
cd ubuntu_base_rootfs/
           
(2)PC機安裝qemu,并将它拷貝到鏡像中;
sudo apt install qemu-user-static
sudo cp /usr/bin/qemu-arm-static ./usr/bin/ 	# 把對應CPU架構的qemu程式拷貝過去
           
(3)更改軟體源;
sudo cp /etc/resolv.conf ./etc/resolv.conf
sudo vi ./etc/apt/sources.list
           

sources.list追加的内容如下(使用的是中科大的軟體源):

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
           
(4)在主機上挂載Ubuntu-base檔案系統,用于後面配置系統;
sudo mount -t proc /proc ./proc
sudo mount -t sysfs /sysfs ./sys
sudo mount -o bind /dev ./dev
sudo mount -o bind /dev/pts ./dev/pts
sudo chroot ./ 		# 此時目前目錄是在ubuntu-base目錄下
           
(5)安裝常用軟體到ubuntu-base檔案系統中;
apt update
apt install sudo vim kmod net-tools ethtool ifupdown language-pack-en-base rsyslog iputils-ping
           
(6)設定root使用者的密碼;
passwd root
           
(7)設定本機名稱與IP位址;
echo "yourhostname" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 yourhostname" >> /etc/hosts
           
(8)設定序列槽終端;

以序列槽1為例,它的名稱為ttymxc0,是以使用以下ln指令建立一個軟連結檔案指向

/lib/systemd/system/[email protected]

ln -s /lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]
           
(9)完成,退出!
exit 	# 退出前面的chroot修改的根目錄
sudo umount ./proc
sudo umount ./sys
sudo umount ./dev/pts
sudo umount ./dev
           

3、使用測試

與其他rootfs類似,可以使用NFS挂載,也可以用于生成對應檔案系統類型後直接燒寫到flash上啟動,隻要你喜歡。

4、啟動後進入系統

Ubuntu 16.04.6 LTS yourhostname ttymxc0

yourhostname login: root
Password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.1.15-g49efdaa armv7l)
...
[email protected]:~# 
           

5、一些常用設定

(注意:如果操作過程中提示有錯誤,可以考慮檔案系統是否有rw讀寫權限!)

(1)添加新使用者
[email protected]:/# adduser linrm
Adding user `linrm' ...
Adding new group `linrm' (1000) ...
Adding new user `linrm' (1000) with group `linrm' ...
Creating home directory `/home/linrm' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for linrm
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
[email protected]:/#
[email protected]:/# ls /home/
linrm
[email protected]:/# 
           
(2)設定新使用者可以使用sudo
su
chmod u+w /etc/sudoers
vi /etc/sudoers
yourusername ALL=(ALL:ALL) ALL
chmod u-w /etc/sudoers
           

使用過程中可能會提示一下錯誤提示:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

那麼還需要切換root使用者下執行以下指令:

chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
           
(3)以eth0網卡為例,配置DHCP自動擷取IP位址

如果使用的是NFS網絡檔案系統,這一步暫時不用管。

sudo echo auto eth0 > /etc/network/interfaces.d/eth0
sudo echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
sudo /etc/init.d/networking restart
           

參考文章:

  • https://juejin.cn/post/6844904186367180808

繼續閱讀