VirtualBox на 32-бит системе с 64-бит ядром
Долго ли, коротко ли, а 64-бит архитектуры развиваются и становятся интересными для практического применения. Ядро ветки 2.6.32 вполне прилично работает на нетбуке, так что возникла мысль попробовать 64-бит ядро. Почему именно такая конфигурация? Да очень просто - всегда можно загрузиться в 32-бит ядро и оказаться в хорошо известной 32-бит конфигурации. Почему на нетбуке? Все просто - мне хватает его производительности, а по размерам он меньше ноутбука и практически бесшумен. Пару дней назад, когда я уже сидел с 64-бит ядром, понадобилось запустить VirtualBox. А он запускаться не хочет. Ну, что поделать, значит, пришло время попробовать 64-бит чрут в 32-бит системе с 64-бит ядром. Поставил sid, хотя можно было и squeeze, это не принципиально, поскольку виртуалбокс все равно для ленни собран в репозитории на оффсайте. Плюс сделал скрипт для запуска VirtualBox в чруте:
$ cat /usr/local/bin/virtualbox
#!/bin/sh
CHROOT=/srv/chroot_amd64
if test ! -e $CHROOT/dev/.udev; then
sudo mount -t none /dev $CHROOT/dev/ -o bind
fi
if test `ls $CHROOT/proc | wc -l` = "0"; then
sudo mount -t proc none $CHROOT/proc
fi
if test `ls $CHROOT/sys | wc -l` = "0"; then
sudo mount -t sysfs none $CHROOT/sys
fi
if test `ls $CHROOT/home | wc -l` = "0"; then
sudo mount --bind /home $CHROOT/home
fi
# if test `ls $CHROOT/srv | wc -l` = "0"; then
# sudo mount --bind /srv $CHROOT/srv
# fi
if test `ls $CHROOT/tmp | wc -l` = "0"; then
sudo mount --bind /tmp $CHROOT/tmp
fi
if test `ls $CHROOT/var/run/dbus | wc -l` = "0"; then
sudo mount --bind /var/run/dbus $CHROOT/var/run/dbus
fi
echo "Hello to chroot $CHROOT!"
sudo chroot $CHROOT sh -c "su - veter VirtualBox"
sleep 10
if test `ls $CHROOT/var/run/dbus | wc -l` != "0"; then
sudo umount $CHROOT/var/run/dbus
fi
if test `ls $CHROOT/proc | wc -l` != "0"; then
sudo umount $CHROOT/proc
fi
if test `ls $CHROOT/sys | wc -l` != "0"; then
sudo umount $CHROOT/sys
fi
if test `ls $CHROOT/tmp | wc -l` != "0"; then
sudo umount $CHROOT/tmp
fi
if test -e $CHROOT/dev/.udev; then
sudo umount $CHROOT/dev/
fi
if test `ls $CHROOT/home | wc -l` != "0"; then
sudo umount $CHROOT/home
fi
# if test `ls $CHROOT/srv | wc -l` != "0"; then
# sudo umount $CHROOT/srv
# fi
echo "Chroot $CHROOT is unmounted!"
Замечу, что USB-устройства подключаются (благодаря примонтированному /var/run/dbus). Таймаут нужен для того, чтобы успели остановиться некоторые сервисы, запускаемые VirtualBox - иначе не удастся отмонтировать ФС. Профит :-)
Comments