Raspbian raspi-config kurulumu nasıl otomatikleştirilebilir?


17

Kendimi tekrar tekrar raspi-config kullanarak raspbian ile tüm benim pi 'ler kurduk bulduk.

Raspi-config kullanarak yaptığım tüm ayarları, kurduğum her yeni pi'ye wget ile indirebileceğim yürütülebilir bir komut dosyasına çıkarmanın bir yolu var mı?

Aynı etkiye sahip benzer bir çözüm de takdir edilecektir. Sanırım rpi docker uygulamalarından birini deneyebilirsiniz ama bu şeyler ne kadar kanama kenarı olduğunu bulmak için istekli değilim.


1
Hangi yapılandırmayı yapmak istediğinize bağlıdır? raspi-config başka bir yolla değiştirebileceğiniz yapılandırma dosyalarını değiştirir (/boot/config.txt,/etc/module.conf ...)
mpromonet 22:05

1
/usr/binEğer yardımcı olursa, oldukça basit bir 1000 satır kabuk betiği . Yeni görüntülerle başlamasını devre dışı bırakmak istiyorsanız, /etc/init.d/apply_noobs_os_configve bağlantısını silin /etc/rc2.d.
goldilocks

Nasıl raspi-config tüm temel kurulum görevlerini tek bir yere yoğunlaştırdığı gibi, her görevi nasıl yapacağımı bilmeme gerek kalmadan, tüm ayarları tek bir dosyada belirtmeme izin veren basit bir DSL istiyorum. Bir tür docker gibi.
8DH

Neden sadece docker kullanmıyorsunuz?
Tim Holt

Evet neden olmasın? RPI için tercih edilen docker çözümü nedir?
8DH

Yanıtlar:


20

En azından bugünlerde, raspi-configetkileşimli olmayan modu desteklediği görülüyor:

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

bununla, interaktif komutla yapabileceğiniz her şeyi yapabilen kurulum komut dosyaları yazabilirsiniz ve tam olarak aynı şeyleri yapacaktır. Bununla birlikte, komut dosyasının kaynağından ilgili komutları ve bunların kullanımını bulmanız gerekecektir.


1
Bu harika!
8DH

SD kart hazırladığımda görüntüyü oraya koyabilir, komut dosyamı klasöre ekleyebilir ve pi başlatıldığında komut dosyasını çalıştırabilirim.
8DH

Bu yordamda kaçırdığım başka geliştirmeler var mı?
8DH

1
Farkında olduğum her şey bu - daha fazlası varsa, çok görünür bir şekilde belgelenmiyor. Senaryoya bakarken bunun üzerine tökezledim ve bu özelliği bulduktan sonra daha fazla bilgi aramadım.
Aptal Ucube

1
@ 8DH Bu yöntemle başa çıkamayacağınız bir şey var mı? (hala kişisel olarak sizin için geçerliyse)
Silly Freak

19

Bu hala hiçbir yerde belgelenmemiştir, ancak rc_gui aracı (tam masaüstünü kuracak olsaydım raspi-config için bir grafik kullanıcı arabirimi olacağını varsayıyorum) raspi-config bash komut dosyasına komut satırı seçeneklerini kullanır. C kaynak kodundaki seçeneklerin tam listesini görebilirsiniz . GÜNCELLEME: Resmi repo bir sebepten dolayı ortadan kayboldu. Bu, bulabildiğim en aktif çatal .

/* 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"

GÜNCELLEME: Orada yerel ayar veya klavye ayarları hakkında hiçbir şey olmadığını fark ettim. Yani bu bana kaynağını incelememiz gerektiğini gösteriyor raspi-config. Neyse ki, bu komut dosyasını nonintetkili bir şekilde nasıl kullanacağınız hakkında bir fikir edinmek için yukarıda birçok örnek var . Yani, bu sorunu başsızca çözmek için yapmam gereken şey:

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

Değişkenler lanetler arayüzünden seçeceğim değerlerdir. Yerel ayarlar, dosyadaki ilk alandır /usr/share/i18n/SUPPORTED. Klavye düzeni seçenekleri içindeki dizin adlarıdır /usr/share/X11/xkb/symbols/. ABD'de olmak, kullanmak en_US.UTF-8ve us. YMMV


2
Raspberry Pis'in kurulumunu otomatikleştirmekle ilgileniyorsanız, github'daki pi-init2 projemi kontrol etmelisiniz . "Önyüklemede bir komut dosyası çalıştırma (başsız)" uzun süredir istenen özelliği sağlar.
Bruno Bronosky

sudo raspi-config nonint do_audio %dSes çıkışını seçmek için de var (0 = otomatik, 1 = jak, 2 = HDMI)
golimar

@ golimar bunu nereden buldun? Orijinal rc_gui projesi kayboldu ve bulabildiğim en iyi çatal (cevap güncellendi) içermiyor do_audio. Ama bu gerçekten de bulunan bir işlevcurl -sL https://github.com/RPi-Distro/raspi-config/raw/master/raspi-config | grep -E '(do|get)_[a-zA-Z0-9_ ]+\(' | sort | uniq
Bruno Bronosky

Burada: gist.github.com/damoclark/ab3d700aafa140efb97e510650d9b1be , ancak komutunuz hepsini bulmak harika, teşekkürler
golimar

3

Tek raspi-configyapmanız gereken bir komut dosyasıyla da düzenleyebileceğiniz birkaç yapılandırma dosyasını düzenlemek. Bu sedtür düzenlemelerin nasıl verimli bir şekilde yapılabileceğini görmek için kılavuza bakın.

Bu şekilde uygulamak için çok fazla değişikliğiniz varsa, temiz bir RPi görüntüsünü istediğiniz gibi diff, tam dosya sistemini * bir vanilya görüntüsüne ayarlamayı ve ardından patchyeni bir kurulum yapmanız gerektiğinde değişiklikleri uygulamayı düşünürüm. Kurulum.

Son olarak, etckeeperyapılandırma yapılandırmalarını değiştirmek için özel olarak tasarlanmış olan ve diffizinler gibi basit bir özlemin kaçırdığı ince değişiklikleri izleyebilen araçlara bir göz atın . Adının aksine, bu Not etckeeperile sınırlı değildir /etc, örneğin koşu etckeeper -d /boot init; etckeeper -d /boot commitdosyaların yedeğini yapacaktır /boot.

(*) Anlaşılan o değil bariz nedenle tüm yanlış anlamaları gidermek için, ben gibi bir şey çalıştırmak gerektiği anlamına diff -r /etc /mnt/vanilla_root/etc > etc.diffve diff -r /boot /mnt/vanilla_boot > boot.diffdeğil diff my.img vanilla.img.


1

Çalışan Pi görüntüsünü PC'nize kopyalamak için dd (veya benzeri) kullanın.

Kopyalanan görüntüyü PC'nizden Pi'nize kopyalamak için dd (veya benzeri) kullanın.

adam gg


Evet, tabii ki görüntü yolu var ama o zaman görüntüyü güncellemeler ve şeyler ile korumam gerekecekti. (bunun için de zarif bir çözüm yoksa ...)
8DH

3
@ 8DH, ayarları indirip yüklemeniz önerisi, güncellemelerle de bir "resim" tutmanız gerektiği anlamına gelir.
Tim Holt

0

Tüm yeni kurulumlar için temel olarak tuttuğum arzularıma göre% 100 ayarlanmış 1 SD kartım var.

Yeni bir Pi kurarken, sıfırdan başlamak yerine o SD kartı klonlayacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.