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文章
284浏览量
19882 -
Ubuntu
+关注
关注
5文章
560浏览量
29548 -
Firefly
+关注
关注
2文章
538浏览量
6980
原文标题:【RK3399】制作ubuntu20.04 roomfs
文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论