0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作ubuntu20.04的文件系统

嵌入式与Linux那些事 来源:嵌入式与Linux那些事 作者:嵌入式与Linux那些 2022-10-17 12:12 次阅读

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

    文章

    273

    浏览量

    19676
  • Ubuntu
    +关注

    关注

    5

    文章

    533

    浏览量

    28834
  • Firefly
    +关注

    关注

    2

    文章

    534

    浏览量

    6757

原文标题:【RK3399】制作ubuntu20.04 roomfs

文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎样利用Ubuntu20.04去安装Mentor Calibre 2020?

    怎样利用Ubuntu20.04去安装Mentor Calibre 2020?有没有人遇到过这个问题啊
    发表于 06-23 07:19

    请问在Ubuntu20.04下如何烧录CH32F103C8T6?

    请教, 在Ubuntu20.04下如何烧录CH32F103C8T6?STM32F1/STM32F4可以通过stlink下载, CH32F103也支持吗?
    发表于 05-20 07:43

    请问ubuntu20.04文件系统的右键是哪个软件实现的呢

    我自己制作了一个ubuntu20.04文件系统,插上usb触摸屏后点击好用,但是长按右键不好用,我试了firefly提供的18.04的文件系统右键是好用的,请问是哪个软件实现的呢?
    发表于 06-27 09:24

    【ROC-RK3568-PC开发板试用体验】Ubuntu20.04桌面系统体验升级与GCC安装

    本视频进行Ubuntu20.04桌面系统体验并升级系统安装GCC视频
    发表于 09-04 23:26

    RK3128制作ubuntu文件系统相关案例分享

    1、rk3128制作ubuntu文件系统  制作文件系统很简单,重要的是缕清思路。  制作过程有很多我就不赘述了程。  下面
    发表于 11-18 16:45

    RK3588S-PC的ubuntu20.04系统上运行ros报错

    用官方的ubuntu20.04安装ros 运行示例时出现如下问题,请问我该怎么解决
    发表于 12-30 14:35

    RK3399升级为ubuntu20.04后无法连接wifi怎么解决?

    问题描述及复现步骤:RK3399升级为ubuntu20.04后无法连接wifi,请问是什么原因呢,怎么解决还有,log日志我也不知道传啥,瞎弄的一个文件
    发表于 01-10 15:05

    Ubuntu20.04系统中,如何将Vivado编辑器配置成Vim?

    我现在使用的系统ubuntu20.04,安装了2022.1版本的vivado,我想将vivado的编辑器设置成vim,但是我一直无法成功。我尝试将“/usr/bin/vim"添加到
    发表于 01-31 10:29

    【飞腾派4G版免费试用】如何定制飞腾平台的ubuntu rootfs 根文件系统(1)

    binfmt-support debootstrap 5 Ubuntu20.04文件系统制作 使用debootstrap 工具生成arm64 基础rootfs包
    发表于 12-10 19:13

    FireflyRK3128主板Ubuntu文件系统创建

    创建 Ubuntu文件系统 使用 miniroot 来创建并引导系统
    的头像 发表于 11-29 09:00 2782次阅读
    FireflyRK3128主板<b class='flag-5'>Ubuntu</b> 根<b class='flag-5'>文件系统</b>创建

    fireflyAIO-3399C主板创建Ubuntu文件系统

    创建 Ubuntu文件系统 准备工作 安装qemu
    的头像 发表于 12-13 10:42 1015次阅读

    Ubuntu20.04系统中使用用STM32F2107RCT6点亮一个二极管灯

    Ubuntu20.04系统中使用用STM32F2107RCT6点亮一个二极管灯
    发表于 12-05 14:51 8次下载
    <b class='flag-5'>Ubuntu20.04</b><b class='flag-5'>系统</b>中使用用STM32F2107RCT6点亮一个二极管灯

    【ROC-RK3568-PC开发板试用体验】Ubuntu20.04桌面系统体验升级与GCC安装

    本文来源电子发烧友社区,作者:李先生, 帖子地址: https://bbs.elecfans.com/jishu_2303743_1_1.html 本视频进行Ubuntu20.04桌面系统体验 并升级系统 安装GCC 体验视频详
    的头像 发表于 10-18 16:02 1146次阅读

    ubuntu20.04安装教程

    Ubuntu 20.04 的安装步骤如下: 制作启动U盘。首先下载Ubuntu 20.04的镜像文件
    的头像 发表于 11-13 16:59 993次阅读

    Ubuntu 20.04如何更改用户名

    产品简介本文适用于所有RK3568/RK3588平台产品在Ubuntu20.04系统上如何更改用户名,本文以IDO-EVB3588开发板为例,在ubuntu20.04系统上修改用户名i
    的头像 发表于 01-26 08:34 285次阅读
    <b class='flag-5'>Ubuntu</b> <b class='flag-5'>20.04</b>如何更改用户名