FIXME This page is not fully translated, yet. Please help completing the translation.
(remove this paragraph once the translation is finished)

İmaj Oluşturucuyu Kullanmak

Bunları da görün: İmaj Oluşturucu önyüzleri, Aletdizisini kullanmak, Hızlı imaj oluşturma kılavuzu

İmaj Oluşturucu (önceki adıyla İmaj Üreteci) kaynaktan derlemeden özel imajlar üretmeye uygun ön-derlenmiş ortamdır. Ön-derlenmiş paketleri indirip tek bir çakılabilir imajda birleştirir.

Böyle yapmak kullanışlıdır, eğer ki:

  • küçük çakım boyutuna daha çok paket sığdırmak istiryosan
  • geliştirme enstantanelerini takip etmek istiyorsan
  • cihazının 32MB veya daha RAM'i varsa ve opkg uygunca çalışmıyorsa
  • düzinelerce cihaza toplu-çakım yapmak istiyorsan ve özgül bellenip kurulumuna gereksinimin varsa

İmaj Oluşturucu imajları önceden oluşturulmuş paketler edindiklerinden, resmi imajlarlarla özdeş değillerdir. güncel/önemli değişiklikler yapıldığında, bu paketlerin yayılmalarında bir miktar gecikme olabilmektedir ve en iyisi paketlerin imajoluşturucu/değişiklik zamanından sonra yüklenmiş olduklarını denetlemektir.

  • İmaj Oluşturucu sadece 64-bit Linux'ta çalışır. Tabi ki bir WC veya VirtualBox gibi bir sanal makinada bir 64-bit Linux koşturabilirsiniz.
  • Imaj Oluşturucunun Oluşturma sistemi ile benzer öngereklilikleri vardır.

En genel dağıtımlardaki örnek bağlılıklar:

sudo pacman -S --needed base-devel ncurses zlib gawk git gettext \
openssl libxslt wget unzip python
sudo dnf install git gawk gettext ncurses-devel zlib-devel \
openssl-devel libxslt wget which @c-development @development-tools \
@development-libs zlib-static which python3
sudo apt install build-essential libncurses5-dev libncursesw5-dev \
zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip python

İmaj Oluşturucuyu barındıran bir arşif indirebilirsin, olağanca cihazın için bellenim imajını bulduğun indirme sayfasında konumlandırılmıştır.

Örneğin, bu ath/79/generic cihazlar için tüm bellenim imajlarını indirebileceğin sayfadır: https://downloads.openwrt.org/snapshots/targets/ath79/generic/ ve içinde imaj oluşturucuyla bir openwrt-imagebuilder-ath79-generic.Linux-x86_64.tar.xz arşivi bulacaksın. Bununla birlikte, bu her zaman oluşturma sistemince yaratılır çünkü imaj dosyasını yaratmak için gereklidir. Eğer “Build the OpenWrt Image Builder” seçeneği kullanılabilir ise, imaj oluşturucu bellenim imajlarını bulacağın aynı klasörde üretilir (source/bin/targets/xxx) ve derleme sırasında edindiğin paketlerle daha çok imaj yaratmak için onu kullanabilirsin.

Tüm işlemler root harici bir kullanıcı hesabıyla gerçekleştirilmeli.

Arşivi aç ve çalışma dizinini değiştir:

tar -J -x -f openwrt-imagebuilder-*.tar.xz
cd openwrt-imagebuilder-*/

İmaj oluşturma takip eden değişkenlerle özelleştirilebilir:

Değişken Betimleme
PROFILE Oluşturulacak hedef imajı belirtir
PACKAGES İmaja gömmek için bir paket listesi
FILES Katılacak özel dosyaları içeren dizin
BIN_DIR İmajlar için başka çıktı dizini
EXTRA_IMAGE_NAME Bunu çıktı imaj dosyaadına ekle (temizlenmiş)
DISABLED_SERVICES /etc/init.d den etkisizleştirilecek servislerin listesi, örneğin, dnsmasq için dhcp

Ayrıntılı yardım almak için make help koştur.

PROFILE değişkeni oluşturulacak hedef imajı belirtir.

PROFILE="projil-adı"

Mevcut profillerin bir listesini edinmek için make info koştur.

PACKAGES değişkeni paketleri bellenim imajında içermeyi veya dışarmayı sağlar. Varsayılan olarak (boş PACKAGES değişkeniyle) İmaj Oluşturucu cihaz-özgül çekirdek ve sürücüler, uci, ssh, switch, firewall, ppp ve ipv6 desteğiyle küçümen bir imaj oluşturacaktır.

PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6"

Yukarıdakı örnek pkg1, pkg2, pkg3 paketlerini içerecek ve pkg4, pkg5, pkg6 paketlerini dışaracaktır, dışarlanan he paketten önceki “-” işaretine dikkat.

İhtiyacın olan paketlerin tüm bağlılıklarını bu listede listelemeye gereksinimin yok, İmaj Oluşturucu paket bağımlılıklarını kendiliğinden çözümlemek ve diğer gerekli paketleri yüklemek için opkg kullanır.

Halihazırda cihazında yüklü paketlerin listesi takip eden komut ile edinilebilir:

echo $(opkg list-installed | sed -e "s/\s.*$//")

Pek çok cihaz depolama alanınca sınırlıdır ve cihazın depolama alanına sığdirmak için çok fazla paket eklediğini oluşturma sisteminin sezeceğinin garantisi yoktur, ki bu yüklendiğinde cihazı önyüklenemez duruma getirebilir. Şüpheliysen, abartma. Cihaza en son yüklediğini kılavuz olarak kullan veya önce küçümen bir imaj oluştur, cihaza yükle ve ne eklemek istersen önce sına. bellenim alanı kurtarmak için gereksiz paketleri kaldırmayı değerlendir.

Ek olarak libubus20191227 veya benzeri ABI versiyonlu paketler imaj oluşturucuyla ilgili sorunlara yolaçabilir. Bunlar paket olarak sağlandığınde derleme hataları alabilirsin. Meselelerden kaçınmak için onları imaj oluşturucudan hariç bırakmalı ve doğru versiyonların paket bağlılıkları aracılığıyla yüklenmelerine izin vermelisin -strip-abi değiştirgesi normalleştirilmiş bir paket listesi ihracatı için kullanılabilir.

Eğer kullanmayı tercih ettiğin özel bir paket veya ipk var ise, bulunmuyorsa bir paketler dizini oluştur ve özel ipk'larını bu dizine yerleştir.

FILES değişkeni İmaj Oluşturucuyla oluşturulan imajlara dahil edilecek özel yapılandırma dosyalarına izin verir Bu özellikle, çakmadan önce şebeke yapılandırmasını varsayılandan değiştirmeye gereksinimin varsa, veya birçok cihaza toplu çakım yapacaksan kullanışlıdır.

FILES="dosyalar"

files dizini make komutunun verildiği, İmaj Oluşturucunun kök dizinine konumlandırılmalıdır, aksi takdirde mutlak/tam yol belirtilmelidir.

uci-varsayılanlarının kullanımı, sadece gerekli yapılandırmayı adım adım eklemek için şiddetle önerilir. Bu; versiyonlar arası değişiklik gösteren, otomatik oluşturulan ayarlarla çatışmaları en aza indirmeye yardım eder.

Bakınız: uci-default_example

Uygun profili, paketleri ve özel dosyaları seçtikten sonra, make image komutuna geç.

make image PROFILE="profile-name" PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" FILES="files"

make komutu bittikten sonra, oluşturulan imajlar, aynı derlenmiş gibi bin/device-architecture dizinine kaydedilir.

Oluşturulmuş imaj .bin/targets/<target>/generic altdizininde bulunacaktır veya ./build_dir/ içinde *-squashfs-sysupgrade.bin ve *-squashfs-factory.bin dosyalarına ara. (örn. /build_dir/target-mips_24kc_musl/linux-ar71xx_tiny/tmp/openwrt-18.06.2-ar71xx-tiny-tl-wr740n-v6-squashfs-factory.bin)

Geçici oluşturulmuş dosyaları ve oluşturulmuş imajları temizlemek için make clean komutunu kullan.

Takip eden örnek şunları gösterir:

  • Yapılandırma dosyaları dizinini oluşturma.
  • uci yapılandırma dosyalarını WL500GP yönlendiriciden files/etc/config dizinine aktarmak için scp kullanma.
  • Özel paketler ve uci yapılandırma dosyalarıyla bir WL500GP imajı oluşturma.
mkdir -p files/etc/config
scp root@192.168.1.1:/etc/config/network files/etc/config/
scp root@192.168.1.1:/etc/config/wireless files/etc/config/
scp root@192.168.1.1:/etc/config/firewall files/etc/config/
make image PROFILE="wl500gp" PACKAGES="nano openvpn -ppp -ppp-mod-pppoe" FILES="files"
  1. Herşeyi root harici kullanıcı olarak mı çalıştırdın?
  2. Çıktıyı kontrol et; paket sorunları var mı (çakışmalar, uygunsuz isimler)?
  3. Çıktı kaydını kontrol et; azami alanı aştın mı?
  4. Çıktı kaydını kontrol et; başka bariz hata var mı?
  5. Birkaç saat/gün bekle; kaynak paketler, özellikle master/snapshot dalında kararsız durumda olabilirler.
  6. Doğrula: işletim sisteminin desteklenip desteklenmediğini, öngereklilileri, dosyasistemini ve yol adlandırmalarını.

Aşağıdaki konular basit kullanımı aşar ve geliştiricilere ve ileri kullanıcılara yöneliktir.

Ayriyeten: ImageBuilder makefile

Ayrıntılı yardım alma:

# make help

Available Commands:
	help:	This help text
	info:	Show a list of available target profiles
	clean:	Remove images and temporary build files
	image:	Build an image (see below for more information).

Building images:
	By default 'make image' will create an image with the default
	target profile and package set. You can use the following parameters
	to change that:

	make image PROFILE="<profilename>" # override the default target profile
	make image PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
	make image FILES="<path>" # include extra files from <path>
	make image BIN_DIR="<path>" # alternative output directory for the images
	make image EXTRA_IMAGE_NAME="<string>" # Add this to the output image filename (sanitized)
	make image DISABLED_SERVICES="<svc1> [<svc2> [<svc3> ..]]" # Which services in /etc/init.d/ should be disabled
	make image ADD_LOCAL_KEY=1 # store locally generated signing key in built images

Print manifest:
	List "all" packages which get installed into the image.
	You can use the following parameters:

	make manifest PROFILE="<profilename>" # override the default target profile
	make manifest PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
	make manifest STRIP_ABI=1 # remove ABI version from printed package names

Mevcut profilleri listeleme:

# make info

Available Profiles:

Default:
    Default Profile
    Packages: kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
ai-br100:
    Aigale Ai-BR100
    Packages: kmod-usb2 kmod-usb-ohci
rp-n53:
    Asus RP-N53
    Packages:
rt-n14u:
    Asus RT-N14u
    Packages:
whr-1166d:
    Buffalo WHR-1166D
    Packages:
whr-300hp2:
    Buffalo WHR-300HP2
    Packages:
...

Oluşturma kökünü kendi İmaj Oluşturucunu yaratmak için kullanmak, ve içinde tüm paketleri içine katmak mümkün, böylece paketleri indirmeden imajları oluşturabilir.

İmaj Oluşturucu'yu oluşturmak için, çizgisel yapılandırmada “Build the OpenWrt Image Builder”'ı seç, ardından Global Build Setting → Select all packages by default'u seç ve kaydetip çık. Eğer derlenemeyen bakımsız paketlerle karşılaşırsan, çerkirdek ve temel bağlılıklardan değillerse oluşturma hatalarını yoksay.

make defconfig çağırma veya eski bir .config dosyası bırakma ... Select all packages by default diğer türlü seçilmeyecek paketleri [m] ile işaretleyecektir! make defconfig çoğu paket [n] ile, yani oluşturma! diye işaretler,

OpenWrt sayfalarından indirdiğin İmaj Oluşturucu varsayılan olmayan her paketi resmi depolardan indirmek üzere yapılandırılmıştır. Paket kaynakları, çıkartılan dizinde repositories.conf dosyasında yapılandırılmıştır. Kaynaklar opkg uyumlu yapı biçimiyle belirtilmiştir. Bu, ya resmi paket depolarıdır veya özel oluşturulmuş depolar olabilir.

openwrt-imagebuilder-18.06.0-rc2-ramips-mt7621.Linux-x86_64.tar.xz dosyasından örnek bir repositories.conf içeriği:

## Place your custom repositories here, they must match the architecture and version.
# src/gz %n http://downloads.openwrt.org/releases/18.06.0-rc2
# src custom file:///usr/src/openwrt/bin/ramips/packages
 
## Remote package repositories
src/gz openwrt_core http://downloads.openwrt.org/releases/18.06.0-rc2/targets/ramips/mt7621/packages
src/gz openwrt_base http://downloads.openwrt.org/releases/18.06.0-rc2/packages/mipsel_24kc/base
src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06.0-rc2/packages/mipsel_24kc/luci
src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06.0-rc2/packages/mipsel_24kc/packages
src/gz openwrt_routing http://downloads.openwrt.org/releases/18.06.0-rc2/packages/mipsel_24kc/routing
src/gz openwrt_telephony http://downloads.openwrt.org/releases/18.06.0-rc2/packages/mipsel_24kc/telephony
 
## This is the local package repository, do not remove!
src imagebuilder file:packages

Kaynaktan derlediğiniz bir İmaj Oluşturucudaki repositories.conf “Uzak paket depoları” bağlantılarından yoksun olacaktır.

Eğer özel bir yerel depo eklemek istiyor isen, src custom file:///usr/src/openwrt/bin/ramips/packages satırını kopyala ve paketlerini ve paket listelerini bulunduran dizini işaret edecek şekilde değiştir. Eğer yerel deponu kullanmayla ilgili “Signature check failed”(“imza sınama başarısız”) nedeniyle sorunların varsa repositories.conf'tan option check_signature satırını kaldır.

Eğer çevrimiçi özel depoların varsa, yerine src/gz reboot http://downloads.openwrt.org/snapshots satırını kopyalayıp değiştir.

NOT: var olan bir kaynaktan gelen paketleri geçersiz kılacaksan, yukarıdaki örneklerde gösterildiği gibi, özel kaynağını, geçersiz kılacağın paketleri barındıran kaynak satırının YUKARISINA yazmak zorundasın.

Ayrıcalıksız bir yönetici kullanıcısı yaratma ve root parolasını kilitleme. Sudo ile ayrıcalık yükseltmeyi yapılandırma. Dropbear için anahtar-temelli dorulamayı yapılandırma ve parolalı doğrulamayı geçersiz kılma.

mkdir -p files/etc/uci-defaults
cat << "EOF" > files/etc/uci-defaults/99-custom
USER_NAME="admin"
USER_GROUP="admin"
USER_SSHPUB="SSH_PUBLIC_KEY"
USER_SHELL="/bin/ash"
SUDO_USER="root"
SUDO_GROUP="sudo"
SUDO_GID="27"
uci set dropbear.@dropbear[0].PasswordAuth="0"
uci set dropbear.@dropbear[0].RootPasswordAuth="0"
uci commit dropbear
/etc/init.d/dropbear restart
passwd -l "${SUDO_USER}"
groupadd -r -g "${SUDO_GID}" "${SUDO_GROUP}"
touch /etc/environment
cat << EOI > /etc/sudoers.d/00-custom
%${SUDO_GROUP} ALL=(ALL) ALL
EOI
groupadd "${USER_GROUP}"
useradd -m -g "${USER_GROUP}" -G "${SUDO_GROUP}" \
-s "${USER_SHELL}" "${USER_NAME}"
passwd -d "${USER_NAME}"
USER_HOME="$(eval echo ~"${USER_NAME}")"
mkdir -p "${USER_HOME}"/.ssh
cat << EOI > "${USER_HOME}"/.ssh/authorized_keys
${USER_SSHPUB}
EOI
chown -R "${USER_NAME}:${USER_GROUP}" "${USER_HOME}"
chmod -R go= "${USER_HOME}"
EOF
make image FILES="files" PACKAGES="nano shadow sudo"

Aşağıdakı örnekler versiyon bağımlı / kalıt bilgi içeriyor olabilir ve bilgilendirme amaçlıdır. Oldukça alt düzeydirler haliyle iyi seviye ustalık ve genel olarak İmaj Oluşturucu / OpenWrt aşınalığı beklerler.

İmaj oluşturma profil adlarına bağlıdır. Eğer imaj-oluşturma 'Makefile'a uygun bir 'macro' eklemeden yeni bor profil eklerseniz, özel profili kullanırken uygun bellenim dosyası oluşturulmayacaktır. Profillerden, değiştirilmiş paket seçimini uygunca uygulamak için /tmp dizinini kaldır.

brcm47xx-for-Linux-i686 için ön-derlenmiş paketler için profillerin konumu target/linux/brcm47xx/profiles

Yeni bir profil eklemek için tüm gereken, dikkate değer şekilde, profiles dizinine yeni bir dosya eklemektir. Önceki sürümler için durum bu iken, görünüşe göre 17.01 için .targetinfo'yu da düzenlemek gerekir.

İşte profiles/100-Broadcom-b43.mk profilinin görünümü:

define Profile/Broadcom-b43
	NAME:=Broadcom BCM43xx WiFi (default)
	PACKAGES:=kmod-b43 kmod-b43legacy
endef
 
define Profile/Broadcom-b43/Description
	Package set compatible with hardware using Broadcom BCM43xx cards
endef
$(eval $(call Profile,Broadcom-b43))

Alternatif olarak imaj oluşturucunun en üst seviye dizininde gizli .profile.mk dosyasını düzenle ve el ile çıktı imajına eklenmesi arzulanan paketlerin adlarını ekle. Bir “ls -a” çeşitli dizinlerdeki gizli dosyaları açığa çıkaracaktır.

Bu İmaj Oluşturucu için standart bir özellik değildir.

Dosya çıkarma gibi değişiklikleri imaj oluşturma seviyesinde uygulamadan önce sınaman veya bu tür bir mod girişiminden önce bir cihazı kurtarabilecek alt seviye araçlarının olması, cihazının takoz olması / ön yükelenememesiyle sonuçlanabileceğinden şiddetle önerilir.

Bunun Makefilea ek yapmayı gerektirdiğini dikkate al.

Bu eski Chaos Calmer dönemi koda dayanır... ve modern İmajOluşturuculara uygulanamaz ama kaynak olarak kullanışlı...

files_remove dosyasını tam dosyaadlarıyla yarat:

/lib/modules/3.10.49/ts_bm.ko
/lib/modules/3.10.49/nf_nat_ftp.ko
/lib/modules/3.10.49/nf_nat_irc.ko
/lib/modules/3.10.49/nf_nat_tftp.ko

Makefile yama:

 ifneq ($(USER_FILES),)
 	$(MAKE) copy_files
 endif
+
+ifneq ($(FILES_REMOVE),)
+	@echo
+	@echo Remove useless files
+
+	while read filename; do \
+	    rm -rfv "$(TARGET_DIR)$$filename"; \
+	done < $(FILES_REMOVE);
+endif
+
 	$(MAKE) package_postinst
 	$(MAKE) build_image

Bellenimi yeniden oluştur:

make image \
PROFILE="tlwr841" \
PACKAGES="igmpproxy ip iptraf kmod-ipt-nathelper-extra openvpn-polarssl tcpdump-mini -firewall -ip6tables -kmod-ip6tables -kmod-ipv6 -odhcp6c -ppp -ppp-mod-pppoe" \
FILES_REMOVE="files_remove"
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2022/01/14 21:07
  • by sorcun