标签 busybox 下的文章

我们前面几节已经详细介绍了基于 UbuntuCentOS 构建内存镜像的方案,其中 ~/work/initramfs/init 脚本内容大致如下:

#!/bin/busybox sh

# Dump to sh if something fails
error() {
    echo "Jumping into the shell..."
    setsid cttyhack sh
}

# Populate /bin with binaries from busybox
/bin/busybox --install /bin

mkdir -p /proc
mount -t proc proc /proc

mkdir -p /sys
mount -t sysfs sysfs /sys

mkdir -p /sys/dev
mkdir -p /var/run
mkdir -p /dev

mkdir -p /dev/pts
mount -t devpts devpts /dev/pts

# Populate /dev
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

echo "mount rootfs... "
mkdir -p /newroot
mount -t tmpfs -o size=80% tmpfs /newroot || error

xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot || error

mount --move /sys /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev /newroot/dev

exec switch_root /newroot /sbin/init || error

- 阅读剩余部分 -

在前面, 我们已经使用 debootstrap 构建基于Ubuntu的内存OS, 但是业界常用的更多的是CentOS,所以一直在尝试使用CentOS来构建内存OS.
CentOS 7 root filesystem on tmpfs这篇文章中的方案可行, 我们不使用的原因是流程构建太长, 外部依赖太多,冗余的内容太多,也不够精简.
所以我们希望尝试的方案是类似 Ubuntudebootstrap 的工具. yum 本身是可以将对应包安装到指定目录,直到看到下面这篇日本同行写的文章,让这个过程更加清晰了.

宿主环境中,我们需要有 yum rpm 等工具命令的支持,在各个发行版中均可以安装这两个包, 当然宿主机器本身就是CentOS那就不需要在独立安装了.

- 阅读剩余部分 -