Может ли virtfs / 9p использоваться в качестве корневой файловой системы?

Можно ли использовать папку, совместно используемую хостом, с гостевой системой через virtfs / 9p в качестве корневой файловой системы внутри гостевой системы?

Непосредственно связанный с моим предыдущим вопросом: Можно ли использовать virtfs / 9p для совместного использования одной и той же главной папки с несколькими гостями?

  • Как выполняется сетевое программное обеспечение?
  • Время не синхронизируется в Linux VM
  • Как я могу получить доступ на запись к моим USB-накопителям?
  • Плохо ли иметь файловые системы почти полностью?
  • Виртуальная файловая система только для записи для хранения файлов в архиве
  • Порт для вывода / ограничения трафика ebtables
  • Каковы пространственные издержки для разных файловых систем?
  • Возможно ли запустить KVM над эмулируемой qemu архитектурой powerpc
  • Есть ли все равно, чтобы автоматически монтировать файловую систему, когда я открываю символическую ссылку на каталог в этой файловой системе?
  • virt-install cpu0 необработанный rdmsr
  • Запуск Mac OS X под KVM / QEMU
  • Расположение inodes (ext)?
  • 3 Solutions collect form web for “Может ли virtfs / 9p использоваться в качестве корневой файловой системы?”

    Да, посмотрите, например, как загрузить виртуальную машину с FS хоста:

    Добавьте 9p-модули к initramfs хоста (это самый простой способ, хотя и не самый чистый, иметь initrd с необходимыми модулями):

     printf '%s\n' 9p 9pnet 9pnet_virtio | sudo tee -a /etc/initramfs-tools/modules sudo update-initramfs -u qemu -kernel "/boot/vmlinuz-$(uname -r)" \ -initrd "/boot/initrd.img-$(uname -r)" \ -fsdev local,id=r,path=/,security_model=none \ -device virtio-9p-pci,fsdev=r,mount_tag=r \ -nographic \ -append 'root=r ro rootfstype=9p rootflags=trans=virtio console=ttyS0 init=/bin/sh' 

    Если вы запустите его как обычного пользователя, есть файлы, к которым он не сможет получить доступ, но вы должны получить приглашение оболочки, и он не повредит:

     [ 0.000000] Linux version 3.10-3-amd64 (debian-kernel@lists.debian.org) (gcc version 4.7.3 (Debian 4.7.3-7) ) #1 SMP Debian 3.10.11-1 (2013-09-10) [ 0.000000] Command line: root=r rootfstype=9p rootflags=trans=virtio console=ttyS0 init=/bin/sh [...] Loading, please wait... [ 0.564122] systemd-udevd[52]: starting version 204 [...] Begin: Loading essential drivers ... [ 1.007951] FS-Cache: Loaded [ 1.009958] 9p: Installing v9fs 9p2000 file system support [ 1.012880] FS-Cache: Netfs '9p' registered for caching done. Begin: Running /scripts/init-premount ... done. [...] sh-4.2# ls / bin home lib32 media opt safe tmp vmlinuz.old boot initrd.img lib64 mnt proc sbin usr dev initrd.img.old libx32 old root srv var etc lib lost+found old-tmp run sys vmlinuz sh-4.2# poweroff -f [ 56.958724] ACPI: Preparing to enter system sleep state S5 [ 56.960332] Power down. 

    Как разумная идея, как это кажется сначала, не делайте этого. 9P в своем текущем состоянии не может обрабатывать некоторые довольно простые операции, в том числе:

    • open () … unlink () … fstat () в файле.

    9P в настоящее время не находится в пригодном состоянии для использования в производстве.

    Хотя вы можете создать загрузочную систему с 9P в качестве корневой файловой системы, работа с VM вызовет серьезное горе – при использовании Debian указанный выше дефект предотвратит работу apt-get. Патчи для исправления этой проблемы никуда не годятся.

    Если вы настаиваете на этом, корневые флага должны быть «rootflags = trans = virtio, cache = mmap», иначе отображение памяти чтения / записи не будет работать (используется, например, MariaDB).

    Да, конечно. Добавьте в командную строку ядра:

     root=host rootfstype=9p rootflags=trans=virtio 

    И вы можете загрузиться без initrd (если 9P скомпилировано в ядро, а не как модули).

    Linux и Unix - лучшая ОС в мире.