Здравствуйте, коллеги!
Злая судьбина вынудила меня переделывать initrd. Я давно тому назад занимался подобным, но с тех пор все уверенно забыл.
Есть рабочий initrd в нем нужно перепахать скрипт /init под собственные нужды.
Давайте, что бы проще, будем считать, что /init я очистил, есть лишь:
#!/bin/bash
PATH=/bin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin
/bin/mount -t proc none /proc
/bin/mount -t sysfs none /sys
/bin/mount -t devtmpfs none /dev
/bin/bash
Да-да! /bin/bash уже есть. Впрочем… Наверное я его уберу. Останется /bin/sh из бизибокса.
Проблемма первая:
Как запустить все это в виртуалке (qemu), что бы initrd в теории видел один подсунутый ему диск?
Я сделал так:
qemu-system-x86_64 -enable-kvm -m 4096M -kernel vmlinuz -initrd /initrd-new.img -append 'ip=192.168.122.54' -hda /home/images/debian11-1.qcow2
В виртуалке все запускается, но перед приглашением bash выдает:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Собственно, это не мешает, но! На реальной машине, я получаю то же сообщение, только не работает клавиатурный ввод. На виртуалке клавиатурный ввод работает. Что нужно прописать, что бы клавиатурный ввод заработал в реальной машине?
Это сильно бы упростило разработку конечного скрипта.
Будем считать, что пока ковыряемся в виртуалке.
ls /dev/s*
/dev/snapshot
Дисков никаких нет! Как на реальной машине, у которой есть HDD, так и на виртуалке.
Что нужно сделать, что бы появились диски?
Запускаю udev, но диски не появляются. В обоих случаях.
Подскажите, куда копать дальше?