较旧的 PC BIOS 无法从 USB 启动,并且主板制造商也没有进行升级来实现这一点。
通常我加载 UNetbootin 以使 USB 可启动。
由于这里失败了,我想要一个快速的 Linux,它从 32mb 硬盘驱动器启动,然后启用 USB 启动。
我已经尝试过 Grub,但据我所知,您必须预先声明所使用的系统。由于我经常从 Tiny Core、Arch 和其他精益发行版切换,因此我希望保持灵活性。
答案1
你不应该需要 32 MB,你实际上只需要启动 linux(核心)并确保它内置对 USB 驱动器的支持。
如果计算机有多个 SATA/USB 磁盘,使其找到正确的根分区可能会很棘手,但除此之外,您只需要加载内核并告诉它以 root 身份挂载 U 盘即可。
我想这不会使它很好地适合软盘(除非您掌握缩小内核的技术或拥有 2.88 软盘驱动器和兼容软盘),但它应该使空间要求更简单。
如果失败了,那么,您可以尝试找到(或编码)一个能够处理 USB 驱动器的小程序并将其放入软盘中。我想知道引导加载程序是否喜欢智能启动管理器能够链式加载 USB 磁盘。
编辑:关于编译自己的内核:过程并不难,很简单。困难的部分是找到你到底需要什么以及你可以排除什么。这Gentoo 手册有关内核配置的章节向您展示步骤 - 简而言之,您
获取内核源代码并确保系统有编译它的工具(Gentoo 手册没有涵盖最后一部分,因为 Gentoo 总是有这些工具)
配置内核:如果您不习惯 UNIX 开发,很多时候开发步骤都被编码在一个带有配方的文件中,即
Makefile
,由make
. Linux 使用它,并且它提供了几种配置 Linux 的方法(界面):make xconfig
打开图形工具,make config
使用纯文本进行操作,我通常选择make menuconfig
,它提供了一个漂亮的(文本)菜单。编译内核:哦,只是
make
,所以它编译代码并构建镜像将编译后的内核复制到它应该存在的位置
告诉引导加载程序有关该内核的信息
现在的问题是如何从中得到一些有用的东西,你想要让你的内核非常小,所以一种可能性是启用对模块的支持,并在内核中编译启动期间所需的任何模块化功能(包括对 USB 控制器和 USB 驱动器所在的任何文件系统的支持),而您需要的其余部分应该是模块插入 USB 驱动器(稍后可以加载)。
内核本身有构建软盘映像的目标,make fdimage
和make fdimage144
,make fdimage288
但我想知道如果它不能构建如此小的映像,它会如何表现......
我还想知道是否可以构建一个真正简约的内核,具有 kexec 支持并且没有模块,它只读取 USB 驱动器并作为二进制文件运行kexec
另一个内核的东西(kexec
与 POSIX 类比exec
,替换运行核心)
答案2
您可以告诉 Grub 链式加载 USB 磁盘上的任何内容;您无需提供有关 USB 磁盘上内容的任何特定知识。但据我所知,Grub仅通过BIOS支持USB。
你可以做的就是启动进入自由DOS,然后使用负载林加载并启动 Linux 内核。您需要将内核和 initrd(如果有)放在 FreeDOS 可以访问的分区上。有FreeDOS USB 驱动程序对于某些系统。
如果您愿意将要引导的所有发行版的内核(以及 initrd/initramfs,如果适用)复制到内部硬盘,则要容易得多:只需安装您喜欢的任何引导加载程序,使其从内部硬盘,并指定恰好通过 USB 的根设备。