Galbūt daugelis GNU/ naudotojųLinux Atsižvelgiant į pastaruoju metu vyriausybės iniciatyvas sukurti „suverenią“ internetą, esame susirūpinę dėl tikslo apsisaugoti tuo atveju, jei populiarių GNU distribucijų saugyklos taptų neprieinamos.Linux.
Kas atsisiunčia saugyklas? CentOS, Ubuntu, Debian, kai kurie žmonės kuria savo platinimus remdamiesi esamais platinimais, o kiti turi LFS knygas (Linux Nuo nulio) ir BLFS (Beyond) Linux „From Scratch“) jau ėmėsi savo platinamųjų programų kompiliavimo iš šaltinio kodo, nes mano, kad „suverenios“ interneto sąlygomis neišvengiamai kils įsilaužėlių atakų, virusų epidemijų, duomenų nutekėjimų, o dvejetainiai failai po kurio laiko tiesiog taps nebeaktualūs.
Neseniai pagal knygoje pateiktas instrukcijas sukūriau virtualią mašiną iš šaltinio kodo. Linux „From Scratch Systemd Edition“ v.8.3. Nekantrauju pasidalinti rezultatais su jumis.
Sukūrimo procesas Linux
Sukūrimo procesas Linux iš šaltinio kodo galima suskirstyti į tris etapus:
- LFS kūrimo aplinka surenkama remiantis esama operacine sistema.
- Sukūrimo aplinka sukurs LFS virtualiosios mašinos vaizdą.
- Virtualioje mašinoje įdiegiami papildomi paketai iš BLFS knygos, kurių nėra LFS knygoje.
Statiniai scenarijų failai
Dirbant su kūrimo aplinka patogu naudotis iškarpine ir SSH: komandas nukopijavau iš knygos ir įklijavau į kūrimo aplinkos konsolę.
Paleidus sukurtą virtualią mašiną, atsirado rimtų problemų. Kitaip nei terminalo lange, negalite įklijuoti kodo į virtualios mašinos kliento langą. Komandų rinkimas naudojant klaviatūrą yra nepatogus ir yra didelė rašybos klaidų rizika. Rašybos klaidų pavojus yra tas, kad jie gali pasirodyti ne iš karto, o po kurio laiko ir sukelti rimtų problemų.
Yra žinoma, kad komandas galima įvesti ne tik iš klaviatūros, bet ir iš standartinio srauto (STDIN). Standartinio srauto šaltinis gali būti nuoseklusis prievadas, taip pat scenarijaus programos rezultatas, vadinamasis standartinis išėjimas (STDOUT).
Daugelis žmonių žino, kad komanda wget gali išvesti atsisiųsto failo turinį į standartinę išvestį (STDOUT):
wget http://example.com -O -Jei komandos wget išvestis siunčiama vertėjui, gali būti vykdomas savavališkas kodas. Kodas bus vykdomas taip, lyg jis būtų įvestas klaviatūra arba nukopijuotas iš mainų srities:
wget http://umvirt.com/linux/helloworld.sh -O - | bashTokiu būdu galite patalpinti failus su komandomis į kokį nors žiniatinklio serverį ir nusiųsti jų turinį vertėjui.
Dinaminiai scenarijaus failai
Statiniai failai yra geras dalykas, žinoma, jei tiksliai žinote, ką reikia padaryti, bet jei yra įdiegtas paketas, jei priklausomybės nėra aiškiai įdiegtos ar ne, kas tada?
Dinamiška svetainė, kurios pagrindu yra, ateina į pagalbą LAMP žiniatinklio serveris (Linux-Apache-MySQL-PHP). Jei svetainė gali dinamiškai generuoti puslapius (HTML failus) ir vaizdus, ji turėtų galėti tvarkyti ir įprastus tekstinius failus.
Taip ir atsitiko. Parašė svetainę kuris generuoja Bash interpretatoriaus scenarijus. Svetainės duomenų bazėje yra informacijos apie paketus, priklausomybes, pataisas, papildymus ir kūrimo komandas.
Dabar, norėdami įdiegti mc (midnight Commander) paketą, galite įvesti komandą:
wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bashPats svetainės scenarijus gaus duomenis iš duomenų bazės ir generuos priklausomybės tikrinimo kodą bei scenarijaus kodą paketui įdiegti. Vertėjas apdoros scenarijaus instrukcijas.
Kad tai būtų įmanoma, informacija apie įdiegtus paketus saugoma duomenų bazėje virtualiosios mašinos diske.
Įdiegtų paketų duomenų bazė yra kataloge /var/cache/ulfs-packages yra tuščių failų sąrašas su pavadinimais, atitinkančiais paketų pavadinimus.
Jei paketas nerastas duomenų bazėje, priklausomybės įdiegiamos rekursyviai.
Patogumai
Kad būtų patogiau įdiegti paketus, kita svetainė parašė šimpanzės scenarijų , naudojant pagrindą UmVirt LFS paketai. Pagrindinė užduotis UmVirt LFS asistentas - tai kitų komandų vykdymas.
Naudojant šimpanzę, paketų įdiegimas tampa dar lengvesnis:
chimp install mcDemonstracija
Susipažinti su tarnybų darbu UmVirt LFS paketai и UmVirt LFS asistentas galite atsisiųsti bazinį vaizdą . Įdiekite Xorg naudodami vieną komandą:
chimp install XKai scenarijus veikia, 141 paketas bus įdiegtas automatiškai. Norėdami sutaupyti kompiliavimo laiko, kintamojo MAKEFLAGS reikšmę faile /etc/profile galite pakeisti iš „-j1“ (viena gija) į, pavyzdžiui, „-j6“ (šešios gijos).
Decentralizavimas ir pritaikymas
Saugumo, autonomijos ir pritaikymo tikslais UmVirt LFS paketų ir UmVirt LFS Assistant paslaugų šaltinio kodas skelbiamas viešai. Kiekvienas gali jį atsisiųsti, įdiegti ir koreguoti paslaugas savo infrastruktūroje.
Šaltinis: www.habr.com
