![Alpine linux 如何将系统加载到RAM中](https://linux22.com/image/225505/Alpine%20linux%20%E5%A6%82%E4%BD%95%E5%B0%86%E7%B3%BB%E7%BB%9F%E5%8A%A0%E8%BD%BD%E5%88%B0RAM%E4%B8%AD.png)
如果可能的话,我需要建议将整个系统加载到 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 隧道并部署最终操作系统