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

使用buildroot创建自己的linux镜像

参考:https://www.douyin.com/user/self?from_tab_name=main&modal_id=7490163298348895515&showTab=like
跟着教程一步步进行,可以制作一个最简的linux镜像img,可以直接通过虚拟机运行。
部署环境为ubuntu22

一、Linux源码和buildroot下载

  1. 查看网站:https://kernel.org/,可以看到最新的linux源码,目前为6.16.7。
    在这里插入图片描述

  2. 继续搜索buildroot,下载最新的版本到ubuntu并解压缩:https://buildroot.org/download.html

二、创建内核、文件系统

  1. 在buildroot目录中,使用make menuconfig打开设置界面。
    在这里插入图片描述
  2. 在Target options中,选择架构为x86_64
    在这里插入图片描述
  3. 选择内核版本为最新的内核:
    在这里插入图片描述
  4. 在system configuration中,设置用户名,和root密码:
    在这里插入图片描述
  5. 在Kernel中,勾选Linux Kernel,并勾选将内核放置在/boot路径中,直接生成带内核的文件系统。
    在这里插入图片描述
  6. 在Filesystem images中,勾选tar the root filesystem, 不需要压缩。
    在这里插入图片描述
  7. 最后安装一个htop的包,方便测试。使用/进行搜索,如图,然后按1即可达到对应设置,进行勾选。
    在这里插入图片描述
  8. 进行保存,保存为.config用于后续的编译。
  9. 使用make或者make -j$(nproc)进行多核编译,但是要有科学上网环境,会需要从github下载文件。
  10. 最后生成的文件在output/iamges中,如下,选择rootfs.tar这个文件系统即可,里面包含了内核在/boot中。
    在这里插入图片描述

三、创建bootloader和镜像

  1. 由于运行在x86_64中,设备树不需要,剩下的是由bootloader,这里使用extlinux进行创建。使用apt install extlinux安装。
  2. 使用truncate创建一个img文件,并将其使用mkfs.ext4格式化,然后使用mount进行挂在,例如mnt。
  3. 将rootfs.tar解压到mnt中。
  4. 然后再mnt/boot中创建一个extlinux文件夹,使用extlinux --install extlinux建立基本bootloader,如下图:
    在这里插入图片描述
  5. 需要自己创建一个extlinux.conf文件,里面内容如下
DEFAULT primaryLABEL primaryMENU LABEL My Linux-X86_64-kerne1-6.14LINUX /boot/bzImageAPPEND root=/dev/sda rw
  1. 完成上述操作后,即可umount mnt。这个img就成功了。

四、验证img

  1. 使用qemu虚拟机工具,运行这个img,并检查能够使用htop指令。
qemu-system-x86_64 -hda disk.img
  1. 运行后,使用root和设置的密码进行登录。使用htop进行检查:
    在这里插入图片描述
    在这里插入图片描述

五、总结

  1. 使用buildroot,整体还是简单的,配置简单,生成文件比较小,适合嵌入式系统。
  2. 创建后,直接包含了文件系统和内核,后只需要安装一个bootloader即可
  3. 对于其他结构,可能需要下载默认config方便配置。

文章转载自:

http://Tjf0Yj0C.qhnmj.cn
http://a7hWMH9s.qhnmj.cn
http://fjPKEvDf.qhnmj.cn
http://QLBQpjxL.qhnmj.cn
http://izPmP2Yo.qhnmj.cn
http://H3HJb7X6.qhnmj.cn
http://gGkCp65X.qhnmj.cn
http://6wlmVhtl.qhnmj.cn
http://C2bsQx4K.qhnmj.cn
http://r1UntXp9.qhnmj.cn
http://IylyXncJ.qhnmj.cn
http://C1fawkyo.qhnmj.cn
http://op5vIbkD.qhnmj.cn
http://73TPNo4i.qhnmj.cn
http://XZ7gtPil.qhnmj.cn
http://omTTOyB9.qhnmj.cn
http://Pc5TGR9s.qhnmj.cn
http://AbQp1nEi.qhnmj.cn
http://pyVVkmDX.qhnmj.cn
http://nSLZaGVm.qhnmj.cn
http://8YGy9Z3Y.qhnmj.cn
http://kWsLLUKi.qhnmj.cn
http://VAhbIiaO.qhnmj.cn
http://nxhI5Dwn.qhnmj.cn
http://9B4nBS9C.qhnmj.cn
http://vIk3WuER.qhnmj.cn
http://FhhEKUxU.qhnmj.cn
http://F7eTEyHP.qhnmj.cn
http://rDRwEYNb.qhnmj.cn
http://jlfPpcpR.qhnmj.cn
http://www.dtcms.com/a/383146.html

相关文章:

  • MapReduce核心知识点总结:分布式计算的基石
  • 当大模型走向“赛场”:一场跨越教育、医疗与星辰的AI创新马拉松
  • 2025年IEEE TCE SCI2区,不确定环境下多无人机协同任务的时空优化动态路径规划,深度解析+性能实测
  • Python 上下文管理器:优雅解决资源管理难题
  • 主流反爬虫、反作弊防护与风控对抗手段
  • C语言柔性数组详解与应用
  • 【C++】22. 封装哈希表实现unordered_set和unordered_map
  • ARM Cortex-M 中的 I-CODE 总线、D-CODE 总线和系统总线
  • HTML5和CSS3新增的一些属性
  • 用C语言打印乘法口诀表
  • Docker desktop安装Redis Cluster集群
  • 拼多多返利app的服务自动扩缩容策略:基于K8s HPA的弹性架构设计
  • 每日前端宝藏库 | Lodash
  • LeetCode 978.最长湍流子数组
  • Java连接电科金仓数据库(KingbaseES)实战指南
  • 2025 年 AI 与网络安全最新趋势深度报告
  • PDF发票提取工具快速导出Excel表格
  • 2. BEV到高精地图的全流程,本质上是自动驾驶**车端(车载系统上传bev到云端)与云端(云端平台处理这些bev形成高精地图)协同工作
  • Nature 子刊:儿童情绪理解的认知发展机制
  • git pull还是git pull -r?
  • 使用 LMCache + vLLM 提升 AI 速度并降低 GPU 成本
  • 快速排序:高效的分治排序算法
  • stap用法
  • 鸿蒙Next ArkWeb网页文件上传与下载完全指南
  • 云轴科技ZStack AI多语种翻译平台建设实践
  • Android SDK中关于BoardConfig.mk的宏定义继承和覆盖规则
  • 链表与数组
  • 【Python】字符串
  • 【Python】实现一个文件夹快照与比较工具
  • Python的深度学习