Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >鸿蒙系统研究之四:根文件系统

鸿蒙系统研究之四:根文件系统

作者头像
云水木石
发布于 2021-07-14 03:21:19
发布于 2021-07-14 03:21:19
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

在上一篇文章鸿蒙系统研究之三:迈出平台移植第一步,我们将内核加载并启动,但缺少根文件系统。这篇文章我们来探讨一下根文件系统的制作。

熟悉 Android 系统开发的朋友可能知道,一个 Android 系统镜像通常包括 system.img、userdata.img、recovery.img 等几个系统镜像,这些镜像一般烧录到手机或板子的 Flash 存储上。Vexpress A9 模拟器也可以模拟出 Flash Memory,但容量最多只有 128 M。鸿蒙标准系统面向手机、平板等富资源设备,系统镜像通常有好几百兆,没有办法写入到 Vexpress A9 模拟器的 Flash Memory。但是 Vexpress A9 模拟器支持加载 SD 存储,所以咱们先采取一个变通的方法,将根文件系统和系统文件都放入到 SD 存储中,然后挂载到模拟器中。

鸿蒙系统构建完毕之后,包括 system.img、userdata.img、vendor.img 和 updater.img,但这不是能够挂载到 SD 存储的格式。

研究鸿蒙系统的构建输出,系统文件都输出在 out/ohos-arm-release/packages/phone/images/system 目录下,根文件系统则位于 out/ohos-arm-release/packages/phone/images/root,先把这两个目录的文件整合到一起,生成 ext3 格式的镜像,为此,我们写一个名为 create-fs.sh 的脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
# 0.设置目录变量
OHOS_ROOTFS=../../../out/ohos-arm-release/packages/phone/images

# 1.先进行清理操作
sudo rm -rf rootfs
sudo rm -rf tmpfs
sudo rm -f rootfs.ext3

sudo mkdir rootfs
# 2.创建Linux中的必要文件夹
sudo mkdir -p rootfs/bin   # /bin包含普通用户和超级用户都能使用的命令
sudo mkdir -p rootfs/sbin  # /sbin包含系统运行的关键可执行文件以及一些管理程序
sudo mkdir -p rootfs/home  # /home普通用户的工作目录,没有普通用户都会在这里建立一个文件夹
sudo mkdir -p rootfs/etc   # /etc存放系统配置文件以及应用程序的配置文件
sudo mkdir -p rootfs/lib   # /lib存放所有应用程序的共享文件以及内核模块
sudo mkdir -p rootfs/proc/ # /proc目录是内核在内存中映射的实时文件系统,存放内核向用户应用程序提供的信息文件
sudo mkdir -p rootfs/sys/  # /sys是文件系统挂载的地方
sudo mkdir -p rootfs/tmp/  # /tmp存放系统或应用程序产生的临时文件
sudo mkdir -p rootfs/root/ # /root是超级用户的用户目录
sudo mkdir -p rootfs/var/  # /var存放假脱机数据以及系统日志
sudo mkdir -p rootfs/mnt/  # /mnt用于加载磁盘分区和硬件设备挂载点
sudo mkdir -p rootfs/usr   # /usr包含所有用户的二进制文件和库文件等
sudo mkdir -p rootfs/dev/  # /dev用于存放设备文件
sudo mkdir -p rootfs/system

# 3.将open harmony 根文件系统文件放到rootfs下
sudo cp -arf ${OHOS_ROOTFS}/root/*  rootfs/
sudo cp -arf ${OHOS_ROOTFS}/system/*  rootfs/system/

# 4.创建设备文件
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/null c 1 3

# 5.生成一个空的文件作为文件系统
sudo dd if=/dev/zero of=rootfs.ext3 bs=1M count=1024
sudo mkfs -t ext3 rootfs.ext3

# 6.将文件系统挂载到tmpfs目录下
sudo mkdir -p tmpfs
sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop

# 7.将之前创建的文件系统相关的文件放到通过tmpfs放到rootfs.ext3文件系统中去
sudo cp -r rootfs/*  tmpfs/
sudo umount tmpfs

脚本文件中使用 sudo 的目的是保证 rootfs.ext3 里面的文件的所有者为 root。在 device/qemu/vexpress-a9 下执行该脚本,会在当前目录下生成 rootfs.ext3,先修改文件属性,让模拟器能够加载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo chmod 777 rootfs.ext3

退回到鸿蒙系统源码的根目录下,执行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ qemu-system-arm -M vexpress-a9 -m 512M -dtb ./out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ./out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/arch/arm/boot/zImage -append "root=/dev/mmcblk0 rw console=ttyAMA0 init=/init" -sd ./device/qemu/vexpress-a9/rootfs.ext3 -nographic

可以发现有如下输出:

可以看到,内核加载了,根文件系统也加载了,也执行了超级用户进程 init,遗憾的是,执行中还存在错误。不用担心,我们一步一步来解决问题。

可以看出,这篇文章介绍的方法的不足,系统镜像的文件和根文件系统混在一起。一般而言,根文件系统是加载到内存中,这样做出来的根文件系统太大,比较占内存。一般根文件系统和系统镜像分开加载,在下一篇文章中,我们采用 uboot 来加载内核、根文件系统以及系统镜像。

敬请关注!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云水木石 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用腾讯云搭建Transformer模型训练环境
本教程将介绍如何使用腾讯云的GPU云服务器、对象存储、云原生大数据平台等产品来搭建Transformer模型的训练环境。包括开通云服务、配置环境、代码实现等内容。
Paulette
2023/07/13
9920
腾讯云双十一拼团GO|云产品囤起来
适逢今天是双十一,那么来说说开发者双十一可以上手的东西吧。注意,这里我说的不是开发者外设,而是开发者更需要的云产品,包括云服务器、云存储、CDN、数据库、网络带宽包、视频通信、腾讯云BI、AI人工智能等,总之,你想要的优惠这里都有,只要你需要,那么你就可以停下脚步来选择了,拼团GO火热链接:https://cloud.tencent.com/act/pro/double11-2024?fromSource=gwzcw.8891757.8891757.8891757
六月的雨在Tencent
2024/11/11
5890
奔涌吧,GPU! GPU选型全解密
为了让大家了解不同应用场景下的GPU云服务器选型 我们邀请腾讯云大茹姐姐创作了这篇深度好文 要看完呐~~↓↓↓ 随着云计算、大数据和人工智能技术的飞速发展,算法越来越复杂,待处理的数据量呈指数级增长,当前的X86处理器的数据处理速度,已经不足以满足深度学习、视频转码的海量数据处理需求,大数据时代对计算速度提出了更高的要求,至此,GPU处理器应运而生。 腾讯云根据GPU的应用场景,已推出多款GPU实例,如GN10X/GN10Xp(NVIDIA Tesla V100)、GN7(NVIDIA Tesla
腾讯云计算产品团队
2020/07/16
19.5K1
腾讯云活动来袭,快来成为"双十一折学家"!
在数字化浪潮的席卷下,云计算已逐渐成为各行各业不可或缺的基础设施。腾讯云,作为国内领先的云计算服务商,通过其强大的技术实力和丰富的产品线,为全球用户提供了高效、安全、可靠的云服务。值此双十一之际,腾讯云推出了重磅优惠活动,旨在为广大用户带来前所未有的购买良机。无论你是初涉云计算的初学者,还是经验丰富的网站运维人员,都能在腾讯云双十一活动页面找到适合自己的云产品,享受超值优惠。本文将深入探讨云服务的优势、针对不同开发者的应用,以及腾讯云双十一活动的详细内容,为你呈现一场云端盛宴。
闫同学
2024/11/11
4220
解读腾讯云双十一活动:薅羊毛、省钱攻略与行业选购推荐
每年双十一,腾讯云都会推出一系列重磅优惠活动,今年的玩法同样给力,尤其在轻量应用服务器、云服务器CVM以及下一代CDN-EdgeOne等核心产品上给出了诱人的折扣。本文将为大家解读腾讯云的双十一活动,分析活动机制和省钱策略,并为不同行业、不同业务场景的开发者推荐适合加购的产品,以便最大限度地享受活动福利。
一键难忘
2024/11/11
9380
解读腾讯云双十一活动:薅羊毛、省钱攻略与行业选购推荐
腾讯云GPU云服务器配置初体验
GPU 云服务器(GPU Cloud Computing)是基于 GPU 的快速、稳定、弹性的计算服务,因此,可以广泛应用到深度学习训练/推理、图形图像处理以及科学计算等场景中。 GPU 云服务器提供和标准 CVM 云服务器一致的方便快捷的管理方式。GPU 云服务器通过其强大的快速处理海量数据的计算性能,有效解放用户的计算压力,提升业务处理效率与竞争力。腾讯云的GPU云服务器分为两类,一个是计算型实例服务器,一个是渲染型实例服务器。不管是何种类型的GPU云服务器,都需要配置和安装必要的组件才能正常工作和使用。
liuzhen007
2022/04/11
24.2K0
腾讯云双十一购物体验:解锁云服务新价值
随着科技的飞速发展和数字化转型的推进,云服务已经成为企业和个人开发者不可或缺的一部分。作为一名长期关注云计算领域的开发者,我对腾讯云的双十一活动充满了期待。今年,我不仅为自己和团队选购了多款云产品,还发掘了一些私藏好货,希望能为大家提供一些有价值的参考。
lyushine
2024/11/19
2520
腾讯云:把GPU分开卖是黑科技吗?
1999年,NVIDIA 公司发明了GPU(Graphics Processing Unit,图形处理器),优异的图形处理表现让它艳惊四座。
AI研习社
2019/12/23
5.4K0
腾讯云主要产品都有哪些
总体来说,腾讯云包括云服务器、云数据库、CDN、云安全、万象更新图片和云点播等产品。 通过访问腾讯的云平台,开发者可以降低初始创业成本,更容易应对来自服务器,存储和带宽的压力。
用户3172521
2021/08/26
5.8K0
腾讯云产品有哪些?
腾讯云数据中心的建设,是符合国际ISO标准,以及国内的可信云、信息安全等级保护三级标准,这为数据中心的稳定运行以及安全提供了可靠依据。
用户6630536
2019/11/04
12.1K0
腾讯云产品有哪些?
腾讯云产品有哪些?
腾讯云数据中心的建设,是符合国际ISO标准,以及国内的可信云、信息安全等级保护三级标准,这为数据中心的稳定运行以及安全提供了可靠依据。
tengxunyun8点com活动整理
2019/05/14
13.6K0
腾讯云产品有哪些?
双十一薅羊毛,各家平台大对比🤞🤞💸
双十一购物节不仅是买衣服、电器的好时机,云服务也有非常给力的折扣活动。本文将带你了解其他厂商和腾讯云在今年双十一的优惠活动,帮你用最少的钱获取最佳的云服务体验。
数字扫地僧
2024/11/07
6960
双十一薅羊毛,各家平台大对比🤞🤞💸
腾讯云双十一活动全攻略:高效薅“鹅”毛,省钱之道大揭秘
随着云计算技术的不断发展,云服务已成为企业和开发者不可或缺的一部分。作为国内领先的云服务提供商,腾讯云每年都会在双十一期间推出一系列优惠活动,吸引了大量用户参与。今年的腾讯云双十一活动更是精彩纷呈,优惠力度空前。本文将为大家详细介绍腾讯云双十一活动的各个方面,帮助大家高效薅“鹅”毛,省钱之道大揭秘。
Front_Yue
2024/11/27
6900
腾讯云双十一活动全攻略:高效薅“鹅”毛,省钱之道大揭秘
大模型之战,腾讯来了
9 月 7 日,腾讯在数字生态大会上正式推出混元大模型。据介绍,腾讯混元大模型是由腾讯全链路自研的通用大语言模型,拥有超千亿参数规模,预训练语料超 2 万亿 tokens,具备强大的中文创作能力,复杂语境下的逻辑推理能力,以及可靠的任务执行能力。
深度学习与Python
2023/09/18
3870
大模型之战,腾讯来了
这个双十一腾讯云活动力度杠杠的
腾讯云双十一活动提供了多种优惠产品,适合不同业务场景的需求。通过参与活动,你可以以更低的成本体验和使用这些高性能的云服务,提升业务的智能化水平和用户体验。希望这些介绍和实践探索能帮助你更好地利用腾讯云的优惠活动,推动你的业务发展。如果你有任何问题或需要进一步的帮助,欢迎随时联系我!
快乐的小白
2024/11/06
2980
这个双十一腾讯云活动力度杠杠的
【玩转腾讯云】盘点9款热门的腾讯云产品
最近腾讯云推出了【玩转腾讯云】征文活动,为响应号召,皮皮兴致满满的来参加活动。点开腾讯云产品网页,被里边的产品惊艳到了,只要是你实名认证通过后,就可以免费试用腾讯云产品,过过“云”瘾。这里给大家盘点23款热门的腾讯云产品,一起来看看吧~
前端皮皮
2021/03/31
7.5K0
【玩转腾讯云】盘点9款热门的腾讯云产品
【云顾问-混沌】腾讯云的云上容灾实践
在2023年11月12日,刚经过双11的购物节大压力的阿里,却从17:44起发生了服务宕机,旗下的淘宝、闲鱼、饿了么等服务出现服务中断,甚至让高校学生宿舍的洗衣机都“宕机”了。从阿里云健康看板公布的数据可以看出,阿里云的几乎所有的云产品等服务都受到了影响,影响了全球范围内多个地域。阿里云这次故障,放在整个云厂商界都是炸裂般的存在。阿里云历时3个多小时,服务才陆续恢复。
冷淡然
2023/11/16
7351
【云顾问-混沌】腾讯云的云上容灾实践
腾讯云2022高校计算机赛事资源扶持
为培养云计算技术人才,针对高校组织的计算机相关比赛,腾讯云将免费提供比赛期间的云计算资源支持,鼓励高校学生实现云上便捷开发!
腾讯云-推广奖励
2022/11/22
2.3K0
腾讯云2022高校计算机赛事资源扶持
2024年腾讯云双十一活动攻略:省钱玩法和精选推荐清单【腾讯云双十一活动攻略】
腾讯云的双十一活动每年都是开发者们入手云产品的最佳时机。2024年的活动在玩法上增添了更多趣味,不仅优惠多、力度大,还特别适合小微企业、个人开发者和团队需求。以下是详细的活动解读、薅羊毛省钱攻略和产品推荐清单,帮大家高效地利用这次双十一活动。
喵手
2024/11/23
1.1K0
2024年腾讯云双十一活动攻略:省钱玩法和精选推荐清单【腾讯云双十一活动攻略】
腾讯云双十一攻略:全面揭秘最省钱的玩法,不容错过的隐藏福利!
双十一不仅仅是购物狂欢节,对于希望享受高性能云服务的企业和开发者而言,更是入手腾讯云产品的绝佳时机!然而,面对琳琅满目的产品与各种优惠活动,如何才能买到性价比最高的产品?本文将为你深入剖析腾讯云双十一的优惠机制,教你如何用最少的预算获取最佳的云服务配置,助你在年末冲刺中脱颖而出。
一键难忘
2024/11/10
5651
腾讯云双十一攻略:全面揭秘最省钱的玩法,不容错过的隐藏福利!
推荐阅读
相关推荐
使用腾讯云搭建Transformer模型训练环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验