语境: 我正在尝试在笔记本电脑上双启动 Windows 和 Linux。我的笔记本电脑内置 SD 卡读卡器,但是没有通过 BIOS 或其他服务允许我直接启动 SD 卡的选项或方法。但是,通过一些测试,我发现虽然 Windows 11 和启动菜单无法识别 SD 卡读卡器,但 Linux 却可以识别。
我的目标: 我想使用最小存储空间,这样我就可以在内置硬盘上启动 Linux,并让 SD 卡包含其他所有内容。(软件、用户、系统文件、存储库等)
问题:
- 我需要在内置硬盘上创建多大的分区?(<32 GB)
- 我应该在内置硬盘和 SD 卡之间的什么位置设置目录?
- 在安装 Linux 时,我需要在 SD 卡上为其他目录设置多个分区吗?如果需要,每个目录需要多少空间?
答案1
- 我需要在内置硬盘上创建多大的分区?(<32 GB)
你所需要的只是能够容纳/启动/目录位于内部硬盘驱动器上的一个分区中,文件系统为 ext4。
如果您只保留一个内核版本副本,则此分区中 100MB 的空间就足以容纳内核和蛴螬。
强烈建议使用此硬盘上的另一个分区进行交换,这既是为了系统性能,也是为了延长 SD 卡的使用寿命。
传统上建议交换大小为 RAM 大小的 1 到 2 倍。
- 我应该在内置硬盘和 SD 卡之间的什么位置设置目录?
这个问题毫无意义。你已经规定了你想要“在我的内置硬盘上启动 Linux,并让 SD 卡包含其他所有内容。(软件、用户、系统文件、存储库等)“
会 ”其他一切“大概是根文件系统?
- 在安装 Linux 时,我需要在 SD 卡上为其他目录设置多个分区吗?如果需要,每个目录需要多少空间?
不,您不需要设置多个分区,最好保持简单。
真的没有“Linux 安装“正如你可能习惯的 Debian 类型发行版那样。
相反,你可以手动构建 SD 卡上的 rootfs,只需复制现有 Linux 系统的 rootfs,然后清理/ETC/(例如文件系统,主机名) 和/家/. (不要复制挂载在/系统,/var, 和/进程。
非活动 rootfs 将是理想的来源(因为不会挂载任何伪文件系统);例如,如果 rootfs 是 HDD 分区,则从活CD,手动挂载该HDD分区和SD卡,然后将HDD分区的文件和目录复制到SD卡。
在启动期间,SD 卡上的 rootfs 将在内核命令行中指定,其参数如下:
root=/dev/mmcblk0p1 rootwait rootfstype=ext4 rw
假设您的 SD 卡有一个格式化为 ext4 文件系统的 MBR 分区。
请参阅内核参数文档有关这些参数的详细信息。
參閱蛴螬有关如何编辑您尝试启动的内核的内核命令行的文档。
请注意,此启动方案要求您的 Linux 内核将 MMC/SD 控制器的驱动程序构建为静态链接驱动程序,即它是内置驱动程序。
该配置对于嵌入式 Linux 很常见,但对于 x86 发行版可能不太可能。
如果 MMC/SD 控制器驱动程序是可加载模块,则启动会变得复杂(例如,使用 initramfs 使驱动程序可用,然后山和枢轴根到 SD 卡上的 rootfs)。
附录
我找到了一台内置 MMC/SD 卡插槽的旧笔记本电脑,以及一张旧的 Lubuntu LiveCD。安装菜单实际上提供了 SD 卡(如/dev/mmcblk0) 作为安装目标设备。
因此我继续指定 HDD (/dev/sda)作为安装的引导设备蛴螬、主分区(/dev/sda1) 格式化为 ext4 以便挂载/启动以及另一个主分区(/dev/sda2)用于交换。单个主分区(/dev/mmcblk0p1)已格式化为 ext4 以便挂载/(又名 root)。
安装创建了所有预期的目录,并将预期的文件存储在 HDD 和 SD 卡上所有预期的位置。但是从 HDD 启动停滞,可能是因为内核由于无法访问的模块而无法访问 SD 卡上的 rootfs,mmc_block.ko。
最简单的(IMO)解决方案是重建一个内置有 MMC/SD 控制器驱动程序的 Linux 内核。