You are not logged in.
After many trial and errors I finally managed to install Arch Linux x86_64 on QEMU using the installation script in /arch/setup.
The guest is using one VirtIO disk and was set up through virt-manager.
Since I didn't find anyone in the forum who manages to do this I thought it would be good to post a guide on how I solved it.
This is my first post so I'm sorry If I posted this in the wrong forum or made any other mistake.
Feedback is greatly appreciated.
Note
This guide only mentions details specific to install Arch Linux on QEMU.
If you're unsure of the installation procedure in general, please consult the Arch wiki (https://wiki.archlinux.org/index.php/Beginners%27_Guide).
VirtIO detection failure - The Arch install script doesn't detect the VirtIO Disk (/dev/vda).
GRUB install failure - The Arch install script fails to install GRUB.
Crashes a boot - Arch crashes at boot with the error "unable to determine major/minor number of root device" and drops to the recovery shell.
1. VirtIO detection failure
The Arch installation script detects storage media through sysfs with the integer variable /sys/block/*/device/type.
The problem is that the VirtIO disks doesn't have the "type" variable so they are not detected.
My guess is that virt-manager fails to add the "type" value for the VPS (I'm not an expert on qemu, hence I use virt-manager), but maybe this is how VirtIO works.
I solved this by manually adding /dev/sda to the finddisks function (ugly hack, I know).
Function "finddisks" in /usr/lib/aif/core/libs/lib-blockdevises-filesystems.sh
2. GRUB install failure
When the Arch install script tries to autodetect the configuration for GRUB it uses data that it generates and stores in the file /tmp/aif/aif-dev.map
The problem is this file is empty. I have no idea why it fails to generate data for it.
Adding data manually to the file (for example: "(hd0) /dev/vda") fails because the install script seems to regenerate the file everytime it tries to install grub. Changing file permissions to hinder it from rewriting the file didn't work either.
Because of this I choose to manually install GRUB2 instead.
Function "generate_grub_menulst" in /usr/lib/aif/core/libs/lib-ui-interactive.sh
Function "mapdev" in /usr/lib/aif/core/libs/lib-blockdevises-filesystems.sh
/tmp/aif/aif-dev.map
3. Crashes at boot
Arch fails to autodetect the VirtIO disks at startup.
The proper modules needs to be manually added to mkinitcio.conf.
Boot up the Arch-ISO and apply my guidelines to your install configuration.
Modify Install Script
Fixes problem 1
To make sure it finds the virtio disk drive
Add one row of code (echo -ne /dev/vda "") to the beginning of function "finddisks" in file /usr/lib/aif/core/libs/lib-blockdevises-filesystems.sh.
finddisks() {
echo -ne /dev/vda ""
shopt -s nullglob
Install OS
Run the install script
/arch/setup
When in the "Configuration" menu, add the virtio modules to mkinitcio.conf:
Fixes problem 3
MODULES="virtio virtio_blk virtio_pci virtio_net"
NOTE: Remember to skip the installation of the bootloader. GRUB2 will be manually installed below.
Install GRUB2 (bootloader)
Fixes problem 2
Chroot
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc/
mount -t sysfs /sys /mnt/sys/
modprobe dm-mod
chroot /mnt bash
If DNS doesn't work, restart the network daemon
rc.d restart network
Install GRUB2
pacman-db-upgrade
pacman -Syy
pacman -S grub2-bios
grub_bios-install --no-floppy /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg
Chroot settings
If you missed something and you need to chroot from the Arch-ISO again.
Change commands according to your installation.
mount /dev/vda3 /mnt
mount /dev/vda1 /mnt/boot
mount /dev/vda4 /mnt/home
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc/
mount -t sysfs /sys /mnt/sys/
modprobe dm-mod
chroot /mnt bash
GRUB2 fails to detect disk
If grub show errors when booting with uuid.
Uncomment line in /etc/default/grub:
GRUB_DISABLE_LINUX_UUID=true
Then recreate grup config
grub-mkconfig -o /boot/grub/grub.cfg
GRUB2 recovery console
GRUB2 starts but fails to boot Arch
Use grub console to boot manually, then fix grub after you've booted into the system.
Change commands according to your installation.
grub> linux (hd0,msdos1)/vmlinuz-linux root=/dev/vda3
grub> initrd (hd0,msdos1)/initramfs-linux.img
grub> boot
These sources helped me solving the problems to install Arch:
http://www.unixversal.com/linux/archlin … 01005.html
https://wiki.archlinux.org/index.php/GRUB2
Offline
Will you put this guide in the wiki?
Offline
I'm not sure I should do that.
If I am, I'm not sure which parts should be included.
This solution needs the user to make an ugly hack to the arch install script, something that I'm sure will be fixed in the future.
So this may only be relevant for a short time.
Feedbacks are welcome.
Last edited by Svinto (2012-01-15 22:08:15)
Offline
there are tickets for these issues on the bugtracker, and the fixes are in git.
< Daenyth> and he works prolifically
4 8 15 16 23 42
Offline
there are tickets for these issues on the bugtracker, and the fixes are in git.
Thank you for the information. I will look into this.
Offline