Estou construindo uma imagem Alpine personalizada baseada em isolinux. Basicamente, estou esmagando rootfs e montando-o como overlayfs.
O Bootloader faz seu trabalho bem, o kernel carrega, mas estou preso no initramfs. Digamos que eu tenha o seguinte:
#!/bin/sh
export PATH=/sbin:/usr/sbin:/bin:/usr/bin
/bin/busybox --install -s
rescue_shell() {
echo "Something went wrong. Dropping you to a shell."
#/bin/busybox --install -s
/bin/sh || exec /bin/busybox sh
}
mount -t sysfs sysfs /sys
mount -t proc proc /proc
mkdir -p /dev/pts
mount -t devtmpfs -o exec,nosuid,mode=0755,size=2M devtmpfs /dev 2>/dev/null \
|| mount -t tmpfs -o exec,nosuid,mode=0755,size=2M tmpfs /dev
[ -c /dev/ptmx ] || mknod -m 666 /dev/ptmx c 5 2
[ -d /dev/pts ] || mkdir -m 755 /dev/pts
mount -t devpts -o gid=5,mode=0620,noexec,nosuid devpts /dev/pts
# shared memory area (later system will need it)
[ -d /dev/shm ] || mkdir /dev/shm
mount -t tmpfs -o nodev,nosuid,noexec shm /dev/shm
/bin/sh
# other code left for simplicity
Então, uma vez que eu entro /bin/sh
, não tenho nenhum módulo carregado, especialmente estou me referindo a dispositivos de bloco, /dev/sda
, /dev/sr0
, que preciso montar e extrair a imagem compactada e montar a sobreposição.
Listar /proc/partitions me dá apenas ram[0-15]
dispositivos, o que faz sentido, pois após a inicialização é carregado na RAM.
Então, minha pergunta seria: existe alguma maneira de os dispositivos serem testados com base no hardware disponível? Eu tentei com mdev
também, mas ainda não consigo meus dispositivos de bloco. O próprio mdev.conf
está lá, e os testes são realizados no VirtualBox. Obrigada.
Você pode tentar a sorte com modalias conforme exposto através da interface sysfs.
Veja por exemplo https://patchwork.openembedded.org/patch/148854/ que sugere:
Note que eu não testei isso sozinho. Além disso, isso não parece estar usando o modprobe BusyBox, que provavelmente não suporta arquivos
-ab
. Ainda assim, pode valer a pena conferir como é sua/sys
aparência no início do initramfs.Mais links sobre modalidades: