Openwrt ürün yazılımını topluyoruz. OpenWRT'nin montajı için kısa talimatlar

Kısa bir süre önce D-Link DIR-320 yönlendiricimde bir OpenVPN sunucusu kurma konusunda kafam karışmıştı. Ancak OpenWRT ürün yazılımını yükledikten sonra yönlendiricinin 4 MB flash sürücüsünde OpenVPN'i yüklemek için yeterli alan kalmadığı ortaya çıktı. Bu durumdan çıkış yolu, Image Generator'ı kullanarak kendi donanım yazılımı sürümümüzü oluşturmaktı; bu, aynı paket setiyle daha küçük aygıt yazılımı elde etmeyi mümkün kıldı.

Derlemenin açıklamasına devam etmeden önce OpenWRT kök dosya sisteminin nasıl yapılandırıldığı üzerinde biraz duracağım. Diğer iki dosya sistemini şeffaf bir şekilde birleştiren bir mini_fo dosya sistemidir: /rom üzerine monte edilmiş değişmez SquashFS ve /overlay üzerine monte edilmiş değiştirilebilir JFFS2. Firmware yüklendikten sonra oluşturulan veya değiştirilen tüm dosyalar /overlay'de bulunur. Orijinal olarak donanım yazılımında bulunan dosyaları silerken, mini_fo bunları basitçe silinmiş olarak işaretler, bu arada dosyalar /rom'da kalır ve yer kaplamaya devam eder. Hem SquashFS hem de JFFS2 sıkıştırmayı kullanır, ancak SquashFS daha iyi sıkıştırma sağlar, bu nedenle gerekli tüm paketleri aynı anda /rom'a koymak daha küçük bellenim ile sonuçlanır. Gereksiz paketleri ürün yazılımından hariç tutmak aynı zamanda flash sürücüde değerli alan tasarrufu sağlar.

Özel ürün yazılımı oluşturmak için ImageBuilder arşivini indirmeniz gerekir. Yönlendiricim için arşivin yalnızca i686 sürümü vardı, ancak 64-bit Gentoo'da bununla ilgili hiçbir sorun yoktu. Firmware ile ilgili her şey için ~/dir-320 dizinini oluşturdum ve içinde ImageBuilder arşivini açtığım, kullanılan OpenWRT firmware sürümüne karşılık gelen 10.03 dizini oluşturdum. Minimal görüntü şu komut kullanılarak oluşturulur: resim yap, bununla birlikte üç değişken de belirleyebilirsiniz:

  • PROFİL - ürün yazılımına dahil edilecek ek paketlerin listesini tanımlayan profil oluşturma. Profillerin listesi kullanılarak elde edilebilir. bilgi vermek. Bazı nedenlerden dolayı değişkenin herhangi bir etkisi olmadı ve yönlendiricim için gereken paketlerin listesinin manuel olarak belirtilmesi gerekiyordu.
  • PAKETLER - eklenecek veya kaldırılacak paketlerin listesi. Kaldırılacak paketlerin adlarının önünde eksi işareti bulunur. Montaj sırasında paket bağımlılıkları hesaplanır ve ürün yazılımına da eklenir.
  • DOSYALAR - ürün yazılımına eklenecek ek dosyaların bulunduğu dizinin yolu.
Yeniden kullanım kolaylığı için make_image.sh adlı bir komut dosyası oluşturdum. resim yap ihtiyacım olan değişken değerlerle:
#!/bin/bash make image PROFILE = "Broadcom-b43" PACKAGES = "kmod-b43 kmod-b43legacy -wpad-mini wpad ip iptables-mod-conntrack-extra ntpclient miniupnpd openvpn ddns-scripts nano" FILES = "dosyalar/ "
Dosyalarınızı ürün yazılımı görüntüsüne ekleme yeteneğinin çok kullanışlı olduğu ortaya çıktı. Tüm yeni ve değiştirilmiş dosyaların /overlay içinde olmasından yararlanarak, bu tür dosyaları cihazdan çıkarmak için bir backup.sh betiği yazdım:
#!/bin/bash DATE=`date +%Y-%m-%dT%H:%M:%S` BACKUP="backup-$DATE.tar.gz" ROUTER=172.22.222.1 BASEDIR=`dirname $0 ` FILELIST="etc/" ssh root@$ROUTER tar -czf /tmp/$BACKUP -C /overlay -X /etc/backup_exclude $FILELIST scp root@$ROUTER:/tmp/$BACKUP $BASEDIR/backup/$BACKUP
Dosyalar META_*/overlay içindekiler mini_fo dosya sistemindeki hizmet dosyalarıdır ve hariç tutulmaları gerekir. Meşgul kutudaki dosyaları hariç tutmak için yerleşik tar arşivleyici yalnızca -X seçeneğini desteklediğinden, yönlendiricide aşağıdaki içeriklere sahip bir /etc/backup_exclude dosyası oluşturmanız gerekir:
META_*
Komut dosyasıyla aynı dizinde arşivlerin kaydedileceği bir yedekleme alt dizini oluşturun.

Yeni ve değiştirilen dosyalar, FILES değişkeninin referans verdiği dizine alt dizin yapısı korunarak yerleştirilir. make_image.sh betiğini çalıştırıyoruz ve bin dizininde gerekli tüm yazılımlarla birlikte önceden yapılandırılmış ürün yazılımını alıyoruz.

Yazarın eylemlerini tekrarlama girişimlerinin, ekipmanın garanti kaybına ve hatta arızalanmasına yol açabileceğini hatırlatırız. Materyal yalnızca bilgilendirme amaçlı sağlanmıştır. Aşağıda anlatılan adımları tekrarlayacaksanız, makaleyi en az bir kez dikkatlice sonuna kadar okumanızı önemle tavsiye ederiz. 3DNews editörleri olası sonuçlardan dolayı herhangi bir sorumluluk kabul etmez.

Kendi alternatif ürün yazılımı sürümünüzü oluşturmak, yalnızca mevcut düzeneklerin işlevselliğinden memnun olmadığınızda faydalıdır - gerekli bileşenler eksik ve bunların yerine tamamen gereksiz bir şey var. Aynı zamanda, yönlendiricideki bellek miktarı nispeten küçüktür ve harici bir sürücüye ek yazılım yüklemek her zaman mümkün değildir. Prensip olarak, kendi ürün yazılımınızı oluşturmanın karmaşık bir tarafı yoktur. OpenWRT için, mevcut bir derlemeye yazılım paketlerini kaldırabilen veya ekleyebilen bir Image Generator yardımcı programı vardır. Bunu kullanabilir veya diğer tarafa gidebilirsiniz - ürün yazılımınızı blackjack ile derleyin ve... işte fikri anladınız. Sürecin genel bir açıklamasını proje wiki'sinde bulabilirsiniz.

Bu nedenle, Linux/*BSD/Mac OS yüklü bir bilgisayara, yaklaşık beş gigabayt boş sabit disk alanına ve biraz sabra ihtiyacımız var. Bu durumda derleme işlemi gereksiz yere gecikebileceğinden, bellenimin uygun bir işletim sistemine sahip bir sanal makinede derlenmesi kesinlikle önerilmez. Örnek olarak Ubuntu 11.10'da çalışmaya bakalım. İlk adım, derleme işlemi sırasında gerekli olacak ek yardımcı programları ve kitaplıkları yüklemektir. Diğer işletim sistemleri ve dağıtımlar için gerekli yazılımların listesi görüntülenebilir. Bizim durumumuzda gerekli olan minimum set böyle bir komutla belirlenir.

Sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk esnek yorgan git-core mkisofs

Artık ürün yazılımının kaynak kodunun, ayarlarının, hazır görüntülerin vb. kaydedileceği bir çalışma klasörü oluşturmanız gerekiyor. Bu dizine giden yolda boşluk olmamalıdır. Dizini oluşturduktan sonra OpenWRT kaynak kodlarını dizine indirin.

Mkdir ~/OpenWRT cd OpenWRT

Burada iki seçenek var - ya iyi bir şekilde test edilmiş ve belirli bir dereceye kadar güvenilir olan kararlı sürümü kullanın ya da birçok yeni özelliğe sahip olan ancak aynı zamanda sıfır olmayan bir ürün yazılımı çökme olasılığı elde eden geliştiricilere yönelik sürümü kullanın. birdenbire. Mevcut sürüme Backfire adı veriliyor ve test sürümü her zaman bagajda bulunuyor. Kaynakları SVN deposundan indirmek için aşağıdaki komutlardan birini yürütün ve uygun klasöre gidin.

Svn co svn://svn.openwrt.org/openwrt/trunk/ cd hattı

Svn co svn://svn.openwrt.org/openwrt/branches/backfire cd backfire

feeds.conf.default dosyası, ek yazılım paketlerine sahip depoların bir listesini içerir. Gerekirse düzenleyin. Listedeki öğelerin açıklamasını kaldırın (satırın başındaki # işaretini kaldırın) veya bazı belirli yazılımlar için üçüncü taraf yayın adresleri ekleyin. En azından standart paket setine ve LuCI web arayüzüne ihtiyacımız olacak (başka bir tane seçebilir veya varsayılan ayarları bırakabilirsiniz), böylece bu dosyaya hiç girmenize gerek kalmaz, her şeyi varsayılan olarak bırakırsınız ve Paket listelerini hemen güncelleyin.

Nano ./feeds.conf.default ./scripts/feeds güncellemesi -a

Şimdi işin eğlenceli kısmına geçelim; aygıt yazılımını bileşenlerle doldurma. Her şeyden önce, test yapısı için, yönlendiriciyi konsoldan bir kez daha yapılandırmamak için LuCI web arayüzünü kuracağız. Geri kalan programlar, arama parametresi ve ardından gelen anahtar kelimeyle aynı komut dosyasıyla aranır. Çıktı, kısa bir açıklamayla birlikte paket adlarını içerecektir. Kurulum için aynı yardımcı programı install parametresiyle birlikte kullanın. Tüm bağımlılıklar otomatik olarak çözülecek ve kullanıcı tarafından seçilen bileşen gerektiriyorsa eksik paketler de yüklenecek.

./scripts/feeds install -a -p luci ./scripts/feeds arama anahtar kelimesi./scripts/feeds install package_name

Bazı programlar için yapılandırma dosyaları oluşturmak isteyebilirsiniz veya buna ihtiyaç duyabilirsiniz. Bunu yapmak için bunları kaynak klasörde oluşturulması gereken /files/etc/config dizinine yerleştirin. Genel olarak, /files dizinindeki tüm dosyalar ürün yazılımına dahil edilecektir. Bundan sonra doğrudan montaja geçebilirsiniz. Aşağıdaki komutu konsolda çalıştıralım.

Menü yapılandırması yap

Burada Hedef Sistem (Enter) öğesine gidip ürün yazılımının derleneceği platformu seçiyoruz. Modelinizi uyumlu cihazlar listesinde bulun ve ne tür donanıma sahip olduğunu görün. Başlangıç ​​olarak, "kediler üzerinde pratik yapmanız", yani gerekli paket setiyle bir x86 yapısı oluşturmanız (bunun tüm paketler için mümkün olmayacağını unutmayın) ve ardından bunu sanal bir makinede çalıştırmanız önerilir. Bu arada ana menüye (Esc) gidin ve yeni konfigürasyonu kaydetmeyi unutmadan Çıkış'a basın. Ürün yazılımının temel ayarlarını almak için bir komut daha çalıştırın.

Defconfig yap menuconfig yap

Ana menüye dönüyoruz ve yönlendiricinizi Hedef Profilde arıyoruz. Lütfen bazı modellerde donanımın sürümden sürüme önemli ölçüde farklılık gösterebileceğini unutmayın. Hiçbir şeyi karıştırmamaya çalışın, aksi takdirde en kötü durumda cihaz yerine bir "tuğla" alırsınız. Eğer x86 düzeneğini test etmeye karar verirseniz, Hedef Görüntüler'deki ramdisk ve iso kutularını kontrol edin; çıktı, önyüklenebilir bir iso görüntüsü olacaktır.



Şimdi en sıkıcı kısım geliyor; gerekli bileşenlerin manuel olarak seçilmesi. Önceden kurulmuş paketler, ayarların hemen hemen tüm bölümlerini gözden geçirmeniz gereken montajın kendisine dahil edilmelidir. Bir bileşeni yüklemek için bileşene gidin ve onu seçmek için Ara Çubuğu'na basın. *, çekirdeğe "yerleşik" olacağı anlamına gelir ve M, ayrı bir yüklenebilir modülün oluşturulacağını belirtir. Bazı durumlarda bir bileşenin etkinleştirilmesi, onunla ilişkili ek ayarlara erişim sağlar.


Temel sistem ve Kitaplıklar bölümleri temel programları ve kitaplıkları içerir. Ağ ve IPv6, ağ üzerinde çalışmaya ilişkin her şeyi içerir - Bittorrent ve VPN istemcileri, çeşitli sunucular, yardımcı yardımcı programlar ve çok daha fazlası.


LuCI bölümünde, x86 yapısı için örnek olarak seçildiğinden web arayüzü parametreleri yapılandırılır. Öncelikle Koleksiyonlara dahil edilmesi gerekir ve Modüllerde yönetici çekirdeği veya yönetici dolu seçeneğini seçin. Uygulamalar alt bölümü, belirli yönlendirici parametrelerini yapılandırmak için modüller içerir. Ayrıca yerelleştirmeleri (Çeviriler), ağ arayüzü ayarları desteğini (Protokoller) ve temel kitaplıkları (Kütüphaneler) yüklemeniz gerekir.


Çekirdek modülleri bölümü temel olarak donanım, dosya sistemleri, çeşitli alt sistemler vb. için sürücüleri içerir. Burada alt bölümleri gözden geçirip örneğin NTFS desteğini etkinleştirmek de faydalıdır. Ne yazık ki, ürün yazılımı bileşenlerini yapılandırırken uygulanacak evrensel bir eylem kılavuzu yoktur. Ek yardımcı programlar ve kitaplıklar yükleyebilirsiniz, ancak yönlendiricideki küçük depolama kapasitesini unutmayın. Ancak varsayılan olarak etkinleştirilmiş bir şeyi silerken dikkatli olmanız gerekir. H'ye basarak veya daha iyisi Google'a basarak bileşen hakkında en azından kısa bir referansa göz atın.

Gerekli tüm modülleri ve bileşenleri seçtikten sonra konfigürasyonu kaydetmeniz gerekir. Oluşturmadan hemen önce eksik yardımcı programları veya kitaplıkları gösterecek başka bir komutu çalıştırmak yararlı olacaktır. Bunları apt-get install kullanarak yüklemeniz veya bunları içeren paketleri aramanız ve bunları da yüklemeniz gerekecektir.

Ön koşul yap

Derleme süreci çok basit bir komutla başlatılır:

Ürün yazılımını oluşturmak oldukça uzun zaman alır. İçine ne kadar çok "doldurursanız", o kadar uzun süre beklemek zorunda kalacaksınız. Çok çekirdekli işlemci sahipleri, make komutuna -j parametresini ekleyerek durumlarını biraz daha kolaylaştırabilirler. X, Nerede X=çekirdek sayısı+1. AMD Phenom II X6 CPU'lu bir test makinesinde, küçük eklemelerle birlikte temel x86 aygıt yazılımı, yaklaşık 10-15 dakika içinde birkaç iş parçacığı halinde derlendi. Ancak bazen birden fazla işlemci çekirdeğinin kullanılması montaj sırasında hataya yol açabilir.

-j 7 yap

Bitmiş ürün yazılımı dosyaları (trx, bin, iso ve diğerleri) bin klasöründe bulunacaktır. Ürün yazılımını yükleme işlemi yönlendirici modeline bağlıdır; uyumluluk listesinde ve wiki'de bilgi arayın. Birçok model için aynı anda iki dosya oluşturulur: fabrika ve yükseltme. Birincisi standart yazılımı değiştirmek için gereklidir, ikincisi ise önceden kurulmuş bir OpenWRT'yi güncellemek için gereklidir. Bir test x86 derlemesi oluşturduysanız, işlevselliği bir sanal makinede kontrol edilebilir. VirtualBox bunun için oldukça uygundur. Yeni bir VM oluşturun, işletim sistemi tipi Linux 2.6'yı seçin, HDD oluşturmayın. Önyüklenebilir bir CD olarak, img uzantısının iso olarak değiştirilmesi gereken openwrt-x86-generic-rootfs-iso.img görüntüsünü kullanın. İlk ağ bağdaştırıcısını Dahili Ağ moduna, ikincisini ise NAT veya Köprü moduna geçirin.

İlk önce sanal ağ arayüzünü “Dahili Ağ” moduna geçirerek ikinci VM içerisinde bazı Canlı dağıtımları çalıştırabilirsiniz. Örneğin Ubuntu veya birçok WinPE çeşidinden biri. Bu makinenin DHCP yoluyla otomatik olarak bir IP adresi alması gerekir ve sözde yönlendiriciye web arayüzü veya telnet aracılığıyla bağlanabilirsiniz. Her şey olması gerektiği gibi çalıştıysa, belirli bir yönlendirici modeli için ürün yazılımını birleştirmeye başlayabilirsiniz.

Temiz svn güncellemesi yapın ./scripts/feeds update -a

Genel olarak şeytan, üzgünüm penguen, boyandığı kadar korkutucu değil. Ancak itiraf etmeliyim ki ortalama bir kullanıcı için bu o kadar da basit değil. Ne yazık ki, yukarıda da belirtildiği gibi, kendi donanım yazılımınızı oluşturmak için evrensel ve basit bir kılavuz yoktur. En genel adımları açıklamaya çalıştık, ancak tüm nüansları ve ayrıntıları kapsamak kesinlikle imkansızdır. Okuyucularımızı bir kez daha montaj sırasında daha dikkatli olmaya davet ediyoruz ve yanlış eylemlerin cihazın "ölümüne" ve bazen işlevselliğinin geri kazanılmasının zor olmasına yol açabileceği konusunda uyarıyoruz. İyi şanlar!

Yakın zamanda C(C) dilinde yazılmış programımı OpenWRT çalıştıran bir erişim noktasına kurmam gerekiyordu. Bu programın Windows için Cygwin'den GCC kullanarak nasıl oluşturulacağını zaten yazmıştım. OpenWRT'yi ve sağlanan tüm programları oluşturmak için Buildroot derleme sistemi ve ipkg paket sistemi kullanılır. OpenWrt Wiki ve diğer sitelerde yapılan birçok araştırmadan sonra güncel belgeleri bulamadım. Sonuç olarak, parça parça bilgi topladıktan sonra nihayet ipkg paketini programımla birleştirdim. Edinilen bilgileri kaybetmemek için bu makaleyi yazmaya karar verdim.

Kaynak kodlarının alınması

OpenWrt'ı ana daldan yapıyorum. Git'i kullanarak da alabilirsiniz:

git klon git://nbd.name/openwrt.git

Veya svn kullanarak:

svn co svn://svn.openwrt.org/openwrt/trunk/openwrt/

Paketli olanlar dahil diğer şubelerin nasıl alınacağı yazılmıştır.

Paketinizi eklemeye hazırlanıyor

Ortaya çıkan dizine git



Makaleyi beğendin mi? Arkadaşlarınızla paylaşın!