LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (http://www.linuxquestions.org/questions/slackware-14/)
-   -   Slackware 14.1 in MS Hyper-V (http://www.linuxquestions.org/questions/slackware-14/slackware-14-1-in-ms-hyper-v-4175486298/)

skush 11-29-2013 08:03 PM

Slackware 14.1 in MS Hyper-V
 
I'm having trouble with Slackware 14.1 in Hyper-V, it gets through the installer just fine, and reboots, and LILO works fine. After selecting it from the LILO menu however, it goes through some of the regular boot procedure (Loading Linux…….., etc.) then it goes to a kernel panic. Does anyone else have a successful installation on Hyper-V? Should I not be using the default kernel? Do I need to give certain kernel parameters when it asks? The hypervisor is running Windows Server 2008. I can post an image of the panic the next time I have access to the machine if necessary.

Thanks

tux_dude 11-30-2013 11:05 AM

Are you using initrd and if yes, what options did you specify?

mostlyharmless 11-30-2013 11:48 AM

There's a hyper-v compatibility option for the kernel compile options which is not selected by default. Methinks you need to recompile the kernel.

CeeWave 12-01-2013 05:54 PM

I have recently installed a Slackware64 guest virtual machine in a Windows 8 host with Hyper-V. I ran into similar problems finding the root device when booting either the huge or generic 3.10.17 kernels. I was able to successfully boot the virtual machine, with the stock kernels, by using an initrd image that included the hv_vmbus and hv_storvsc modules. These modules are in addition to any filesystem modules that you would normally require for use when booting with the generic kernel.

skush 12-02-2013 08:44 PM

initrd
 
Thanks for the replies. CeeWave, as I have zero experience with initrd, could you explain the process you went through a little bit more. Thanks.

CeeWave 12-03-2013 08:14 AM

This may not be the cleanest method, and I'm recalling the process mostly from memory, but the basic steps I used to fix this was to:

1) Boot off of the installation disc
2) Mount the partition holding the root partition on /mnt, e.g.:
Code:

mount -t ext4 /dev/sda1 /mnt
3) Enter an interactive shell with the mounted partition as root directory:
Code:

chroot /mnt
4) Change directory to /boot and review the file README.initrd for the official description of the initrd building process and usage. You should also review the man page for the mkinitrd command.
5) Create the initrd.gz image:
Code:

mkinitrd -c -f ext4 -r /dev/sda1 -m hv_vmbus:hv_storvsc:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
6) Follow the instructions in /boot/README.initrd to edit /etc/lilo.conf and run lilo to set up and install the boot loader.

If you used a root filesystem other than ext4 or a partition other than /dev/sda1, you'll need to adjust the commands in steps #2 and #5. The hv_vmbus and hv_storvsc modules were the key to getting it working under Hyper-V while the mbcache, jbd2, and ext4 modules were required to use the generic kernel with the ext4 root filesystem. You can also try using the /usr/share/mkinitrd/mkinitrd_command_generator.sh script to automatically generate the command appropriate for you to use in step #5.

skush 12-03-2013 11:27 PM

Thanks
 
Your method worked flawlessly, and in reading that file, I gained a basic understanding of initrd. Thank you very much.

ReaperX7 12-03-2013 11:53 PM

Alternatively you can also use the Huge kernel which doesn't require an initrd.gz.

CeeWave 12-04-2013 08:16 AM

skush, You're welcome, I'm glad you were able to to get it to work.

ReaperX7, using the Huge kernel often avoids requiring an initrd.gz. Unfortunately, by design or oversight, the Hyper-V support is provided by modules in both the Huge and Generic 3.10.17 kernels.

Huge:
Code:

bash-4.2# grep HYPERV /boot/config-huge-3.10.17
CONFIG_HYPERVISOR_GUEST=y
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_NET=m
# CONFIG_FB_HYPERV is not set
CONFIG_HID_HYPERV_MOUSE=m
CONFIG_HYPERV=m
CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_BALLOON=m

and Generic:
Code:

bash-4.2# grep HYPERV /boot/config-generic-3.10.17
CONFIG_HYPERVISOR_GUEST=y
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_NET=m
# CONFIG_FB_HYPERV is not set
CONFIG_HID_HYPERV_MOUSE=m
CONFIG_HYPERV=m
CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_BALLOON=m

necessitating the use of an initrd image with either kernel.


All times are GMT -5. The time now is 11:44 PM.