सवाल दृढ़ता से बढ़ते विभाजन (कैस्पर-आरडब्ल्यू) केवल पढ़ने के लिए


मैं यूएसबी स्टिक पर उपयोग के लिए एक नई आईएसओ छवि बनाने की कोशिश कर रहा हूं। मैंने अपनी यूएसबी स्टिक को 2 विभाजनों में विभाजित किया है, एक vfat और एक ext4vfat विभाजन आईएसओ और है GRUB2 इसके लिए स्थापित, ऐसा है कि GRUB2 आईएसओ बूट करता है।

ext4 विभाजन में वॉल्यूम लेबल है casper-rw और लाइव यूएसबी के लिए लगातार डेटा स्टोर के रूप में प्रयोग किया जाता है। मैंने संशोधित किया है grub.cfg जैसे कि मुझे बूट पर दो विकल्प मिलते हैं, एक आईएसओ को लगातार मोड में बूट करने के लिए और एक सामान्य रूप से बूट करने के लिए।

हालांकि, जब "सामान्य" मोड में बूटिंग, casper-rw विभाजन को सामान्य ड्राइव के रूप में रखा जाता है और लगातार मोड में किए गए परिवर्तन नहीं रहते हैं।

मैं क्या चाहता हूं कि कैस्पर-आरडब्ल्यू विभाजन पर चढ़ाया जा सके / फाइल सिस्टम, लेकिन जब मैं उबंटू से सामान्य रूप से बूट करने के लिए कहता हूं (यानी, बिना persistent में विकल्प GRUB2), मैं चाहता हूं कि उस विभाजन को केवल पढ़ने के लिए आरोहित किया जाए ताकि लगातार मोड में किए गए परिवर्तन बने रहें।

इस लक्ष्य को हासिल करने का सबसे अच्छा तरीका क्या है?


1
2018-01-19 21:48


मूल




जवाब:


मैंने क्या किया है मैं initrd.lz के अंदर कैस्पर स्क्रिप्ट को संशोधित करता हूं।

स्क्रिप्ट कैस्पर-आरडब्ल्यू को केवल पढ़ने के लिए माउंट करेगा और उसके बाद इसे शीर्ष पर / ओवरले पर रखेगी। फिर यह ओवरले के शीर्ष पर tmpfs माउंट करेगा।

मैं मिंट बीटीडब्ल्यू का उपयोग करता हूं, उबंटू के बारे में निश्चित नहीं हूं, उम्मीद है कि यह आपके लिए काम करेगा।

यहां अधिक जानकारी दी गई है:

  1. से निर्देश का उपयोग कर initrd निकालें यहाँ
  2. स्क्रिप्ट / कैस्पर संपादित करें, संशोधित करें setup_unionfs() समारोह। आपको संशोधित फ़ंक्शन मिल गया है यहाँ

    ...
    p_ro_mount=""
    if [ -n "${PERSISTENT}" ]; then
          cowprobe=$(find_cow_device "${root_persistence}")
          if [ -b "${cowprobe}" ]; then
                p_ro_device=${cowprobe}
                p_ro_fstype=$(get_fstype "${cowprobe}")
                p_ro_mountopt="ro,noatime"
                p_ro_mount="/persistent"
                mkdir -p $p_ro_mount
                mount -t ${p_ro_fstype} -o ${p_ro_mountopt} \   
                  ${p_ro_device} \
                  ${p_ro_mount} || panic "Can not mount"
    ...
    case ${UNIONFS} in
    ...
       overlayfs)
           mounts=""
           for mount in /cow $p_ro_mount $rofslist
    ...
    
  3. Initrd.lz को बदलें, या मेरे मामले में, मैंने अभी एक नया बनाया है।

    find . | cpio --quiet -o -H newc | lzma -7 > ../ro-initrd.lz
    
  4. के लिए और बूट विकल्प जोड़ें syslinux.cfg

    append initrd=/casper/ro-initrd.lz file=/cdrom/preseed/linuxmint.seed boot=casper  splash -- persistent
    

नोट: मैं मिंट 16 (x86) और unetbootin का उपयोग करता हूं।


2
2018-01-22 10:10



क्या आप इसे हासिल करने के बारे में कुछ और विवरण जोड़ सकते हैं? यहां तक ​​कि लिपि की एक प्रति ठीक होगी। - Chinmay Kanchi
मैं और विस्तार जोड़ता हूं - David Lim