कैसे एक raspbian raspi-config सेटअप को स्वचालित कर सकता है?


17

मैंने अपने आप को बार-बार अपने सभी पीआई को रास्पियन के साथ बहुत अधिक उसी तरह से स्थापित करने के लिए पाया है जो रास्पी-कॉन्फ़िगरेशन का उपयोग कर रहा है।

वहाँ सभी सेटिंग्स है कि मैं एक निष्पादन योग्य स्क्रिप्ट में raspi-config का उपयोग कर बनाया है कि मैं एक नया pi मैं स्थापित करने के लिए wget के साथ डाउनलोड कर सकता है निकालने का एक तरीका है?

समान प्रभाव वाला एक समान समाधान भी सराहा जाएगा। मुझे लगता है कि मैं एक आरपीआई docker कार्यान्वयन की कोशिश कर सकता हूं, लेकिन मैं यह जानने के लिए उत्सुक नहीं हूं कि उस सामान को कैसे खून बह रहा है।


1
यह इस बात पर निर्भर करता है कि आप क्या कॉन्फ़िगरेशन करना चाहते हैं? raspi- कॉन्फिगरेशन कॉन्फिगरेशन फाइल को संशोधित करता है जिसे आप दूसरे तरीके (/boot/config.txt,/etc/module.conf ...) का उपयोग करके संशोधित कर सकते हैं
13

1
/usr/binयदि यह मदद करता है, तो यह एक बहुत ही सरल 1000 लाइन शेल स्क्रिप्ट है । यदि आप इसे एक ताज़ा छवियों के साथ शुरू करना चाहते हैं, तो हटाएं /etc/init.d/apply_noobs_os_configऔर लिंक को लिंक करें /etc/rc2.d
गोल्डीलॉक्स

जिस तरह से raspi-config सभी बुनियादी सेटअप कार्यों को एक स्थान पर केंद्रित करता है, बिना मुझे यह जानने की आवश्यकता के कि प्रत्येक कार्य को कैसे करना है, मैं एक साधारण डीएसएल को पसंद करूंगा कि चलो मुझे एक फाइल में सभी सेटिंग्स निर्दिष्ट करें। कर्ता की तरह।
8DH

सिर्फ डॉकटर का उपयोग क्यों न करें?
टिम होल्ट

हां क्यों नहीं? आरपीआई के लिए पसंदीदा डॉकटर समाधान क्या है?
8DH

जवाबों:


20

कम से कम आजकल, raspi-configगैर-सक्रिय मोड का समर्थन करता है:

cat /boot/cmdline.txt            # show original cmdline.txt
raspi-config nonint do_serial 1  # disable serial console
cat /boot/cmdline.txt            # confirm changes
raspi-config nonint do_serial 0  # enable serial console
cat /boot/cmdline.txt            # confirm changes

इसके साथ, आप सेटअप स्क्रिप्ट लिख सकते हैं जो कि आप इंटरैक्टिव कमांड के माध्यम से कुछ भी कर सकते हैं, और यह बिल्कुल वैसा ही काम करेगा। आपको स्क्रिप्ट के स्रोत से संबंधित कमांड और उनके उपयोग को खोजने की आवश्यकता होगी, हालांकि।


1
वह अद्भुत है!
8DH

इसलिए जब मैं एक एसडी कार्ड तैयार करता हूं तो मैं छवि को वहां रख सकता हूं, अपनी स्क्रिप्ट को फ़ोल्डर में जोड़ सकता हूं और फिर पीआई बूट होने पर स्क्रिप्ट चला सकता हूं।
8DH

क्या इस प्रक्रिया में कोई और सुधार है जो मुझे याद आ रहा है?
8DH

1
वह सब कुछ है जिसके बारे में मुझे पता है - अगर वहाँ अधिक है, तो यह बहुत ही स्पष्ट रूप से प्रलेखित नहीं है। मैंने स्क्रिप्ट देखने के दौरान इस पर ठोकर खाई, और मुझे यह सुविधा मिलने के बाद आगे की जानकारी नहीं मिली।
फ्रीक

1
@ 8DH क्या कोई ऐसा तरीका है जिसे आप इस विधि से नहीं संभाल सकते हैं? (यदि यह व्यक्तिगत रूप से आपके लिए अभी भी प्रासंगिक है)
फ्रीक

17

यह अभी भी कहीं भी प्रलेखित नहीं है, लेकिन rc_gui टूल (मैं मान रहा हूं कि यह एक ग्राफिक यूजर इंटरफेस होगा, अगर मैं कभी भी पूरा डेस्कटॉप स्थापित करता था) तो raspi-configashash स्क्रिप्ट को कमांड लाइन विकल्प का उपयोग करता है। आप सी सोर्स कोड में विकल्पों की पूरी सूची देख सकते हैं । अद्यतन: आधिकारिक रेपो किसी कारण से गायब हो गया है। यह सबसे सक्रिय कांटा है जो मुझे मिल सकता है।

/* Command strings */
#define GET_CAN_EXPAND  "sudo raspi-config nonint get_can_expand"
#define EXPAND_FS       "sudo raspi-config nonint do_expand_rootfs"
#define GET_HOSTNAME    "sudo raspi-config nonint get_hostname"
#define SET_HOSTNAME    "sudo raspi-config nonint do_hostname %s"
#define GET_BOOT_CLI    "sudo raspi-config nonint get_boot_cli"
#define GET_AUTOLOGIN   "sudo raspi-config nonint get_autologin"
#define SET_BOOT_CLI    "sudo raspi-config nonint do_boot_behaviour B1"
#define SET_BOOT_CLIA   "sudo raspi-config nonint do_boot_behaviour B2"
#define SET_BOOT_GUI    "sudo raspi-config nonint do_boot_behaviour B3"
#define SET_BOOT_GUIA   "sudo raspi-config nonint do_boot_behaviour B4"
#define GET_BOOT_WAIT   "sudo raspi-config nonint get_boot_wait"
#define SET_BOOT_WAIT   "sudo raspi-config nonint do_boot_wait %d"
#define GET_SPLASH      "sudo raspi-config nonint get_boot_splash"
#define SET_SPLASH      "sudo raspi-config nonint do_boot_splash %d"
#define GET_OVERSCAN    "sudo raspi-config nonint get_overscan"
#define SET_OVERSCAN    "sudo raspi-config nonint do_overscan %d"
#define GET_CAMERA      "sudo raspi-config nonint get_camera"
#define SET_CAMERA      "sudo raspi-config nonint do_camera %d"
#define GET_SSH         "sudo raspi-config nonint get_ssh"
#define SET_SSH         "sudo raspi-config nonint do_ssh %d"
#define GET_VNC         "sudo raspi-config nonint get_vnc"
#define SET_VNC         "sudo raspi-config nonint do_vnc %d"
#define GET_SPI         "sudo raspi-config nonint get_spi"
#define SET_SPI         "sudo raspi-config nonint do_spi %d"
#define GET_I2C         "sudo raspi-config nonint get_i2c"
#define SET_I2C         "sudo raspi-config nonint do_i2c %d"
#define GET_SERIAL      "sudo raspi-config nonint get_serial"
#define GET_SERIALHW    "sudo raspi-config nonint get_serial_hw"
#define SET_SERIAL      "sudo raspi-config nonint do_serial %d"
#define GET_1WIRE       "sudo raspi-config nonint get_onewire"
#define SET_1WIRE       "sudo raspi-config nonint do_onewire %d"
#define GET_RGPIO       "sudo raspi-config nonint get_rgpio"
#define SET_RGPIO       "sudo raspi-config nonint do_rgpio %d"
#define GET_PI_TYPE     "sudo raspi-config nonint get_pi_type"
#define GET_OVERCLOCK   "sudo raspi-config nonint get_config_var arm_freq /boot/config.txt"
#define SET_OVERCLOCK   "sudo raspi-config nonint do_overclock %s"
#define GET_GPU_MEM     "sudo raspi-config nonint get_config_var gpu_mem /boot/config.txt"
#define GET_GPU_MEM_256 "sudo raspi-config nonint get_config_var gpu_mem_256 /boot/config.txt"
#define GET_GPU_MEM_512 "sudo raspi-config nonint get_config_var gpu_mem_512 /boot/config.txt"
#define GET_GPU_MEM_1K  "sudo raspi-config nonint get_config_var gpu_mem_1024 /boot/config.txt"
#define SET_GPU_MEM     "sudo raspi-config nonint do_memory_split %d"
#define GET_HDMI_GROUP  "sudo raspi-config nonint get_config_var hdmi_group /boot/config.txt"
#define GET_HDMI_MODE   "sudo raspi-config nonint get_config_var hdmi_mode /boot/config.txt"
#define SET_HDMI_GP_MOD "sudo raspi-config nonint do_resolution %d %d"
#define GET_WIFI_CTRY   "sudo raspi-config nonint get_wifi_country"
#define SET_WIFI_CTRY   "sudo raspi-config nonint do_wifi_country %s"
#define CHANGE_PASSWD   "(echo \"%s\" ; echo \"%s\" ; echo \"%s\") | passwd"

अद्यतन: मैं देखता हूँ कि वहाँ लोकेल या कीबोर्ड सेटिंग्स के बारे में कुछ भी नहीं है। इसलिए, इससे मुझे पता चलता है कि हमें किस स्रोत की जांच करनी चाहिए raspi-config। सौभाग्य से, हमारे पास बहुत सारे उदाहरण हैं जो इस बात का अंदाजा लगाने के लिए हैं कि उस लिपि का उपयोग कैसे किया जाए nonint। इसलिए, इस समस्या को हल करने के लिए मुझे क्या करने की आवश्यकता है:

locale=en_US.UTF-8
layout=us
sudo raspi-config nonint do_change_locale $locale
sudo raspi-config nonint do_configure_keyboard $layout

चर वे मूल्य हैं जिन्हें मैंने शाप UI से चुना होगा। स्थानीय विकल्प फ़ाइल में पहला क्षेत्र है /usr/share/i18n/SUPPORTED। कीबोर्ड लेआउट विकल्प निर्देशिका के नाम हैं /usr/share/X11/xkb/symbols/। अमेरिका में होने के नाते, मैं उपयोग करता हूं en_US.UTF-8और us। YMMV


2
यदि आप रास्पबेरी पेस्ट के सेटअप को स्वचालित करने में रुचि रखते हैं, तो आपको गीथूब पर मेरी पाई-इनिट 2 परियोजना की जांच करनी चाहिए । यह लंबे समय से अनुरोध की गई सुविधा "बूट पर एक स्क्रिप्ट चलाएं (बिना सिर के)" प्रदान करता है।
ब्रूनो ब्रोंस्की

sudo raspi-config nonint do_audio %dऑडियो आउटपुट (0 = ऑटो, 1 = जैक, 2 = एचडीएमआई) चुनने के लिए भी है
गोलंबर

@ गोलिमार आपको वह कहाँ मिला? मूल rc_gui परियोजना गायब हो गई है और सबसे अच्छा कांटा मुझे मिल सकता है (उत्तर अपडेट किया गया) शामिल नहीं है do_audio। लेकिन यह वास्तव में एक समारोह में पाया जाता हैcurl -sL https://github.com/RPi-Distro/raspi-config/raw/master/raspi-config | grep -E '(do|get)_[a-zA-Z0-9_ ]+\(' | sort | uniq
ब्रूनो ब्रोंस्की

यहाँ: gist.github.com/damoclark/ab3d700aafa140efb97e510650d9b1be , लेकिन अपने आदेश उन सभी को खोजने के लिए बहुत अच्छा है, धन्यवाद
Golimar

3

सभी raspi-configकुछ कॉन्फ़िगरेशन फ़ाइलों को संपादित कर रहा है, जिसे आप स्क्रिप्ट के साथ भी संपादित कर सकते हैं। sedइस तरह के संपादन कुशलतापूर्वक कैसे किए जा सकते हैं, यह देखने के लिए मैनुअल की जाँच करें ।

यदि आपके पास इस तरह से लागू करने के लिए बहुत सारे बदलाव हैं, तो मैं एक साफ आरपीआई छवि स्थापित करने के तरीके पर विचार करूंगा, जिस तरह से आप चाहते हैं, diffउसका पूरा फाइल सिस्टम * एक वेनिला छवि के खिलाफ, और फिर patchजब आप एक नया सेट करना चाहते हैं, तो बदलाव लागू करें । स्थापना।

अंत में, इस तरह के उपकरणों पर एक नज़र डालें etckeeper- वे विशेष रूप से कॉन्फ़िगरेशन परिवर्तनों में हेरफेर करने के लिए डिज़ाइन किए गए हैं और सूक्ष्म बदलावों को ट्रैक करने में सक्षम हैं diff, जैसे कि अनुमतियाँ। ध्यान दें कि इसके नाम के विपरीत, के etckeeperलिए प्रतिबंधित नहीं है /etc, उदाहरण के लिए चल रहा etckeeper -d /boot init; etckeeper -d /boot commitहै फ़ाइलों का बैकअप बना देगा /boot

(*) स्पष्ट रूप से यह स्पष्ट नहीं है , इसलिए सभी गलतफहमियों को दूर करने के लिए, मेरा मतलब है कि आपको कुछ ऐसा चलाना चाहिए diff -r /etc /mnt/vanilla_root/etc > etc.diffऔर diff -r /boot /mnt/vanilla_boot > boot.diff, नहीं diff my.img vanilla.img


1

अपने पीसी में काम करने वाली पाई छवि की प्रतिलिपि बनाने के लिए dd (या समान) का उपयोग करें।

अपने पीसी से अपने पाई में कॉपी की गई छवि को कॉपी करने के लिए dd (या समान) का उपयोग करें।

आदमी डी.डी.


हाँ, बेशक छवि तरीका है लेकिन फिर मुझे अपडेट और सामान के साथ छवि को बनाए रखने की आवश्यकता होगी। (जब तक कि वहाँ के लिए एक सुंदर समाधान नहीं है ...)
8DH

3
@ 8DH, सेटिंग्स डाउनलोड करने का आपका सुझाव फिर अपलोड करने का मतलब है कि आपको अपडेट के साथ एक "छवि" भी बनाए रखनी है।
टिम होल्ट

0

मेरे पास अपनी इच्छाओं को स्थापित करने के लिए 1 एसडी-कार्ड 100% है जो मैं सभी नए प्रतिष्ठानों के लिए आधार के रूप में रखता हूं।

एक नया पाई सेट करते समय मैं सिर्फ उस एसडी-कार्ड को स्क्रैच से शुरू करने के बजाय क्लोन करता हूं।

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