-2

我正在使用 Proxmox 虚拟机。我选择哪种存储类型(scsi、ivirt 或 sata)似乎无关紧要,我在busybox 中看不到任何块设备(即在/dev或下fdisk)。

我使用这些说明将 PXE 设置为 busybox 提示符:

https://jootamam.net/howto-initramfs-image.htm

如果我能看到驱动器。然后我可以解压一个更大root.fs的文件并使用busybox/ initramfsto switch_execto sda1(类似于这些说明tmpfs。但是因为我不能,所以我仅限于解压到 tmpfs/ram。

有我需要加载的模块吗?

4

1 回答 1

0

两种解决方案

linux内核pxe解决方案

virt-builder centos-7.8 -o /work/disk.img --root-password password:changeme --install grub2-tools --install e2fsprogs glusterfs-client
virt-builder --get-kernel /work/disk.img -o /var/www/html/pxe.com/
guestfish --ro -a /work/disk.img -i copy-out / /work/initramfs
(cpio -id; zcat | cpio -id) < /var/www/html/pxe.com/initramfs-3.10.0-1127.el7.x86_64.img
 
echo > /work/initramfs/etc/fstab
echo "SELINUX=disabled" > /work/initramfs/etc/selinux/config
 
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /var/www/html/pxe.com/initramfs.gz

忙箱解决方案

这是使用后

lsmod
lspci -k
modinfo <module>

查找依赖树并复制到 initramfs/lib

#!/bin/busybox sh
#mkdir /dev
mkdir /sys
mkdir /proc
mkdir /tmp
#mount -n -t proc  proc  /proc -o rw,nosuid,nodev,noexec,relatime
mount -t proc  proc  /proc
#mount -n -t sysfs  sys  /sys -o rw,nosuid,nodev,noexec,relatime
mount -t sysfs  sys  /sys
#mount -n -t devtmpfs  dev  /dev -o rw,nosuid,mode=0755
mount -t devtmpfs  dev  /dev
mount -n -t tmpfs tmpfs /tmp -o rw
mkdir -p /sys/dev
mkdir -p /var/run

mount -t devpts devpts /dev/pts
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

cd /lib/modules/3.10.0-1127.el7.x86_64/kernel

insmod crypto/crct10dif_common.ko.xz
insmod lib/crc-t10dif.ko.xz
insmod drivers/scsi/sd_mod.ko.xz

insmod drivers/virtio/virtio.ko.xz
insmod drivers/virtio/virtio_ring.ko.xz
insmod drivers/scsi/virtio_scsi.ko.xz
insmod drivers/virtio/virtio_pci.ko.xz

insmod fs/mbcache.ko.xz
insmod fs/jbd2/jbd2.ko.xz
insmod fs/ext4/ext4.ko.xz

#networking
insmod net/core/failover.ko.xz
insmod drivers/net/net_failover.ko.xz
insmod net/netfilter/nfnetlink.ko.xz

insmod drivers/net/virtio_net.ko.xz

#rng
insmod drivers/char/hw_random/virtio-rng.ko.xz

#gluster
insmod fs/fuse/fuse.ko.xz

mount -t devtmpfs dev /dev
mdev -s
dd if=/dev/zero of=/dev/sda bs=512 count=1
(echo n; echo p; echo 1; echo ""; echo ""; echo w;) | fdisk /dev/sda

mkdir /newroot

export EXTRACT_UNSAFE_SYMLINKS=1
tar xvfJ /rootfs.tar.xz -C /newroot || error

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

指南

http://www.espenbraastad.no/posts/centos-7-rootfs-on-tmpfs/ http://mgalgs.github.io/2012/03/23/how-to-build-a-custom-linux- kernel-for-qemu.html http://souptonuts.sourceforge.net/cdrom.htm

在 freenode #busybox 上有帮助的 IRC

于 2021-01-03T00:00:49.537 回答