Alpine linux 如何将系统加载到RAM中

Alpine linux 如何将系统加载到RAM中

如果可能的话,我需要建议将整个系统加载到 RAM 中。让我们想象一下以下情况:

从 DVD 启动 LIVE OS 并以 root lsblk 身份登录

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0  2.9G  1 loop 
sda      8:0    0 19.1G  0 disk 
|-sda1   8:1    0    1G  0 part 
`-sda2   8:2    0 18.1G  0 part 
sr0     11:0    1 1024M  0 rom 

我无法使用 ipxe 进行网络启动,因为我需要 VPN。这里唯一的选择是使用 DD 并用我的自定义 alpine.img 覆盖现有的 /dev/sda

我将使用 qemu 和 apline linux virt 映像。

以下是我到目前为止已完成的步骤:

  • 从 iso 启动 Alpine linux 并创建 /dev/sda
  • sda 将仅将引导分区作为安装点,如下所示:
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0    1G  0 disk 
├─sda1   8:1    0  300M  0 part /boot

  • 在 /boot 目录中我复制了以下内容:
 /boot/
├── alpine-rootfs.tar.gz
├── System.map-virt
├── boot -> .
├── config-virt
├── extlinux.conf
├── initramfs-virt
├── ldlinux.c32
├── ldlinux.sys
├── libcom32.c32
├── libutil.c32
├── lost+found
├── mboot.c32
├── menu.c32
├── vesamenu.c32
└── vmlinuz-virt

extlinux.conf 包含

# Generated by update-extlinux 6.04_pre1-r15
DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU HIDDEN
MENU AUTOBOOT Alpine will be booted automatically in # seconds.
TIMEOUT 10
LABEL virt
  MENU LABEL Linux virt
  LINUX vmlinuz-virt
  INITRD initramfs-virt
  APPEND root=/dev/ram0 modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4

在 initramfs-virt 中我添加了以下代码:

# Create a RAM disk with a filesystem (adjust the size as needed)
mkdir -p /sysroot
mount -t tmpfs -o size=512M tmpfs /sysroot
# Extract the contents of your root filesystem (e.g., Alpine Linux) to the RAM disk
tar -xzvf /path/to/your/alpine-rootfs.tar.gz -C /sysroot
# Pivot to the RAM disk as the new root filesystem
exec switch_root /sysroot /sbin/init

不幸的是启动过程失败,有人可以建议我在这里做错了什么吗

这里的重点是有以下解决方案:

  • 启动救援 DVD 后,使用 dd 使用我的自定义 alpine.img 覆盖现有的 /dev/sda
  • 下次从自定义 alpine.img 启动并将系统加载到 RAM 中
  • 登录 shell 后,创建 ssh 隧道并部署最终操作系统

相关内容