libvirt/9p/kvm mount in fstab fails to mount at boot time

19,265

Solution 1

Don't know if it's the ideal solution, but on an Ubuntu 12.04 guest I got it to work by adding the 9p modules to the initramfs.

Added to /etc/initramfs-tools/modules:

9p
9pnet
9pnet_virtio

Then:

sudo update-initramfs -u

Solution 2

In 2020, a better way to delay the mount until the time when we have access to the 9p modules from /lib/modules is to add _netdev as a mount parameter:

/data   /data   9p  trans=virtio,rw,_netdev 0   0

Solution 3

On Ubuntu 14.04 only the 9pnet_virtio module needs preloading as per bhassel's answer.

The dmesg a few lines before the quoted one shows that the other two are already loaded but cannot find the required transport.

[ 1.370611] 9pnet: Installing 9P2000 support 
[ 1.376384] 9p: Installing v9fs 9p2000 file system support 
[ 1.376754] 9pnet: Could not find request transport: virtio 

Tested with Ubuntu 14.04 guest on qemu/KVM on openSUSE 13.2.

Share:
19,265

Related videos on Youtube

edA-qa mort-ora-y
Author by

edA-qa mort-ora-y

Updated on September 18, 2022

Comments

  • edA-qa mort-ora-y
    edA-qa mort-ora-y almost 2 years

    I am trying to mount a shared folder using qemu-kvm/9p and it fails to work if I add it to the fstab file. I get an error at boot that the device cannot be mounted, yet after start if I run "mount -a" the device will be mounted.

    fstab line:

    src_mnt /src 9p trans=virtio 0 0
    

    From dmesg I can see:

    [    7.606258] 9p: Could not find request transport: virtio
    

    And a few lines later I see the "virtio-pci" entries. I'm not clear on how I would defer mounting until that device is available however.

  • Greg
    Greg about 11 years
    Thank you - I think its reasonable to say this is the ideal solution. The problem is that the module is not mounted during file-system mount, your solution is to add it to the list of modules loaded at mount-time.
  • user
    user over 9 years
    Hi Tim, and welcome to the site. Keep in mind that the ordering of the answers can change both by community voting as well as user preferences, so try to always be explicit about which answer you are referring to. I have fixed this for now in your post; please do so yourself in the future. Thanks!
  • lindhe
    lindhe over 8 years
    Why is this ideal?
  • stalet
    stalet almost 8 years
    This works on ubuntu 16.04 as well.
  • jackkamm
    jackkamm over 4 years
    This also works on Ubuntu 18.04
  • Tenders McChiken
    Tenders McChiken almost 4 years
    If your kernel doesn't need these modules to start init, then adding them to the initramfs is not enough. You need to also force the kernel or init system to load them explicitly. For init systems that support explicit module loading (incl. systemd), add modules_load=9pnet_virtio,9p to your kernel command line.
  • CR.
    CR. almost 3 years
    This worked for Ubuntu 20.04 guest. Seems like a module dependency bug? 9pnet_virtio should automatically be loaded before the 9pnet module.
  • Harris M Snyder
    Harris M Snyder over 2 years
    This worked for me, without needing to make any adjustments to the initramfs
  • Admin
    Admin about 2 years
    This is not a good solution. _netdev only tells systemd to not mount that file system as long as the system has no network connectivity. Yet when transport is virtio, then 9p is not even used over network and on the other hand, the system may have network connectivity before it has access to /lib/modules (e.g. if network drivers are on initramfs). If that isn't the case on your system, then this is coincident but you must not rely that this will always for sure be the case.
  • Admin
    Admin about 2 years
    @TendersMcChiken update-initramfs takes care of that. He didn't add them to the initramfs, he added them to the file /etc/initramfs-tools/modules. This is just a text file in Debian listing modules that your system will need for a proper boot prior to mounting the root partition. Once you call update-initramfs, it will take care of everything else for you.
  • Admin
    Admin about 2 years
    Actually adding 9pnet_virtio to /etc/initramfs-tools/modules should already be enough. I only added this one line and it solved the problem for me.