当前位置: 首页 > news >正文

Ubuntu 抽取系统制作便于chroot的镜像文件

在这里插入图片描述

前文:Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译


     考虑到某些平台的编译要求持续更新, Ubuntu18.04已经不在支持后续的开发, 于是筹备制作一个基于Ubuntu20.04 的系统镜像.

     在 Ubuntu 20.04 系统中创建一个系统镜像文件(img 文件),并确保其可以在另一台 Ubuntu 系统上通过 mountchroot 使用,需要一系列步骤来完成系统备份、镜像创建以及后续的挂载操作。


准备工作

  1. 确认目标系统环境

    • 确保当前 Ubuntu 20.04 系统运行正常,且具有管理员权限(sudo)。
    • 准备一个足够大的存储设备(如外接硬盘或分区),用于存放生成的镜像文件。
    • 确保目标 Ubuntu 系统(用于挂载和 chroot 的系统)与源系统架构相同(例如,均为 x86_64)。
  2. 安装必要的工具
    执行以下命令安装所需工具:

    sudo apt update
    sudo apt install -y rsync
    
  3. 清理系统
    在创建镜像前,清理系统以减少不必要的文件:

    sudo apt clean
    sudo rm -rf /var/log/*
    

创建系统镜像文件

  1. 创建空的镜像文件
    使用 dd 命令创建一个空的镜像文件,大小需足够容纳整个系统(建议比实际使用空间大 20% 以上)。例如,创建一个 30GB 的镜像文件:

    sudo dd if=/dev/zero of=/path/to/u20.img bs=1M count=30720
    
    • /path/to/u20.img:指定镜像文件的存储路径(确保有足够空间)。
    • bs=1M:块大小为 1MB。
    • count=30720:生成 30GB 的镜像文件(可根据需要调整)。
  2. 格式化镜像文件
    将镜像文件格式化为文件系统(如 ext4):

    sudo mkfs.ext4 /path/to/u20.img
    
  3. 挂载镜像文件
    创建一个挂载点并挂载镜像文件:

    sudo mkdir /mnt/img_mount
    sudo mount -o loop /path/to/u20.img /mnt/img_mount
    
  4. 使用 rsync 复制系统
    使用 rsync 将当前系统复制到挂载的镜像文件中,排除一些动态不必要的目录(如 /proc/sys 等):

    sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/img_mount
    
    • -aAXv:保留文件权限、属性,并显示复制进度。
    • --exclude:排除不需要复制的目录。
  5. 卸载镜像
    复制完成后,卸载镜像文件:

    sudo umount /mnt/img_mount
    

将镜像文件传输到目标系统

  1. 传输镜像文件
    system.img 文件传输到目标 Ubuntu 系统,例如通过 USB 驱动器或网络传输:
    scp /path/to/u20.img user@target_system:/path/to/destination
    

使用镜像

参考: Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译

注意事项

  1. 硬件兼容性

    • 目标系统的硬件(如 CPU 架构)需与源系统兼容。
    • 某些硬件驱动(如显卡、网卡)可能需要重新配置。
  2. 内核和引导

    • 本方法仅复制根文件系统,未包含内核和引导加载程序(如 GRUB)。若需完整启动,需额外配置目标系统的内核和引导。
  3. 权限和安全性

    • 确保镜像文件的权限安全,防止未经授权访问。
    • 在 chroot 环境中避免执行可能破坏系统的操作。
  4. 存储空间

    • 镜像文件可能占用较大空间,建议在复制前压缩:
      gzip /path/to/system.img
      
      在目标系统上解压:
      gunzip /path/to/system.img.gz
      
  5. 一些问题

    1. 关于sudo: unable to resolve host ubuntu的报错提示
    2. 最好统一一个用户名, 避免出现权限问题

参考

Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译

http://www.dtcms.com/a/304504.html

相关文章:

  • C#开发基础之深入理解“集合遍历时不可修改”的异常背后的设计
  • 三十一、【Linux网站服务器】搭建httpd服务器演示个人主页、用户认证、https加密网站配置
  • Solar月赛(应急响应)——攻击者使用什么漏洞获取了服务器的配置文件?
  • GESP2025年6月认证C++七级( 第三部分编程题(2)调味平衡)
  • cuda中的线程块和线程束的区别以及什么是串行化 (来自deepseek)
  • 1 + X 传感网 中级 | 任务五 Wifi通信实践
  • 向量数据库深度解析:FAISS、Qdrant、Milvus、Pinecone使用教程与实战案例
  • Excel文件批量加密工具
  • 哈希函数详解:从MD5到SHA-3的密码学基石
  • JSON-RPC 2.0 规范
  • 寻找重复元素-类链表/快慢指针
  • 【lucene】currentFrame与staticFrame
  • Springboot+vue智能家居商城的设计与实现
  • 数据赋能(341)——技术平台——模块化
  • 2024高考综合本科率对比
  • 本地安装 SQLite 的详细步骤
  • Qt模型/视图结构
  • Python入门第三课:进阶编程技能: 文件操作与数据持久化
  • 【C++算法】78.BFS解决FloodFill算法_算法简介
  • 量子计算革命:重新定义计算的边界与未来
  • react 的 useTransition 、useDeferredValue
  • ZKmall开源商城架构工具链:Docker、k8s 部署与管理技巧
  • 反射核心:invoke与setAccessible方法详解
  • SpringBoot整合RocketMQ(阿里云ONS)
  • 数据库4.0
  • Linux 文件管理高级操作:复制、移动与查找的深度探索
  • Deep Research(信息检索增强)认识和项目实战
  • 计算器4.0:新增页签功能梳理页面,通过IO流实现在用户本地存储数据
  • 点控云数据洞察智能体:让房地产决策有据可循,让业务增长稳健前行
  • 【LLM】——qwen2.5 VL模型导出到onnx