Programiranje

Pregled: Alpine Linux je narejen za Docker

Alpine Linux je minimalna distribucija Linuxa, prvotno zgrajena z Gentoojem, zdaj pa neodvisna in samostojna. V nekaterih pogledih je Alpine Linux konceptualno podoben NanoBSD, saj lahko tehnični uporabniki z Alpine Linux začnejo graditi sistem Linux s samo tistim, kar je potrebno za izpolnitev poslanstva, in nič več.

Alpine Linux, ki je običajno vgrajen v naprave ali naprave, je dobil veliko spodbudo, ko je bil kot osnovna slika Dockerja izbran za zamenjavo Ubuntuja. Glavni razlogi so bili varnost, zanesljivost in trdne razvojne prakse.

Alpine Linux ni podoben nobeni distribuciji Linuxa, s katero bi se srečal tipičen uporabnik namizja Linux. Začnimo z ogledom imenika / bin, kjer se hranijo sistemski pripomočki:

Upoštevajte, da so skoraj vsi binarni programi povezave do / bin / busybox. Busybox je skupek običajnih uporabniških in sistemskih pripomočkov, ki so zapakirani v en sam binarni program za hitrejši zagon, manjše potrebe po prostoru in na splošno boljšo varnost, za ceno zmanjšane funkcionalnosti. Številne redko uporabljene možnosti pripomočkov so bile odstranjene, vendar vse pogosto uporabljene možnosti ostajajo.

Poleg tega Alpine uporablja musl libc, minimalno implementacijo standardne knjižnice C / POSIX in razširitve, namenjene statičnemu povezovanju in vgrajenim aplikacijam v realnem času, pri čemer se izogiba GNU-napihnjenosti glibca. Statična povezava pomeni hitrejši zagon, vendar zavzame več prostora, zato je najbolj primerna za manjše sisteme. Z združitvijo vseh sistemskih binarnih datotek v en izvršljiv program in povezovanjem z musl dobi Alpine majhen in hiter nabor sistemskih binarnih datotek, kar zahteva vgrajeni sistem.

Končno je poudarek na varnosti. Sistem vključuje popravke jedra Grsec / PaX, ki jedru Linuxa zagotavljajo zbirko varnostnih funkcij, vključno z zaščito naslovnega prostora, izboljšanim revidiranjem ter nadzorom dostopa in nadzora procesov na podlagi vlog. V tipičnih distribucijah Linuxa bi morali uporabniki zbrati in zagnati lastno jedro, da bi dobili te popravke, čemur bi se verjetno izognili tudi najbolj napredni uporabniki.

Namestitev in konfiguracija Alpine Linux

Pri nameščanju Alpine Linuxa je marsikaj nenavadnega. To večinoma temelji na prvotni predvideni uporabi v vdelanih sistemih, kot so usmerjevalniki. Kot tak je Alpine zasnovan za zagon in zagon iz RAM-a, čeprav so na voljo hibridne možnosti. V skladu s tem poreklom Alpine Linux kot zagonski nalagalnik uporablja extlinux, različico Syslinuxa. Syslinux se običajno ne uporablja za zagon celotnih namestitev Linuxa, ker Linux običajno ni nameščen v datotečnih sistemih FAT. Namesto tega se Syslinux pogosto uporablja za zagonske ali reševalne diskete, žive USB-je in druge lahke zagonske sisteme. Alpine uporablja dele projekta Syslinux, da omogoča zagon s CD-ROM-ov, in extlinux za zagon iz datotečnih sistemov Linux ali datotečnih sistemov FAT za naprave USB. Datotečni sistemi FAT imajo nekatere omejitve, kot sta velikost datotek in dolžina imen datotek.

Alpine podpira tri načine namestitve: brez diska, »data« in »sys«. Pri namestitvi podatkov se OS naloži v RAM iz medijev, ki so samo za branje, vendar namesti bralno / pisalne particije za shranjevanje podatkov. To bi lahko uporabili na primer, če usmerjevalnik, ki temelji na Alpineu, shranjuje dnevnike vdorov ali dostopa na disk. Kopiranje dnevnikov v RAM bi bilo izguba dragocenega vira. Način brez diska je podoben, vendar je particija za branje / pisanje običajno manjša in se uporablja za shranjevanje podrobnosti o konfiguraciji OS. Sys je tradicionalni način namestitve, ki temelji na disku.

Pri namestitvi v brezdiskovnem ali podatkovnem načinu se sistem Alpine Local Backup uporablja za shranjevanje konfiguracijskih datotek. To se naredi z lbu (lokalni pripomoček za varnostno kopiranje), ki sledi datotekam, ki so se spremenile v imeniku / etc, in shrani te spremembe v datotekah .apkovl "overlay" (arhivi tar-gzip). Z lbu lahko skrbniki na primer primerjajo, združujejo ali povrnejo prejšnje konfiguracije.

Začel sem s poskusom namestitve brez diska, ker sem hotel zagnati Alpine, kot je bil prvotno predviden, kot OS za naprave. Na žalost sem pri namestitvi VMware naletel na dolgotrajno napako (2015), ki ni bila popravljena niti dokumentacija ni posodobljena. Zdi se, da slika navidezne diskete v času zagona ni nameščena. To pomeni, da se spremembe konfiguracije izgubijo ob vsakem ponovnem zagonu.

Končno sem se zatekel k namestitvi sys, ki je šla čisto v redu. Najprej je treba to opaziti nič, niti SSH ni privzeto nameščen. Če gradimo vgrajene sisteme, je to verjetno dobro. Začetniki Linuxa bi se morali pripraviti na strmo učno krivuljo. Potem ko sem prebral nekaj o upravitelju paketov Alpine (APK), sem za začetek namestil minimalni nabor orodij: Sudo, SSH in spletno orodje za upravljanje grafičnega sistema ACF.

Administracija sistema Alpine Linux

Medtem ko ima večina sistemov Linux grafično orodje za upravljanje sistema, Alpine za nastavitev uporablja lupinske skripte. Uporabil sem krovni skript, setup-alpine, za konfiguriranje vseh osnov, kot so mreženje, ime gostitelja, diski, časovni pas itd. Čeprav setup-alpine zadostuje za izvedljiv sistem, bo vse naprednejše zahtevalo urejanje sistemskih konfiguracijskih datotek. neposredno in z uporabo lbu da jih shranite na zapisljive medije. Upoštevajte, da je namestitveni program tudi setup-alpine, zato lahko navedete ime diska, ki bo OS zapisal v medij in pozval k zapisljivi particiji za imenika / etc in / var.

Razvoj in distribucija programske opreme je tudi v Alpine drugačna. Delno je to posledica predvidene uporabe v vdelanih sistemih ali kot osnovne slike za vsebnike, pa tudi zato, ker so avtorji menili, da obstoječi sistemi za upravljanje paketov ne bi dobro delovali v sistemu, ki se običajno izvaja iz RAM-a. Alpine Package Manager (APK) izpolnjuje vse te zahteve z nizkimi režijskimi stroški in hitrim časom namestitve. Vendar bi si želel, da bi prekrili API, ki je bolj standarden. Imamo že dovolj API-jev za upravljanje paketov in nekaj je treba povedati glede združljivosti. APK se uporablja za konfiguriranje vsebnikov ali samostojnih sistemov.

Dostava paketov poteka prek drevesa vrat, ki me spominja na zbirko vrat FreeBSD. Namesto da bi ga vodil dovršen makefile sistem, uporablja še en izum Alpine Linux, abuild. Skladišče aports zrcali drevo vrat po vsem svetu in apk dodaj ... je vsekakor veliko hitrejši od drugih sistemov za upravljanje paketov.

Druga stvar, ki jo je treba opaziti pri Alpine, je uporaba OpenRC za sistem init. Zdaj je eden od ducata začetnih sistemov za Linux odprl OpenRC v Gentoo-u (tako kot Alpine). Funkcionalno nič ne manjka, vendar se bodite pripravljeni naučiti novega sistema nivojev izvajanja in ukazov init.

Na srečo lahko večino vsakodnevnega upravljanja opravimo prek spletnega okvira za konfiguracijo Alp (ACF), čeprav delo z ACF ni bilo povsem gladko. Rednega uporabnika, ki sem ga dodal zase, ni zaznal adduser, na primer. GUI ACF je zelo podoben spletnemu vmesniku vašega tipičnega usmerjevalnika, ki temelji na Linuxu:

Za iskanje in namestitev ACF potrebuje tudi nekaj kopanja. Običajni uporabnik sistema ne bi odkril, če ni pozoren in tudi takrat ni navodil za namestitev.

Shranjevanje in povezovanje v omrežje Alpine Linux

Alpine podpira več možnosti shranjevanja, ki presegajo samo RAM, s konfiguracijo, shranjeno na mediju, in bliskovne kartice. Vendar pa je dokumentacija ali bolje rečeno pomanjkanje le-te otežila razumevanje shranjevanja. Na primer, želel sem zapisati ISO po meri z aplikacijo, ki ni na voljo v aports, verjetno dovolj pogost pojav. Dokumentacija za to je bila slepa ulica:

Štiri leta in pol se zdi dolgo čakati. Po pravici povedano skladiščenje nikoli ni bilo velik del alpske enačbe, saj se je osredotočalo na vdelane aplikacije, zato ni presenetljivo, da bi moralo biti to šibko področje. Na večini področij, ki se pričakujejo od distribucije Linuxa, kot so LVM, iSCSI in RAID, potekajo dela, vendar se pripravite, da boste porabili precej časa, ko boste poskušali razumeti dokumentacijo, ali branje izvorne kode, da vse ugotovimo.  

Povezovanje z Alpineom je povsem drugačna zgodba kot shranjevanje. Dokumentacija za mreženje je bolje napisana in bolj popolna ter pogosto vključuje najboljše prakse za vzpostavitev učinkovitih omrežij. Podprti so IP4, IP6, povezovanje, VLAN, povezovanje in skoraj vse želene nastavitve omrežja. Našli boste celo navodila za nastavitev satelitskih internetnih povezav!

Konfiguracijo lahko izvedemo s tradicionalnimi orodji, kot sta ifconfig in route, ali nekaterimi novejšimi paketi, kot je iproute2. Omeniti velja zanimiv podprojekt Alpine Wall, orodje za konfiguracijo požarnega zidu Linux. Podprta je celo PPP prek serijskih linij, kar je v današnjem času nekoliko presenetljivo.

Veliko sem se naučil ob branju te dokumentacije in odkril nekaj namigov za konfiguracijo, ki jih prej nisem poznal, pa tudi nekaj doslej neznanih pripomočkov za mreženje. Ta del dokumentacije je vreden zaznamkov kot hitrih napotkov za mreženje, tudi če ne uporabljate Alpine Linuxa.

Nadgradnje in nadgradnje Alpine Linuxa

Alpine Linux izdajni inženiring ni niti približno tako strog ali formalen kot zreli sistemi, kot je FreeBSD, vendar zajema osnove. In je zelo primeren za Alpine-jeve primarne primere gostovanja in naprav Docker.

V bistvu obstajata dva toka, obrobni in stabilni. Edge je tekoča veja za izdajo, posnetek povsod, kjer je razvoj, vsakih šest mesecev. Paketi se premikajo po robu in, ko so pripravljeni, se promovirajo v hlev / skupnost, kjer jih šest mesecev podpira skupnost. Paketi, ki to preživijo in se še naprej razvijajo, sčasoma postanejo stabilni / glavni, kjer jih podpirajo dve leti.

Pri nadgradnji z veje 2.x na 3.x je treba biti nekoliko previden zaradi spremembe knjižnic C (iz uClibc v musl). Če niste previdni, lahko sistem odpove na polovici nadgradnje. Nadgradnja paketov vzdolž vrstice 3.x je preprostejša, čeprav še vedno ročni postopek, ki ga večinoma vodijo skripti. Trik za razumevanje postopka nadgradnje je, da dobite pravilno skladišče APK (skupnost, rob ali glavno), počistite predpomnilnik in nato APK dovolite, da nadgradi vse pakete z nadgradnja apk.

Nadgradnja jedra je prav tako preprosta in uporablja skript, ki ga je mogoče zagnati, da v zagonski medij zapiše novo jedro in zasedeno polje.

Na splošno v alpskem sistemu ni preveč gibljivih delov, zato ko je arhitektura razumljena, ugotovitev nadgradnje ni težka.

Kratek pregled Alpine Linux

Alpine Linux je odlična izbira za vsak omrežno usmerjen in enonamenski sistem. Zaznavanje vdorov, nadzor omrežja in IP telefonija so primeri dobrih aplikacij za Alpine Linux. In to je naravna izbira za posode. Aplikacije, ki močno uporabljajo disk, je treba skrbno preizkusiti. Uporabniki se morajo pripraviti, da bodo nekaj časa sodelovali v skupnosti in zavihali rokave, da si bodo umazali roke. Potrebni bodo poskusi in napake.

$config[zx-auto] not found$config[zx-overlay] not found