firefly自帶的文件系統,由于缺少一些基本功能模塊,因此,我們可以自己手動制作一個ubuntu20.04的文件系統。
下載Ubuntu根文件系統
安裝虛擬機
apt-getinstallqemu-user-static
解壓
mkdirubuntu-rootfs tar-xpfubuntu-base-20.04.5-base-arm64.tar.gz-Cubuntu-rootfs
復制一下虛擬機的運行環境
cp-b/etc/resolv.confubuntu-rootfs/etc/resolv.conf cp/usr/bin/qemu-aarch64-staticubuntu-rootfs/usr/bin/
復制官方外設驅動文件
將開發板掛載到虛擬機上,將開發板的/vendor,/system,/lib/firmware,這三個文件夾復制到我們自己的文件系統中。
掛載根文件系統
創建ch-mount.sh文件,寫入以下腳本
#!/bin/bash # functionmnt(){ echo"MOUNTING..." sudomount-tproc/proc${2}proc sudomount-tsysfs/sys${2}sys sudomount-obind/dev${2}dev sudomount-obind/dev/pts${2}dev/pts echo"CHROOT..." sudochroot${2} echo"Success!" } functionumnt(){ echo"UNMOUNTING" sudoumount${2}proc sudoumount${2}sys sudoumount${2}dev/pts sudoumount${2}dev } if["$1"=="-m"]&&[-n"$2"]; then mnt$1$2 elif["$1"=="-u"]&&[-n"$2"]; then umnt$1$2 else echo"" echo"Either1'st,2'ndorbothparametersweremissing" echo"" echo"1'stparametercanbeoneofthese:-m(mount)OR-u(umount)" echo"2'ndparameteristhefullpathofrootfsdirectory(withtrailing'/')" echo"" echo"Forexample:ch-mount-m/media/sdcard/" echo"" echo1stparameter:${1} echo2ndparameter:${2} fi
把下載好的腳本置于ubuntu-rootfs目錄的上一級目錄,并修改權限:
chmoda+xch-mount.sh ./ch-mount.sh-mubuntu-rootfs/
執行mount動作,注意退出后一定再執行 ./ch-mount.sh -u ubuntu-rootfs/,否則你的本機ubuntu系統會出問題,需要重啟才能恢復正常。
拷貝bash依賴庫
執行掛載腳本時遇到以下錯誤,可以拷貝bash動態庫。
?toolssudochrootubuntu-rootfs chroot:failedtoruncommand‘/bin/zsh’:Nosuchfileordirectory
查看/bin/bash文件所依賴的動態鏈接庫,然后依次拷貝到相應目錄。由于我安裝了zsh,所以除了拷貝bash動態庫外,還需要拷貝zsh動態庫。沒有安裝zsh的可以不用拷貝zsh動態庫。
zhongyi@ubuntu:~$ldd/bin/zsh linux-vdso.so.1(0x00007ffd5c1dc000) libcap.so.2=>/lib/x86_64-linux-gnu/libcap.so.2(0x00007f4b4d9d7000) libdl.so.2=>/lib/x86_64-linux-gnu/libdl.so.2(0x00007f4b4d7d3000) libtinfo.so.5=>/lib/x86_64-linux-gnu/libtinfo.so.5(0x00007f4b4d5a9000) libm.so.6=>/lib/x86_64-linux-gnu/libm.so.6(0x00007f4b4d20b000) libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f4b4ce1a000) /lib64/ld-linux-x86-64.so.2(0x00007f4b4debc000) zhongyi@ubuntu:~$ldd/bin/bash linux-vdso.so.1(0x00007ffd8335a000) libtinfo.so.5=>/lib/x86_64-linux-gnu/libtinfo.so.5(0x00007f50a4d2a000) libdl.so.2=>/lib/x86_64-linux-gnu/libdl.so.2(0x00007f50a4b26000) libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f50a4735000) /lib64/ld-linux-x86-64.so.2(0x00007f50a526e000)
$mkdirlib64 $cp/lib64/ld-linux-x86-64.so.2./lib64/ $mkdir./lib/x86_64-linux-gnu $cp/lib/x86_64-linux-gnu/libtinfo.so.5./lib/x86_64-linux-gnu/ $cp/lib/x86_64-linux-gnu/libdl.so.2./lib/x86_64-linux-gnu/ $cp/lib/x86_64-linux-gnu/libc.so.6./lib/x86_64-linux-gnu/ $cp/lib/x86_64-linux-gnu/libcap.so.2./lib/x86_64-linux-gnu/ $cp/lib/x86_64-linux-gnu/libm.so.6./lib/x86_64-linux-gnu/ $cp/lib/x86_64-linux-gnu/libc.so.6./lib/x86_64-linux-gnu/ $cp/bin/bashubuntu-rootfs/bin $cp/bin/zshubuntu-rootfs/bin
執行掛載
成功掛載后,會看到自動切換為root用戶。
zhongyi@ubuntu:~/tools$./ch-mount.sh-mubuntu-rootfs/ MOUNTING... CHROOT... zsh:failedtoloadmodule`zsh/zle':/usr/lib/x86_64-linux-gnu/zsh/5.4.2/zsh/zle.so:cannotopensharedobjectfile:Nosuchfileordirectory #已經成功掛載 ubuntu#
安裝必要的軟件
apt-getupdate apt-get-yinstallvimnfs-commonsudosshnet-toolsethtoolwireless-toolsxfce4-power-managerxinitnetwork-manageriputils-pingrsyslogbash-completionlxtaskhtopsynaptic--no-install-recommends
更換源
vim/etc/apt/source.list #添加中科大源 debhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenialmainmultiverserestricteduniverse debhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-backportsmainmultiverserestricteduniverse debhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-proposedmainmultiverserestricteduniverse debhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-securitymainmultiverserestricteduniverse debhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-updatesmainmultiverserestricteduniverse deb-srchttp://mirrors.ustc.edu.cn/ubuntu-ports/xenialmainmultiverserestricteduniverse deb-srchttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-backportsmainmultiverserestricteduniverse deb-srchttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-proposedmainmultiverserestricteduniverse deb-srchttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-securitymainmultiverserestricteduniverse deb-srchttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-updatesmainmultiverserestricteduniverse #添加阿里源 debhttp://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/focal-securitymainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/focal-securitymainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/focal-updatesmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/focal-updatesmainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/focal-proposedmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/focal-proposedmainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/focal-backportsmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/focal-backportsmainrestricteduniversemultiverse #添加清華源 debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focalmainrestricteduniversemultiverse #deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focalmainrestricteduniversemultiverse debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-updatesmainrestricteduniversemultiverse #deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-updatesmainrestricteduniversemultiverse debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-backportsmainrestricteduniversemultiverse #deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-backportsmainrestricteduniversemultiverse debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-securitymainrestricteduniversemultiverse #deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/focal-securitymainrestricteduniversemultiverse
設置賬戶名和密碼
useradd-s'/bin/bash'-m-Gadm,sudofirefly passwdfirefly passwdroot
設置主機名
echo'ubuntu.firefly'>/etc/hostname
添加主機入口到/etc/hosts
127.0.0.1localhost 127.0.0.1ubuntu.firefly 127.0.1.1firefly
添加nameserver
vim/etc/resolvconf/resolv.conf.d/head #添加nameserver nameserver114.114.114.114 nameserver8.8.8.8
取消掛載
exit ./ch-mount.sh-uubuntu-rootfs/
創建 mkrootfs.sh文件,寫入以下腳本,其中2048取決于你的根文件系統實際大小,比如安裝了桌面環境后若大小超過2048M,就改大一點
#!/bin/bash # ddif=/dev/zeroof=ubuntu-rootfs.imgbs=1Mcount=2048 sudomkfs.ext4ubuntu-rootfs.img rm-rrootfs mkdirrootfs sudomountubuntu-rootfs.imgrootfs/ sudocp-rfpubuntu-rootfs/*rootfs/ sudoumountrootfs/ e2fsck-p-fubuntu-rootfs.img resize2fs-Mubuntu-rootfs.img
執行制作
?tools./mkrootfs.sh ?toolsls-al|grep*.img -rw-rw-r--1zhongyizhongyi1497706496Sep3021:32ubuntu-rootfs.img
燒寫鏡像
sudoupgrade_tooldi-rootfsubuntu-rootfs.img
審核編輯:湯梓紅
-
文件系統
+關注
關注
0文章
287瀏覽量
19978 -
Ubuntu
+關注
關注
5文章
566瀏覽量
30033 -
Firefly
+關注
關注
2文章
538瀏覽量
7130
原文標題:【RK3399】制作ubuntu20.04 roomfs
文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論