Попытка смонтировать /dev/sda в busybox

#busybox #initramfs

#busybox #initramfs

Вопрос:

Я использую виртуальные машины Proxmox. Кажется, не имеет значения, какой тип хранилища я выбираю (scsi, ivirt или sata), я не вижу никаких блочных устройств (т. Е. Под /dev или с fdisk ) в busybox.

Я использовал эти инструкции, чтобы получить PXE в приглашение busybox:

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

Если бы я мог видеть диск. Затем я мог бы добавить root.fs к нему больший и использовать busybox / initramfs to switch_exec для sda1 (аналогично этим инструкциям для tmpfs ). Но поскольку я не могу, я ограничен отключением от tmpfs / ram.

Есть ли модуль, который мне нужно загрузить?

Ответ №1:

Два решения

решение pxe для ядра Linux

 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
 

решение busybox

это после использования

 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

полезный IRC на freenode #busybox