उबंटू इंस्टॉलर को कस्टमाइज़ करने में विशेषों के लिए गाइड


9

मैंने प्रीसेडिंग और कस्टमाइज़ेशन के लिए गाइड के माध्यम से पढ़ने की कोशिश की है , लेकिन मुझे समझ नहीं आया कि कैसे और कहाँ संशोधित किया जाए। मैं केवल व्यावहारिक उदाहरणों के माध्यम से आराम से सीख सकता हूं, जिसके लिए मैं यह प्रश्न पूछता हूं।

मैं कुछ विशिष्ट कार्यों को करने के लिए preseeding और कस्टमाइज़िंग समाधान देख रहा हूं:

  • डिफ़ॉल्ट रूप से स्थापित पैकेजों को पूरी तरह से फिर से लिखना, बहुत कुछ जैसे न्यूनतम इंस्टॉल और --no-install-recommendsझंडे के साथ apt-get
  • डिफ़ॉल्ट इंस्टॉल सूची में कुछ मालिकाना आवेदन जोड़ें
  • स्वचालित रूप से इंस्टॉल और लाइव सत्र पर मालिकाना ड्राइवरों को स्थापित करें और माउंट करें
  • डिफ़ॉल्ट रूप से इंस्टॉल किए गए एप्लिकेशन के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइलों को संपादित करें
  • अनुमति के साथ विभाजन निर्दिष्ट करें
  • इंस्टॉलर मीडिया (सीडी / डीवीडी / यूएसबी) में पैकेज पूल को संशोधित करें, अधिमानतः apt-getऔर इसी तरह कमांड लाइन टूल का उपयोग कर aptitude

क्या कोई मुझे बता सकता है कि केवल उपर्युक्त करने के लिए preseed विकल्प को कैसे कॉन्फ़िगर करें?

NB मैं पूल में पैकेज जोड़ने / निकालने के बाद GPG भाग को नहीं समझता।

PS तीसरा बिंदु विशेष महत्व का है।


बस स्पष्ट होने के लिए "उबंटू इंस्टॉलर" आलेखीय (विशिष्टता) या वैकल्पिक (डेबियन-इंस्टॉलर) इंस्टॉलर को संदर्भित करता है?
komputes

@komputes, या तो करेंगे।
ऑक्सीवि

जवाबों:


6

Preseed के संदर्भ के लिए, आप संस्थापन-मार्गदर्शिका-i386 को संदर्भित करना पसंद कर सकते हैं जिसमें निम्नलिखित नमूना शामिल हैं:

  /usr/share/doc/installation-guide-i386/example-preseed.txt.gz
  • डिफ़ॉल्ट रूप से स्थापित पैकेजों को पूरी तरह से फिर से लिखना, बहुत कुछ जैसे न्यूनतम इंस्टॉल
  • डिफ़ॉल्ट इंस्टॉल सूची में कुछ मालिकाना आवेदन जोड़ें

आपके द्वारा इंस्टॉल किए जाने वाले पैकेजों की सूची प्रदान करने के लिए, आप निम्नलिखित लाइन की तलाश कर सकते हैं:

  tasksel tasksel/first   multiselect ubuntu-desktop

जहां "उबंटू-डेस्कटॉप" को संकुल या मेटा पैकेजों की मनमानी संख्या के लिए बदला जा सकता है।

  • स्वचालित रूप से इंस्टॉल और लाइव सत्र पर मालिकाना ड्राइवरों को स्थापित करें और माउंट करें

अन्य जो आवश्यक पैकेज (मालिकाना ड्राइवरों के लिए) निर्दिष्ट कर रहे हैं, मुझे यकीन नहीं है कि यह कैसे पूरा होगा। एक साइड नोट के रूप में, आप विभाजन को "माउंट" करते हैं, आप कर्नेल मॉड्यूल / ड्राइवर को "लोड" करते हैं।

  • डिफ़ॉल्ट रूप से इंस्टॉल किए गए एप्लिकेशन के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइलों को संपादित करें

इस तरह के स्क्रिप्टेड बदलाव करने के लिए, आप शायद इस पर गौर करना चाहते हैं:

  d-i preseed/late_command string ...

जहाँ "..." को मनमाने आदेशों जैसे कि sed -i जैसे उदाहरण के साथ बदला जा सकता है।

  • अनुमति के साथ विभाजन निर्दिष्ट करें

ऊपर बताए गए उदाहरण में एक विभाजन खंड है।

छंद के साथ सर्वव्यापकता

कैस्पर preseed का समर्थन करता है और सर्वव्यापकता के कई मूल्यों की preseeded हो सकता है। यहां कुछ चर दिए गए हैं जो सर्वव्यापक के लिए प्रासंगिक हो सकते हैं:

ubiquity countrychooser/shortlist select US
ubiquity languagechooser/language-name select English
ubiquity localechooser/supported-locales multiselect en_US.UTF-8
ubiquity ubiquity/summary note
ubiquity ubiquity/reboot boolean true
ubiquity ubiquity/poweroff boolean true
ubiquity ubiquity/success_command string ...

जहाँ "..." में उपर्युक्त लेट_कमांड के समान ही होगा, यशस्वी_कमांड को यूबीक्विक और लेट_कमांड डी द्वारा पढ़ा जाता है।


क्या कॉन्फ़िगरेशन फ़ाइलों को पहले से बदलने का कोई तरीका नहीं है? मैं अनुशंसित पैकेजों की स्थापना को कैसे रोकूं? मैं ऑफ़लाइन स्थापना के लिए स्वामित्व पैकेज कैसे जोड़ूं?
ऑक्सीविवि

लगता है कि आप एक कस्टम छवि बनाना चाहते हैं, जैसा कि यहाँ वर्णित है: help.ubuntu.com/community/LiveCDCustomization छवि में एक preseed फ़ाइल भी हो सकती है जहाँ आप पहले बताई गई कॉन्फ़िगरेशन फ़ाइलों को बदल सकते हैं। एक और दृष्टिकोण यह है कि आप कुछ अनुकूलन के लिए अपने स्वयं के पैकेज भी बना सकते हैं।
komputes

ठीक है, कॉन्फ़िगरेशन बदलना भूल जाओ, क्या मुझे डिफ़ॉल्ट रूप से डिस्क में मौजूद पैकेजों को शामिल करने के लिए सीडी के निर्देशों को कस्टम करने की आवश्यकता है?
ऑक्सीविवि

मैंने एक छवि को माउंट किया, सामग्री को एक निर्देशिका में कॉपी किया, Ubiquity मापदंडों को संशोधित किया। मैं इसे अंतिम रूप कैसे दूंगा?
ऑक्सीविवि

ISO छवि को अंतिम रूप देने / बनाने के लिए यहां "सीडी इमेज का निर्माण" करने वाले चैटर का अनुसरण करें: help.ubuntu.com/community/LiveCDCustomization
komputes

3

निम्न एक संशोधित बूट छवि बनाता है। इसे एक सीडी में जलाएं, या इसे परीक्षण करने के लिए आईएसओ को वीएम में डालें। आपको आवश्यकता होगी cpioऔर genisoimage(यह संकुल और निष्पादनों के नाम हैं)।

निम्नलिखित मेकफाइल के रूप में है, लेकिन अंतःक्रियात्मक रूप से दर्ज किया जा सकता है। ${IN_ISO}मूल आईएसओ छवि को संदर्भित करता है (मैंने -alternativeसंस्करण का उपयोग किया था, और मैं आपको वही करने की सलाह दूंगा), ${OUT_ISO}वांछित आईएसओ नाम के लिए।

# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
    mkdir -p mount
    sudo mount -o loop ${IN_ISO} mount
    mkdir cdroot
    cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
    sudo umount mount && rm -r mount
    chmod -R a+rw cdroot

# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
    cp isolinux.cfg cdroot/isolinux/isolinux.cfg
    test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
    mkdir -p initrd
    cd initrd && gunzip <../initrd.orig.gz | sudo cpio -i && cd ..
    cp preseed.cfg initrd/preseed.cfg
    cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
    sudo rm -rf initrd

# Create the ISO image. Make sure to use extensions for lower-case filenames    
iso: cdroot prepare
    genisoimage -o ${OUT_ISO} \
        -force-rr -J \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        cdroot

आपको कुछ अतिरिक्त फ़ाइलों की आवश्यकता है:

isolinux.cfgबूट लोडर को कॉन्फ़िगर करता है। आप इसे केवल बूट करना चाहते हैं, और स्वचालित रूप से इंस्टॉलेशन प्रक्रिया से गुजरते हैं। इसे ऐसा दिखना चाहिए:

default install
label install
  menu label ^Install my custom Ubuntu
  kernel /install/vmlinuz
  append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
prompt 1
timeout 20

वास्तव में स्थापना को कॉन्फ़िगर करने से पहले हमें सभी तैयारियों की आवश्यकता है। Preseed उदाहरण डाउनलोड करें और इसे preseed.cfg नाम दें। इसके माध्यम से जाओ और जो भी आप चाहते हैं उसे संपादित करें। महत्वपूर्ण विकल्प हैं:

# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern

# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true

# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard

#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.

लेकिन मेरा सुझाव है कि आप एक उदाहरण के रूप में उपरोक्त का उपयोग न करें, लेकिन उबंटू के उदाहरण को डाउनलोड करें और इसे अपनी आवश्यकताओं के साथ कॉन्फ़िगर करें late_command, आप शेल से कुछ भी कर सकते हैं, जिसमें एक स्क्रिप्ट को डाउनलोड और निष्पादित करना शामिल है जो आपके कस्टम सॉफ़्टवेयर को स्थापित और कॉन्फ़िगर करता है। उदाहरण के लिए, इसका उपयोग इस प्रकार करें late_command:

d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'

वैकल्पिक रूप से, आप install.shऊपर initrd में रख सकते हैं और इसे सीधे निष्पादित कर सकते हैं। इसकी सामग्री इस तरह दिख सकती है:

#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh

यह वास्तव में इस बात पर निर्भर करता है कि आपका मालिकाना ड्राइवर स्थापना रूटीन कैसे काम करता है।


जैसा कि मैंने सवाल में कहा था, मैं उन कार्यों के बारे में मार्गदर्शन चाहता हूं जो मैंने सूचीबद्ध कार्यों के लिए बिल्कुल ठीक हैं; मैं स्थापित किए जाने वाले पैकेजों को फिर से कैसे लिखूं? मालिकाना ड्राइवरों की ऑटो स्थापना के बारे में क्या?
ऑक्सविवि

@Oxwivi एक स्क्रिप्ट लिखें, जो आप चाहते हैं सब कुछ स्थापित करता है, और इसे डाउनलोड और निष्पादित करें late_commandPackage selectionवह हिस्सा है जिसका उपयोग आप अपने स्वयं के पैकेजों को स्थापित करने के लिए कर सकते हैं, लेकिन आप इसे स्क्रिप्ट में भी कर सकते हैं।
फ़िहाग

1
@Oxwivi आप जॉकी स्थापित कर सकते हैं और बाद में इसे aptitude purge jockeyस्क्रिप्ट में हटा सकते हैं । मुझे यकीन नहीं है कि आपके पास "किसी भी प्रकार के स्वामित्व वाले ड्राइवरों को स्थापित करने का सामान्य तरीका" है। यह किसी भी प्रतिबंधित ड्राइवरों को स्थापित करने का एक सामान्य तरीका है, बस उस ड्राइवर का पैकेज रखें जिसे आप कार्यस्थल में या aptitude install -yस्क्रिप्ट के बाद स्थापित कर रहे हैं , और यह काम करेगा। यदि आप चाहते हैं कि आपकी छवि कई मशीनों पर काम करे, तो आपको संभवतः सभी लागू स्वामित्व वाले ड्राइवरों के लिए जॉकी पूछने का तरीका खोजना होगा। ...
फ़िहाग

1
@Ocwivi ... हालाँकि, सभी उपलब्ध मालिकाना ड्राइवरों को स्थापित करना आमतौर पर एक बुरा विचार है: मालिकाना चालक आमतौर पर बूढ़े होते हैं, असमर्थित होते हैं और उन्हें अतिरिक्त गैर-मानक कॉन्फ़िगरेशन की आवश्यकता होती है। इसके अलावा, आपको यह सुनिश्चित करना चाहिए कि आपको गैर-मुक्त ड्राइवरों को वितरित करने की कानूनी रूप से अनुमति है।
फ़िहाग

1
@Oxwivi यह विश्वास निराधार है, यह देखते हुए कि कोई भी गैर-मुक्त रिपॉजिटरी में कुछ भी डाल सकता है। हालाँकि, यह चर्चा इस प्रश्न के बारे में बहुत दूर है (preseeding के बारे में)। आपको पूछना चाहिए कि किसी को मौजूदा सिस्टम के लिए लागू मालिकाना ड्राइवरों की सूची मिलती है।
फ़िहाग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.