Ohjelmointi

Katsaus: Alpine Linux on tehty Dockerille

Alpine Linux on minimaalinen Linux-jakelu, joka on alun perin rakennettu Gentoon kanssa, mutta nyt itsenäinen ja itsepalveleva. Joissakin suhteissa Alpine Linux on käsitteellisesti samanlainen kuin NanoBSD, koska tekniset käyttäjät voivat aloittaa Alpine Linuxin rakentamalla Linux-järjestelmän vain tehtävän suorittamiseen tarvittavalla tavalla, eikä millään muulla.

Tyypillisesti laitteisiin tai laitteisiin upotettuna Alpine Linux sai suuren vauhdin, kun se valittiin korvaamaan Ubuntu Dockerin peruskuvaksi. Turvallisuus, luotettavuus ja vankat kehityskäytännöt olivat tärkeimmät syyt.

Alpine Linux on toisin kuin mikään Linux-jakelu, jonka tyypillinen Linux-työpöydän käyttäjä on kohdannut. Aloitetaan katsomalla hakemisto / bin, jossa järjestelmän apuohjelmia säilytetään:

Huomaa, että melkein kaikki binäärit ovat linkkejä kansioon / bin / busybox. Busybox on joukko yleisiä käyttäjä- ja järjestelmäapuohjelmia, jotka on pakattu yhdeksi binaariksi nopeamman käynnistyksen, alhaisempien tilavaatimusten ja yleensä paremman turvallisuuden takaamiseksi pienentyneen toiminnallisuuden kustannuksella. Monet harvoin käytetyistä apuohjelmien vaihtoehdoista on poistettu, mutta kaikki yleisesti käytetyt vaihtoehdot ovat edelleen voimassa.

Tämän lisäksi Alpine käyttää musl libc -standardia, joka on minimaalinen C / POSIX-kirjaston ja laajennusten vähäinen toteutus, joka on suunniteltu staattisiin linkityksiin ja reaaliaikaisiin sulautettuihin sovelluksiin, välttäen glibc: n paisumista. Staattinen linkitys tarkoittaa nopeampaa käynnistystä, mutta vie enemmän tilaa, joten sopii parhaiten pienempiin järjestelmiin. Yhdistämällä kaikki järjestelmän binäärit yhdeksi suoritettavaksi tiedostoksi ja yhdistämällä ne musliin, Alpine saa pienen ja nopean järjestelmän binääritarjonnan, jota tarvitaan upotetussa järjestelmässä.

Lopuksi keskitytään turvallisuuteen. Järjestelmä sisältää Grsec / PaX-ytimen korjaustiedostot, jotka tarjoavat kokoelman Linux-ytimen suojausominaisuuksia, mukaan lukien osoitetilan suojauksen, parannetun valvonnan sekä roolipohjaisen pääsyn ja prosessin hallinnan. Tyypillisillä Linux-jakeluilla käyttäjien on koottava ja suoritettava oma ydin saadakseen nämä korjaustiedostot, mitä edes edistyneimmät käyttäjät todennäköisesti välttävät.

Alpine Linuxin asennus ja määritykset

Alpine Linuxin asennuksessa on paljon epätavallista. Tämä on pääosin juurtunut alkuperäiseen käyttötarkoitukseensa sulautetuissa järjestelmissä, kuten reitittimissä. Sellaisena Alpine on suunniteltu käynnistämään ja suorittamaan RAM-muistista, vaikka hybridivaihtoehtoja on saatavilla. Tämän alkuperän mukaisesti Alpine Linux käyttää käynnistyslataimena extlinuxia, Syslinux-muunnosta. Syslinuxia ei yleensä käytetä täydellisten Linux-asennusten käynnistämiseen, koska Linuxia ei normaalisti asenneta FAT-tiedostojärjestelmiin. Sen sijaan Syslinuxia käytetään usein käynnistys- tai pelastuslevykkeille, live-USB: ille ja muille kevyille käynnistysjärjestelmille. Alpine käyttää osia Syslinux-projektista käynnistämisen sallimiseksi CD-ROM-levyiltä ja käyttää extlinuxia käynnistykseen Linux- tai FAT-tiedostojärjestelmistä USB-laitteille. FAT-tiedostojärjestelmillä on joitain rajoituksia, kuten tiedostojen koko ja tiedostonimien pituus.

Alpine tukee kolmea asennustilaa: levytön, "data" ja "sys". Data-asennuksessa käyttöjärjestelmä ladataan RAM-muistiin vain luku -välineestä, mutta se kiinnittää luku- / kirjoitusosiot tietojen tallentamiseen. Tätä voidaan käyttää esimerkiksi, jos Alpine-pohjainen reititin varastoi tunkeutumis- tai pääsylokeja levylle. Lokien kopioiminen RAM-muistiin olisi arvokkaan resurssin tuhlausta. Levytön tila on samanlainen, mutta luku / kirjoitus-osio on yleensä pienempi ja sitä käytetään käyttöjärjestelmän kokoonpanotietojen tallentamiseen. Sys on perinteinen levypohjainen asennustila.

Asennettaessa levytöntä tai datatilaa Alpine Local Backup -järjestelmää käytetään määritystiedostojen tallentamiseen. Tämä tehdään lbu: lla (paikallinen varmuuskopiointiohjelma), joka seuraa tiedostoja, jotka ovat muuttuneet hakemistossa / etc, ja tallentaa muutokset .apkovl "overlay" -tiedostoihin (tar-gzip-arkistot). Lbu: n avulla järjestelmänvalvojat voivat esimerkiksi verrata, yhdistää tai palata aiempiin määrityksiin.

Aloitin yrittämällä levytöntä asennusta, koska halusin käyttää Alpineä alun perin tarkoitetulla tavalla laitteiden käyttöjärjestelmänä. Valitettavasti tapasin pitkäaikaisen (2015) virheen VMware-asennuksessa, jota ei ole korjattu eikä dokumentaatiota ole päivitetty. Näyttää siltä, ​​että virtuaalista levykettä ei asenneta käynnistyshetkellä. Tämä tarkoittaa, että kokoonpanomuutokset menetetään jokaisen uudelleenkäynnistyksen yhteydessä.

Olin vihdoin turvautunut sys-asennukseen, joka meni hienosti. Ensimmäinen asia on huomata ei mitään, ei edes SSH, on asennettu oletuksena. Sulautettujen järjestelmien rakentaminen on todennäköisesti hyvä asia. Linux-aloittelijoiden tulisi valmistautua jyrkkään oppimiskäyrään. Luettuani vähän Alpine Package Managerista (APK), asensin alkuun vain vähän työkaluja: Sudo, SSH ja verkkopohjainen graafinen järjestelmänhallintatyökalu ACF.

Alpine Linux -järjestelmän hallinta

Vaikka useimmissa Linux-järjestelmissä on graafinen järjestelmänhallintatyökalu, Alpine käyttää komentosarjoja asennukseen. Käytin sateenvarjon komentosarjaa setup-alpine kaikkien perusasioiden määrittämiseen, kuten verkko, isäntänimi, levyt, aikavyöhyke jne. Vaikka setup-alpine riittää toimivan järjestelmän saamiseksi, kaikki edistyneempi edellyttää järjestelmän kokoonpanotiedostojen muokkaamista suoraan ja käyttämällä lbu tallentaa ne kirjoitettavaan tietovälineeseen. Huomaa, että setup-alpine on myös asennusohjelma, joten levyn nimi voidaan antaa ja se kirjoittaa käyttöjärjestelmän mediaan ja pyytää / etc- ja / var-hakemistoille kirjoitettavaa osiota.

Ohjelmistojen kehittäminen ja jakelu on erilaista myös Alpine-sovelluksessa. Osittain tämä johtuu sen aiotusta käytöstä sulautetuissa järjestelmissä tai konttien peruskuvana, mutta myös siksi, että kirjoittajat kokivat, että olemassa olevat paketinhallintajärjestelmät eivät toimisi hyvin järjestelmässä, jota yleensä ajetaan RAM-muistista. Alpine Package Manager (APK) täyttää kaikki nämä vaatimukset, sillä alhaiset yleiskustannukset ja nopeat asennusajat. Toivon kuitenkin, että he olisivat kerrostaneet tavallisemman API: n. Meillä on jo tarpeeksi paketinhallinta-sovellusliittymiä, ja yhteensopivuudesta on jotain sanottavaa. APK: ta käytetään konttien tai erillisten järjestelmien määrittämiseen.

Pakettien toimittaminen tapahtuu porttipuun kautta, joka muistuttaa minua FreeBSD: n porttikokoelmasta. Sen sijaan, että sitä ohjaisi hienostunut makefile-järjestelmä, se käyttää toista Alpine Linux-keksintöä, abuildia. Aporttien arkisto heijastaa satamapuuta ympäri maailmaa ja apk lisää… on ehdottomasti paljon nopeampi kuin muut paketinhallintajärjestelmät.

Toinen Alpine-ohjelmassa huomioitava asia on OpenRC: n käyttö init-järjestelmässä. Yksi noin kymmenestä Linux-järjestelmistä nyt, OpenRC aloitti Gentoon (samoin kuin Alpine). Mikään ei puutu toiminnallisesti, mutta ole valmis oppimaan uuden ajotasojen ja init-komentojen järjestelmän.

Onneksi suuri osa päivittäisestä hallinnosta voidaan tehdä verkkopohjaisen Alpine Configuration Frameworkin (ACF) kautta, vaikka työskentely ACF: n kanssa ei ollut täysin sujuvaa. Se ei havainnut tavallista käyttäjää, jonka lisäsin itselleni lisää käyttäjä, esimerkiksi. ACF-käyttöliittymä näyttää paljon kuin tyypillisen Linux-pohjaisen reitittimen verkkoliitäntä:

ACF etsii ja asentaa myös jonkin verran kaivoa. Satunnainen käyttäjä ei olisi löytänyt järjestelmää ellei tarkkaavainen, eikä silloinkin ole asennusohjeita.

Alpine Linux -tallennus ja verkkoyhteydet

Alpine tukee useita tallennusvaihtoehtoja vain RAM-muistin ulkopuolella, kokoonpanolle tallennetaan tallennusvälineelle ja flash-korteille. Dokumentaatio tai pikemminkin sen puute vaikeutti tallennuksen ymmärtämistä. Halusin esimerkiksi polttaa mukautetun ISO-sovelluksen sovelluksella, jota ei ole saatavana aporteissa, todennäköisesti riittävän yleinen esiintyminen. Asiakirjat sen tekemiseksi olivat umpikuja:

Neljä ja puoli vuotta näyttää olevan pitkä aika odottaa. Ollaksemme oikeudenmukainen, varastointi ei koskaan ollut suuri osa Alppien yhtälöä, ja siinä keskityttiin sulautettuihin sovelluksiin, joten ei ole mikään yllätys, että tämän pitäisi olla heikko alue. Useimmilla Linux-distroilta odotettavissa olevilla alueilla, kuten LVM, iSCSI ja RAID, on meneillään työ, mutta valmistaudu käyttämään melko vähän aikaa yrittäen ymmärtää dokumentaatiota, tai lukemalla lähdekoodin selvittääksesi kaiken.  

Verkostoituminen Alpinen kanssa on aivan erilainen tarina kuin varastointi. Verkostoitumisen dokumentaatio on paremmin kirjoitettu ja täydellisempi, ja se sisältää usein parhaita käytäntöjä tehokkaiden verkkojen luomiseksi. IP4, IP6, sidonta, VLAN, silloitus ja melkein kaikki halutut verkkoasetukset ovat tuettuja. Löydät jopa ohjeet satelliitti-internet-yhteyksien luomiseen!

Määritykset voidaan tehdä perinteisillä työkaluilla, kuten ifconfig ja route, tai joillakin uudemmilla paketeilla, kuten iproute2. Mainitsemisen arvoinen on mielenkiintoinen aliprojekti nimeltä Alpine Wall, Linux-palomuurin määritystyökalu. Jopa sarjaliikenteen PPP: tä tuetaan, mikä on jonkin verran yllättävää nykypäivänä.

Olen oppinut paljon lukemaan tätä dokumentaatiota ja löytänyt useita kokoonpanovihjeitä, joita en tiennyt aiemmin, sekä joitain tähän mennessä tuntemattomia verkkoapuohjelmia. Tämä dokumentaation osa on kirjanmerkkien arvoinen pikaohje verkko-ohjeiden luomiseen, vaikka et käyttäisikään Alpine Linuxia.

Alpine Linux -päivitykset

Alpine Linux -julkaisutekniikka ei ole läheskään yhtä tiukkaa tai muodollista kuin kypsät järjestelmät, kuten FreeBSD, mutta se kattaa perusasiat. Ja se sopii hyvin Alpinen Docker-isännän ja laitteiden ensisijaisiin käyttötarkoituksiin.

Virtoja on olennaisesti kaksi, reuna ja vakaa. Edge on liikkuva vapautushaara, tilannekuva missä tahansa puolen vuoden välein tapahtuvassa kehityksessä. Paketit liikkuvat reunan läpi, ja kun ne ovat valmiita, ne edistetään vakaana / yhteisössä, jossa yhteisö tukee niitä kuuden kuukauden ajan. Pakkaukset, jotka selviävät siitä ja kehittyvät edelleen, tekevät siitä lopulta vakaan / tärkeimmän, missä niitä tuetaan kahden vuoden ajan.

Hieman varovaisuutta on noudatettava päivitettäessä 2.x-haarasta 3.x-haaraan johtuen C-kirjastojen muutoksesta (uClibc: stä musliiniin). Jos et ole varovainen, järjestelmä saattaa epäonnistua päivityksen puolivälissä. Pakettien päivittäminen 3.x-linjaa pitkin on yksinkertaisempaa, vaikka silti manuaalinen prosessi, jota ohjaavat suurimmaksi osaksi komentosarjat. Temppu päivitysprosessin ymmärtämiseen on saada oikea APK-arkisto (yhteisö, reuna tai pää), tyhjentää välimuisti ja antaa sitten APK: n päivittää kaikki paketit apk päivitys.

Ytimen päivittäminen on myös suoraviivaista, ja se käyttää setup-bootable-komentosarjaa uuden ytimen ja väylälaatikon kirjoittamiseen käynnistystietovälineelle.

Kaiken kaikkiaan Alpine-järjestelmässä ei ole liikaa liikkuvia osia, joten kun arkkitehtuuri on ymmärretty, päivityksen selvittäminen ei ole vaikeaa.

Alpine Linux yhdellä silmäyksellä

Alpine Linux on loistava valinta kaikille järjestelmille, jotka ovat verkkokeskeisiä ja yksikäyttöisiä. Tunkeutumisen havaitseminen, verkon valvonta ja IP-puhelintoiminta ovat esimerkkejä Alpine Linuxin hyvistä sovelluksista. Ja se on luonnollinen valinta astioille. Levyä paljon käyttävät sovellukset on testattava huolellisesti. Käyttäjien tulisi valmistautua viettämään jonkin aikaa yhteisöön osallistumiseen ja käärimään hihansa käsien likaantumiseen. Koe ja virhe vaaditaan.

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