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

Из http://www.lindevdoc.org/wiki//var/cache

Извините за (очень) последний ответ, но я полагаю, что важно включать этот бит для дальнейшего использования.

Выделенный бит, который действительно отвечает на этот вопрос.

/var/cache каталог содержит кэшируемые файлы, т.е. файлы, которые были сгенерированы и могут быть повторно созданы любое время, но их стоит сохранить, чтобы сэкономить время перевычислений их.

Любое приложение может создать файл или каталог здесь. Предполагается, что файлы, хранившие здесь, не очень важны, таким образом, система может удалить содержание/var/cache или периодически, или когда его содержание становится слишком большим.

Любое приложение должно принять во внимание, что файл, хранивший здесь, может исчезнуть любое время и быть готов повторно вычислить свое содержание (со штрафом некоторого времени).

Таким образом да, можно удалить эти файлы, не ожидая, что что-либо плохо произойдет.

10
13.04.2017, 15:37
3 ответа

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

Добавьте модули на 9 пунктов к хосту 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.
8
27.01.2020, 20:02
  • 1
    Кроме того, Вы могли использовать 'security_model=mapped' для сможения к, полностью получают доступ к базовой файловой системе, так как это хранит владение и другую привилегированную информацию о файле в расширенных атрибутах файла. Это также позволяет Вам монтировать чтение-запись фс вместо только для чтения. См. также ссылку –  Rutger Nijlunsing 04.01.2014, 22:03
  • 2
    Современный Linux, кажется, игнорирует "root=r" параметр командной строки и безусловно ищет mount_tag "/dev/root". Возражение на обновление ответа для отражения этого? записи –  R.. GitHub STOP HELPING ICE 14.03.2018, 21:17

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

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

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

0
27.01.2020, 20:02

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

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

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

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

4
27.01.2020, 20:02

Теги

Похожие вопросы