由于作業需要,在做app開發或系統移植時,經常需要編輯系統后重新燒寫例外麻煩,通過NFS掛載根檔案系統就不需要每次更改系統后再進行編譯和燒寫,等開發完成后一次燒寫即可完成,
一、準備材料
可以根據自己的需要準備相應材料,以下是我自己使用的
開發環境:VMware
作業系統:ubuntu
開發版:100dsk_imx6ull
二、環境配置
需要在ubuntu系統上安裝配置NFS和TFTP,具體教程看我之前的筆記連接如下,也可以在百度上直接搜索NFS和TFTP的安裝教程,
TFTP安裝配置https://www.cnblogs.com/jzcn/p/14809035.html
NFS安裝配置https://www.cnblogs.com/jzcn/p/14808681.html
三、制作根檔案系統
1.創建根檔案系統存放目錄
cd /home
sudo mkdir -p image/ubuntu16.04.4
cd image/ubuntu16.04.4
創建完成后需要將路徑“/home/image/ubuntu16.04.4”添加至NFS的共享路徑,別忘記更改路徑的權限
sudo chmod 777 ubuntu16.04.4 -R
2.下載根檔案系統
ubuntu官網根檔案系統下載地址 http://cdimage.ubuntu.com ,根據需要下載自己所需的版本,
進入ubuntu-base/releases/16.04.4/release 路徑,然后下載 ubuntu-base-16.04.4-base-armhf.tar.gz ,
將檔案拷貝到之前創建的 /homeimage/ubuntu16.04.4 檔案下進行解壓,命令如下:
sudo tar zxf ubuntu-base-16.04.4-base-armhf.tar.gz
3.安裝qemu-user-static工具
sudo apt-get install qemu-user-static
安裝完成后拷貝“/usr/bin/qemu-arm-static”到剛剛解壓檔案的“/usr/bin”路徑下,
sudo cp /usr/bin/qemu-arm-static ./usr/bin/
4.網路配置
修改根檔案系統的軟體源
sudo vim ./etc/apt/sources.list
添加ubuntu arm源,我選擇的是中科大的源,在打開檔案的最后填入如下內容:
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
為了制作成功的根檔案系統能夠聯網,可以直接拷貝本機的dns組態檔到根檔案系統的相應位置,
sudo cp /etc/resolv.conf ./etc/resolv.conf
4.掛在根檔案系統并chroot
首先在本機掛載剛剛下載好的檔案系統,聯網完成相應的配置,然后載燒錄到開發板上,需要掛載proc, sys, dev, dev/pts等檔案系統,
為了操作簡單,所以創建一個bash腳本來完成掛載和卸載操作,首先回到上一級目錄“/home/image”,并創建ms.sh檔案
cd ..
vim ms.sh
創建ms.sh檔案的內容如下:
#!/bin/bash
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 -o bind /dev/pts ${2}dev/pts
sudo chroot ${2}
}
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
echo "mnt -m pwd"
elif [ "$1" = "-u" ] && [ -n "$2" ];
then
umnt $1 $2
echo "mnt -u pwd"
else
echo ""
echo "Either 1'st, 2'nd or bothparameters were missing"
echo ""
echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m/media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
掛載根檔案系統,-m表示掛載,-u表示卸載,后面的路徑為解壓獲得的根檔案系統所在的路徑
sudo sh ms.sh -m /home/image/ubuntu16.04.4
掛載成功后輸入ls即可看到如下資訊
root@****:/# ls
bin dev home media opt root sbin sys ubuntu-base-16.04.4-base-armhf.tar.gz var
boot etc lib mnt proc run srv tmp usr
5.安裝軟體
首先更新源
apt update
更新完成,安裝必要軟體,如有需要根據自己需求安裝所需的軟體即可,以下是我使用時需要的軟體:
apt install sudo
apt install ssh
apt install vim
6.用戶配置
設定root密碼
passwd root
創建用戶
adduser imx6ull
設定主機名稱和本機IP
echo "imx6ulll" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.1.1 imx6ulll" >> /etc/hosts
7.配置串口和網路dhcp
通過nfs掛載根檔案系統啟動時,需要將列印的資訊轉到物理串口上才能看到系統系統的資訊,所以需要生成一下鏈接:
ln -s /lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]
配置DHCP,也可以等下載到開發板之后在配置,但啟動時會很慢,
echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
/etc/init.d/networking restart
退出并卸載根檔案系統
exit
sudo sh ms.sh -u /home/image/ubrfs16.04.4/
操作到這里根檔案系統已經制作完成,
三、配置啟動檔案放入TFTP服務器
需要將“100ask_imx6ull-14x14.dtb”和“zImage”放入到TFTP服務器,每個開發版的啟動檔案不同,去找相應的開發資料即可找到,當然會移植系統的小伙伴也可以自己編譯生成相應的檔案,
四、配置uboot
打開開發版進入uboot配置nfs、TFTP、網路即可實作uboot通過nfs掛載根檔案系統,uboot具體配置如下:
setenv ipaddr 192.168.1.99
setenv serverip 192.168.1.66
setenv nfsroot /home/image/ubuntu16.04.4
setenv image zImage
配置完成后可以通過pri查看設定,將配置進行保存并運行,
saveenv
run netboot
到這里任務已經完成,如果有什么理解不對的地方希望小伙伴支出,
問題處理
1.掛載后用戶無寫入權限
掛載登錄后可能出現無寫入權限,如圖所示

出現此問題只需要通過開發環境掛載根檔案系統,然后在 “/etc/fstab” 檔案添加如下內容并重啟開發版即可
sudo sh ms.sh -m /home/image/ubuntu16.04.4
sudo vim /etc/fstab

# stock fstab - you probably want to override this with a machine specific one
/dev/root / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
tmpfs /var/volatile tmpfs defaults 0 0
# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
參考
其中根檔案系統的制作是根據這邊文獻進行整理的 https://blog.csdn.net/sinat_37141443/article/details/80882219
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/285429.html
標籤:Linux
上一篇:ant編譯solr-8.3.0
