रूट विशेषाधिकारों की आवश्यकता के बिना मैं डिस्क छवि फ़ाइल में syslinux / extlinux कैसे स्थापित करूं


13

मैंने एक घर-निर्मित लिनक्स वितरण का निर्माण किया है, और मैं पूरी डिस्क छवि फ़ाइल को एक गैर-रूट उपयोगकर्ता के रूप में एक अपवाद के साथ बना सकता हूं - बूट लोडर को स्थापित करना। मैं syslinux (वास्तव में extlinux) का उपयोग कर रहा हूं, और इसे स्थापित करने के लिए मुझे बूट पार्टीशन को माउंट करना है, जिसके लिए रूट / sudo विशेषाधिकारों की आवश्यकता होती है। कमांड एक मेकफाइल से चलाए जाते हैं, और चर नामों को स्पष्ट रूप से इंगित करना चाहिए कि उनके साथ क्या बदलना है।

sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)

क्या रूट विशेषाधिकारों की आवश्यकता के बिना डिस्क छवि फ़ाइल के लिए साइस्लिनक्स या एक्सक्लिनक्स लिखने का एक तरीका है?


क्या आप सोच रहे हैं कि क्या बिना रूट के उन सभी कमांडों को करना संभव है ? या सिर्फ एक्सक्लिनक्स कमांड?
बेनजीवेब

@BenjiWiebe यदि कोई दूसरा तरीका है, तो जो भी कमांड की आवश्यकता होती है, लेकिन जैसा कि मैंने समझा कि एक्स्ट्लुंक्स को चलाने के लिए आपको एक माउंटेड फ़ाइल सिस्टम की आवश्यकता है, और फिर एक्सलिंक्स को रूट विशेषाधिकारों के साथ चलने की आवश्यकता है जब इस तरह से किया जाता है।

जवाबों:


8

यह संभव है syslinux:

syslinux ~/floppy.ima

syslinuxसंस्थापक पर्याप्त जादू एक को अनमाउंट फाइल सिस्टम पर चलाने के लिए होता है। (वास्तव में, ऐसा करने के लिए डिज़ाइन किया गया है।) extlinuxइंस्टॉलर एक माउंटेड फाइल सिस्टम पर चलने की उम्मीद करता है, हालाँकि।

extlinuxइंस्टॉलर को एक हिस्से में विभाजित करना लगभग निश्चित रूप से संभव है जो फ़ाइलों को कॉपी करता है ( FAT के लिए mtools की तरह कुछ है , जो दुर्लभ है, लेकिन मौजूद है , हालांकि एक बस उन्हें सीधे रूप से एकीकृत कर सकता है genext2fs), और एक हिस्सा जो बूटस्ट्रेटर स्थापित करता है (जहां मैं इसे एक साथ करने में सक्षम हो सकता है)।

मैंने GRUB 2 के लिए कुछ ऐसा किया, जो ग्रिल के लिए एमबीआर और पहले विभाजन के बीच की जगह में स्थापित होता है ; यह वास्तव में करना आसान था, क्योंकि GRSL, SYSLINUX के विपरीत, बूस्टर से उतनी आवश्यकता नहीं है। यह मूल रूप से आपकी व्यापक आवश्यकताओं पर निर्भर करता है। यदि SYSLINUX के बारे में उपरोक्त भाग आपकी मदद नहीं करता है, तो मुझसे संपर्क करें, इसलिए हम कुछ काम कर सकते हैं।


इस जानकारी के लिए आपको धन्यवाद। मैं genxt2fs का उपयोग कर रहा हूं, इसलिए आपका सुझाव सबसे अच्छा विकल्प लगता है। क्या यह केवल एमबीआर में एक्सक्लिनक्स कोड को हटाने और एफएस को फाइल कॉपी करने की बात है, या फाइल को एफएस के भीतर कुछ ब्लॉकों में जाने की आवश्यकता है?

मैंने अभी तक EXTLINUX को विस्तार से नहीं देखा है (ऐसा करेंगे और फिर इस टिप्पणी को हटा देंगे, लेकिन मुझे थोड़ा समय दें) लेकिन SYSLINUX, LILO, GRUB और अन्य बूटलोडर्स के लिए, यह आमतौर पर ऐसा होता है कि कोड PBR में कॉपी किया जाता है (विभाजन बूट रिकॉर्ड, वल्गो बूब्सक्टर, एमबीआर नहीं), और फिर कोड को इसमें हार्डकोड किए गए फ़ाइल की स्थिति के लिए संपादित किया जाता है (इसलिए एक इंस्टॉलर की आवश्यकता है)। मैं तुम्हारे लिए एक साथ कुछ मिल जाएगा।
मिराबिलोस


क्या आप मुझे ग्रब का उपयोग करके अपने कार्यान्वयन के लिए इंगित कर सकते हैं? वर्तमान में मेरे पास है grub-install, लेकिन अभी भी बूट विभाजन को माउंट करने की आवश्यकता है।
कॉपी

@copy यह है कि OpenADK में इसका उपयोग कैसे किया जाता है, जिसमें ग्रिल की तुलना में और भी अधिक लचीली छवि है (जिसे केवल आईएसओ 9660 फाइल सिस्टम बनाने की आवश्यकता है)। शायद यही मदद करता है? यदि नहीं, तो मुझसे सीधे संपर्क करें। - संपादित करें: ओह रुको, नहीं, core.imgपीढ़ी ... lemme देखें ... कॉल के लिए यहां देखें grub-mkimage। यह लक्ष्य वातावरण पर अत्यधिक निर्भर है (मूल रूप से, गतिशील रूप से दूसरों को लोड करने के लिए कौन से मॉड्यूल की आवश्यकता होती है; GRUB 1 बहुत आसान था)।
मिराबिलोस

5

यदि आप /etc/fstabकुछ कहने में एक पंक्ति जोड़ते हैं:

/dev/loop0      /mnt                                    ext4    defaults,user   0 0

फिर आप /dev/loop0एक नियमित उपयोगकर्ता के रूप में माउंट / अनमाउंट कर सकते हैं ।

और अगर आप ऐसा करेंगे chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>तो extlinux, losetup, mkfs, आदि के रूप में किया जा सकता है youruser


मैं चाहता हूं कि यह एक सामान्य निर्माण प्रक्रिया का हिस्सा हो, और छवि फ़ाइल और आरोह बिंदु का स्थान उपयोगकर्ता से उपयोगकर्ता में भिन्न हो सकता है। मैं प्रत्येक उपयोगकर्ता के लिए fstab संपादन की आवश्यकता नहीं पसंद करूंगा।

@ पैट्रिक एडिटिंग fstab वैश्विक है।
बेनजीवेब

लेकिन लॉसेटअप जड़ ही रहता है, नहीं?
बमरगुलियों

@bmargulies तब नहीं जब लूप डिवाइस को चॉइस या chmod'ed किया गया हो ताकि उपयोगकर्ता की पहुंच उस तक हो ... या, फेडोरा पर कम से कम, आप उपयोगकर्ता को केवल diskसमूह में जोड़ सकते हैं । (या एक loopसमूह बनाएं और
उसका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.