最小系统制作并在x86上运行

文章详细介绍了x86平台的启动过程,从bootloader执行UEFI镜像开始,讲解了UEFI配置文件startup.nsh的作用,以及如何通过GRUB加载内核和initrd进入文件系统。同时,提到了使用busybox构建最小文件系统所需的步骤,包括编译环境的搭建和文件系统的安装。最后,讨论了如何将这些组件组织在U盘的两个不同分区中,一个用于UEFI和GRUB,另一个用于文件系统。

以u盘为例介绍x86启动流程

  1. 前期的bootloader(fbl/sbl)执行完毕后,会去执行uefi镜像.

uefi镜像文件,可能被烧写在板载ic里,uefi启动的话,可以在第一个分区的根目录新建startup.nsh

Image initrd=\initrd.img root=/dev/sda2 earlycon=pl011,115200

直接启动内核进入文件系统

  1. 一般我们加一层grub再启动内核,grub镜像是bootx64.efi ;grubx64.efi猜测是grub需要insmod的mod模块的集合.

bootx64.efi grubx64 需要放在以下路径

\efi\boot\bootx64.efi

  1. grub会去prefix宏定义的位置去寻找grub.cfg, 如果不知道可以通过命令gettext查询该宏在当前grub的定义,然后在u盘新建该目录,并放置grub.cfg

  1. Grub.cfg里写有内核信息及要启动的文件系统

内核相关的linux 及 initrd需要写好,root是文件系统的位置.

  1. 使用busybox制作最小文件系统

  1. 搭建编译环境,需要安装apt install build-essential git kconfig-frontends flex bison libelf-dev bc libssl-dev qemu qemu-system-x86

  1. 下载代码

  1. 配置并编译代码

make menuconfig

选择静态编译,否则需要copy一些动态库,保存退出后执行make

  1. 任意位置新建rootfs文件夹,安装文件系统到rootfs目录下

在busybox源码的上一级目录执行以下命令

sudo make -C busybox install CONFIG_PREFIX=路径/rootfs

然后进入rootfs文件夹执行以下命令

mkdir etc dev home root proc sys mnt;

  1. 这套构建好的最小系统,可以直接拷贝到ext4格式的U盘

一般把一个u盘使用fdisk做两个盘符,一个vfat格式放uefi,grub,内核,一个ext4放文件系统.

note:

grub

set 命令可以显示当前配置

uefi

map命令可以列出当前存储设备

例如 fs0: 就进入该磁盘

edit 文件名 可以直接编辑文件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值