系统加载

   近期在弄一个设备国产化,涉及到镜像数据加载问题,讲的是基础电子包启动后从server 上下载镜像包并且安装的过程

下载包后安装系统

具体步骤如下:

  1. 下载完镜像就解压然后执行install 脚本
  2. 检测磁盘一般都是两个:一个系统磁盘 一个数据磁盘
  3. 检测 root镜像 、内核镜像 、initrd、恢复系统的initrd 、配置文件是否存在以及 系统盘大小是否足够
  4. 对系统盘重新分区
  5. 分区加密
  6. 分区磁盘创建文件系统
  7. 分区挂载
  8. 将内核镜像、root镜像等解压到分区
  9. mount命令的bind选项将当前运行系统的/proc、/dev、/var、/sys目录绑定到root分区(/mnt)的proc、dev、var、sys目录上
  10. 使用chroot在root分区中运行系统恢复命令
  11. 使用umount断开root分区中proc、dev、var的绑定
  12. 挂载系统盘的启动分区(hda1)到root分区的boot目录上(/opt/boot)
  13. 将系统镜像压缩包目录中的启动内核(vmlinuz)、initrd、恢复initrd、groub.conf 复制启动分区(/opt/boot)中

实际过程就是 在当前A系统下执行一些命令 数据覆盖等操作, 然后重新挂载系统启动分区到某一个目录B, 然后向目录B 中写入新系统镜像A2, 此时系统磁盘启动分区就是新的镜像

涉及到核心步骤有:

一般分为三个步骤:
(1)fdisk 对磁盘进行分区
(2)mkfs 格式化磁盘
(3)mount 挂载磁盘

mount -bind-----<将一个目录挂载绑定到另一个目录,这样相同的文件就有了2种访问位置;

同时存在一下场景:在固件开发过程中临时替换配置文件,在固件开发过程中为测试某个新功能,必需修改某个系统文件。而这个文件在只读文件系统上或者是虽然文件可写,但是自己对这个改动没有把握,不愿意直接修改

假设我们要改的文件是/etc/hosts,可按下面的步骤操作:

1)把新的hosts文件放在/tmp下。

2)mount --bind /tmp/hosts /etc/hosts

测试完成了执行 umount /etc/hosts 断开绑定。

这样就可以防止直接修改 hosts文件导致出现错误

posted @   codestacklinuxer  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示