क्या रूट फाइल सिस्टम के रूप में सदाचार / ९पी का उपयोग किया जा सकता है?


11

क्या होस्ट से अतिथि के लिए साझा किए गए फ़ोल्डर का उपयोग करना संभव है अतिथि के अंदर रूट फाइल सिस्टम के रूप में / एफ़टीपी के माध्यम से अतिथि के लिए?

मेरे पिछले प्रश्न से बहुत हद तक संबंधित: क्या कई मेहमानों के साथ एक ही होस्ट फ़ोल्डर को साझा करने के लिए virtfs / 9p का उपयोग किया जा सकता है?


मैंने कभी भी रूट FS के रूप में 9p करने की कोशिश नहीं की, लेकिन मुझे लगता है कि उचित initrd के साथ ऐसा कुछ भी नहीं है जो आपको ऐसा करने से रोक सके।
अलेक्जेंडर कुद्रेवतियख

1
jor1k ऐसा करता है
Janus Troelsen

क्या सुंदर होगा यदि हम / और 9p माउंट को ओवरले के साथ ओवरलेफ़्स का उपयोग कर सकते हैं, तो इसमें चुरोट करें। लेकिन यह बहुत उपयोगी होने में विफल रहता है क्योंकि कम लिखने वालों को अपरिभाषित किया जाता है ... हालांकि अन्य फ़्यूज़र फाइल सिस्टम हैं जो मुझे लगता है कि अनुमति देते हैं, लेकिन मैं अभी तक नहीं पहुंचा हूं।
सिरो सेंटिल्ली 冠状 病毒 iro i 法轮功

जवाबों:


9

हाँ, उदाहरण के लिए मेजबान के FS के साथ VM को बूट करने का तरीका देखें:

होस्ट में 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.

2
इसके अतिरिक्त, आप 'security_model = मैप्ड' का उपयोग कर सकते हैं ताकि अंतर्निहित फ़ाइल-सिस्टम को पूरी तरह से एक्सेस किया जा सके क्योंकि यह फ़ाइल की विस्तारित विशेषताओं में स्वामित्व और अन्य विशेषाधिकार प्राप्त फ़ाइल जानकारी संग्रहीत करता है। इससे आप fs को आसानी से पढ़ने के बजाय fs-write माउंट कर सकते हैं। लिंक
Rutger Nijlunsing

आधुनिक लिनक्स "रूट = आर" कमांड लाइन विकल्प को नजरअंदाज करता हुआ लगता है और बिना किसी शर्त के माउंट_टैग "/ देव / रूट" की तलाश करता है। प्रतिबिंबित करने के लिए उत्तर को अपडेट करने में कोई आपत्ति?
आर .. गिटहब स्टॉप हेल्पिंग ICE

4

जैसा कि एक विचार के रूप में यह पहली बार में लगता है, ऐसा न करें। 9P अपनी वर्तमान स्थिति में कुछ मूल संचालन को नहीं संभाल सकता है, जिसमें शामिल हैं:

वर्तमान में 9P उत्पादन में उपयोग की जाने वाली एक फिट स्थिति में नहीं है।

जब आप रूट फाइल सिस्टम के रूप में 9P के साथ एक बूट करने योग्य प्रणाली बना सकते हैं, तो ऑपरेटिंग कि वीएम महत्वपूर्ण दुःख का कारण होगा - अगर डेबियन का उपयोग कर रहे हैं, तो ऊपर सूचीबद्ध दोष काम करने से अप-गेट अपग्रेड को रोक देगा। इस समस्या को ठीक करने के लिए पैच वर्षों से कहीं नहीं गए हैं।

यदि आप ऐसा करने पर जोर देते हैं, तो रूटफ्लैग "रूटफ्लैग = ट्रांस = गुणियो, कैश = एमएमएपी" होना चाहिए, अन्यथा मेमोरी मैपिंग पढ़ने / लिखने से काम नहीं चलेगा (उदाहरण के लिए, MariaDB)।


हालांकि मुझे यह पसंद नहीं है, इनपुट के लिए धन्यवाद। मैं वर्तमान में एक उचित फ़ाइल कंटेनर में बूट और रूट रखने के लिए विचार कर रहा हूं और कुछ डेटा जो 9p में साझा किए जाने वाले हैं ...
0xC0000022L

1

हाँ यकीनन। कर्नेल कमांड लाइन में जोड़ें:

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

और आप initrd के बिना बूट कर सकते हैं (यदि 9P कर्नेल में संकलित किया जाता है, बजाय मॉड्यूल के रूप में)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.