在虚拟机中准备Linux镜像

在虚拟机中准备Linux镜像

我正在尝试设置一个系统,在虚拟机上准备Linux系统,然后将其部署到SD卡上。目标系统具有 Atom 处理器,因此不存在体系结构兼容性问题。

是否有任何挂载点必须位于特殊的物理位置才能正常工作,或者 GRUB 可以理解文件系统吗?

如何设置 SD 卡以使用 GRUB 引导该系统?

rsync 文件系统或添加文件系统映像会更好吗?我更喜欢前者,因为在不同的卡尺寸之间切换时我不必对虚拟机进行太多更改。

编辑:

我假设我必须使用诸如parted之类的东西提前准备好卡,然后我必须在上面安装GRUB,这没什么大不了的。

主要问题是,如果内核不在分区上有保证的物理位​​置,GRUB 会找到它吗?换句话说,GRUB 是否足够智能,可以读取 ext2、ext3 或 ext4 分区并找到适当的挂载点?

我的磁盘将如下所示(2 个分区):

[GRUB] [grub 加载程序] [GRUB 分区] [操作系统分区]

答案1

当 Grub 启动时,它会使用 BIOS 提供的信息自行加载。只要所有部分都在同一个磁盘上,就可以无缝工作。

当Grub加载Linux时,它可以在与Grub相同的磁盘上或通过搜索可用磁盘来找到内核。同样,如果您将内核与 Grub 放在同一磁盘上,这应该可以无缝工作。

当 Linux 内核挂载根文件系统时,它使用自己的磁盘编号。 Grub 将命令行参数传递给内核,以便它知道在哪里可以找到根文件系统;争论必须以内核理解的方式进行。如果您从一个系统移动到另一个系统,磁盘编号(例如sdasdbhda等)是不可预测的。确保此功能有效的最简单方法是将根文件系统(以及任何其他文件系统或交换空间)放在 LVM 上。在启动时(特别是在 initrd/initramfs 执行阶段),系统将查看所有可用的 LVM 物理卷,组装组,并提供对它们包含的所有逻辑卷的访问。由于 LVM 卷有名称而不是磁盘编号,因此磁盘编号是什么并不重要。

Grub 必须知道其各个部分在磁盘上的确切物理位置。您不能仅通过将文件复制到可引导 SD 卡上来制作可引导 SD 卡,您必须进行引导加载程序安装。为了轻松应对不同大小的设备,一个好的方法是在磁盘的开头为操作系统创建一个固定大小的分区,并将其余空间用作额外的数据分区。关于该主题,请参阅将可启动 USB 记忆棒克隆到不同尺寸的记忆棒

相关内容