Gătire subțire

Asamblarea unui client subțire, orientată către clienți specifici, se reduce la următoarele etape:

  • Descărcați repozitoriul ThinStation complet
  • Colectăm o imagine "grasă" (plină)
  • Încărcăm un client subțire pe o imagine groasă
  • Avem lista modulelor și pachetelor kernel necesare pentru acest client
  • Fixăm configurațiile ansamblului, lăsând doar cele mai necesare (inclusiv cele obținute în etapa anterioară)
  • Colectăm imaginea "subțire" (luminată)

Pregătirea bucătăriei

O dată voi spune că există un alt mod de asamblare - descărcarea imaginii pregătite .iso. Dar nu mi se pare foarte convenabil, așa că voi descrie opțiunea "corectă".







Descărcarea depozitului

În general, pentru a lucra cu ThinStation este recomandat să aveți cunoștințe de bază despre lucrul cu Git. Pur și simplu pentru că modificările dvs. vor trebui salvate undeva și pierderea în ierarhia fișierelor atunci când bucătăria este deja despachetată (fără să știe Git) este foarte ușoară. Descărcarea este redusă la executarea unei singure comenzi.

De asemenea, trebuie remarcat faptul că administratorii de proiect recomandă chiar clonarea depozitului în numele rădăcinii - mi sa spus asta când am încercat să sugerez modificări pentru a repara proprietarul unor scripturi. Cât de mult este corect - nu presupun să judec, dar dacă observați probleme legate de drepturile la dosar, merită probabil să urmați acest sfat.

Pregătirea chrootului

Directorul rădăcină al repositorylui descărcat este setarea-chroot pentru script-ul bash. care va face toată munca pentru dvs. În acest sens, trebuie doar să știți că trebuie să o executați din rădăcină (deoarece, de exemplu, montează sistemul de fișiere într-un copac nou) și, în al doilea rând, are un set de chei, cel mai necesar dintre care în prima etapă este cheia - a - nu puneți întrebări, dar descărcați tot ce aveți nevoie automat.

Apropo, totul se face deja în interiorul acestei crengi. Pentru prima dată, operația de pregătire poate dura până la o oră de timp (pe un disc lent), dar apoi intrarea se face aproape instantaneu până la următoarea curățare completă.

Imagine groasă

Construirea unei imagini groase este un pas preliminar și aveți nevoie să încărcați hardware-ul pentru prima dată și să aflați ce set de pachete și module va fi necesar. În consecință, dacă aveți o grădină zoologică sau vă așteptați să cumpărați unul nou, trebuie doar să păstrați această imagine la îndemână. Recompilați-o numai cu schimbări serioase, de exemplu - o nouă versiune a kernel-ului.

Desigur, există posibilitatea ca cineva să fi făcut deja acest lucru pentru fierul tău. Puteți merge la directorul ts / build / machine și căutați numele platformei dvs. Dacă o găsiți, nu ezitați să renunțați la acest pas.

Personalizarea construirii

Toate celelalte nu sunt importante - vom regla mai târziu.

Mă voi ocupa de ce trebuie să schimbați sistemul de compresie de la squashfs la gzip. Scriptul hwlister.sh. care vor fi discutate mai jos, utilizează o metodă foarte interesantă de căutare a firmware-ului descărcat - se uită pur și simplu la momentul accesării fișierelor în / lib / firmware și, pe această bază, trage concluzii care au fost descărcate. Dar squashfs este montat cu parametrul relatime. ceea ce duce la faptul că timpul de acces la fișiere nu se schimbă, iar lista firmware-ului (iadul, nu știu cum să traduc acest cuvânt fără a-mi pierde semnificația) este întotdeauna goală. Schimbarea modului de compresie în gzip este cea mai ușoară și mai rapidă cale de a readuce scenariul la viață fără a intra în curaj. Am scris despre asta dezvoltatorilor, dar până acum nu a existat niciun răspuns.

Construiți orice imagine se face în chroot - așa că nu uitați să mergeți în ea. Pentru a construi o imagine groasă există și un parametru special - toate modulele. care include toate modulele kernel disponibile în imagine, care este de asemenea utilă pe un hardware necunoscut.

După terminarea procesului, în directorul cu imagini de boot va fi posibilă găsirea variantelor imaginii - iso, pxe și syslinux. Puteți utiliza orice și descărca clientul în orice mod convenabil.

Colectarea de informații

Când fierul de test a fost încărcat cu succes, trebuie să intrați în consoană în orice mod convenabil și să scrieți:

Acesta este un script bash normal, după care veți găsi mai multe fișiere:

  • /firmware.list - lista firmware-ului necesar
  • /module.list - lista modulelor de kernel necesare
  • /package.list - lista cu pachetele necesare, având în vedere arhitectura va conține numai pachete xorg7- *
  • /vbe_modes.list - dacă se utilizează uvesafb. Acest fișier va conține o listă a modurilor acceptate

Este posibil ca unele fișiere să lipsească dacă nu se găsește nimic potrivit

Același script va încerca să descarce fișiere pe serverul tftp specificat în config, dar sper că aveți o intrare pentru tftp, ca mine, este interzisă. Prin urmare, luăm fișierele din sistemul testat în orice mod și le punem în directorul ts / build / machine / MACHINENAME. unde MACHINENAME este codul pe care îl dai hardware-ului.

Imagine subțire

Construirea unei imagini subțiri este întotdeauna echilibrată la limita dintre funcționalitate și volum. Mai puțin volum - stații de lucru fără încărcătură mai rapide în rețea, pornire mai rapidă a sistemului, mai puțin RAM solicitat de clienți. Personal, am avut sarcina de a face o imagine a volumului minim pentru o singură sarcină - un client RDP terminal. Voi spune despre asta.







Construiți Configurația - build.conf

După cum am scris mai sus, primul pas în configurarea de configurare este editarea fișierului build.conf. Acesta determină care pachete vor fi incluse în imagine și alți parametri ai colectorului.

În ceea ce privește pachetele din secțiunea Aplicații, alegerea depinde în întregime de dvs. Tot ceea ce este descris mai sus este valabil pentru clienții subțiri, în care utilizatorul nu va vedea desktopul său (RDP, VNC, etc) și pentru a folosi, de exemplu, un browser local - multe dintre cele de mai sus ar trebui lăsate.

Rămâne să vă amintiți să reveniți la param initrdcmd "squashfs" și să eliminați 3 linii la sfârșitul final: pachet alltimezone. param allres true și param allfirmware true - acest lucru nu ne este util pentru o imagine subțire.

Runtime configurare - thinstation.conf.buildtime

Fișierul thinstation.conf.buildtime este în esență un script bash care oferă variabile de mediu pentru toate scripturile de pornire. Înainte de a începe să o editați, ar trebui să te uiți în directorul ts / build / conf (github) - aici găsiți bucăți de configurații pentru fiecare pachet, care includ explicații și toate variabilele disponibile.

Este dificil să dai niște sfaturi universale. Setarea va depinde de mediul dvs. și de pachetele utilizate. Iată un exemplu pentru o sesiune PRDP.

Construirea unei imagini subțiri

Acum că configurația este gata, rămâne doar să asambleze o imagine ușoară. Toate comenzile ca și imaginea completă, cu excepția unui singur parametru:

Și asta e tot. În funcție de ce ați specificat în build.conf. veți obține imagini gata pentru încărcare pe PXE, de pe CD-ROM, hard disk sau unitate flash. Cu această configurație, puteți obține o dimensiune a imaginii

90 MB și timpul de încărcare de către PXE (de la pornire la desktop) timp de aproximativ 1 minut. De pe un disc local și mai repede.

Alte caracteristici

Note utile

Curățarea bucătăriei

Periodic, mai ales dacă experimentați în mod activ versiunile de pachete, construiți, reconstruiți, recompilați binarele etc. mai devreme sau mai târziu trebuie să începeți curățarea directorului de lucru din gunoiul acumulat.

  1. Nu uitați să ieșiți din chroot
  2. Asigurați-vă că ați salvat toate modificările la Git
  3. Demontați toate fișierele de sistem din bucătărie: umount-R subțire / *
  4. Rulați scriptul de curățare: sudo ./setup-chroot -a
  5. Ștergeți tot ce a mai rămas: git clean -dx - aceasta va șterge toate fișierele nesalvate

Adăugarea propriilor pachete

Dacă vrei să aduci ceva la proiectul tău, trebuie să știi că în terminologia ThinStation, sau mai degrabă în terminologia CRUX Linux, pe care se bazează TS, există două concepte de bază:

  • (în continuare "pachet") este o abstracție care indică ce trebuie instalat în imaginea viitoare. Un pachet poate conține o bucată din arborele sistemului de fișiere, fișiere individuale sau chiar un singur fișier de configurare care specifică, de exemplu, dependențele.
  • (portul) este o asemănare cu pachetul * .deb sau * .rpm, cu o diferență importantă: arhiva cu fișierele compilate nu conține regulile de instalare, ci este pur și simplu o piesă a arborelui sistemului de fișiere. Orice reguli (script de compilare, script-uri post-instalare etc.) sunt situate lângă arhivă și sunt ușor de editat.

Când doriți să completați imaginea cu ceva propriu, primul lucru pe care ar trebui să-l gândiți, dar exact de ce aveți nevoie? Dacă doriți să adăugați o pereche de configuri de text pentru imagine - creați doar propriul pachet, includeți build.conf - și acest lucru va fi mai mult decât suficient. Dacă aveți nevoie să colectați fișiere binare - atunci va trebui să faceți portul.

Crearea propriului port

Primul lucru pe care îl recomand să faci este să creezi un director separat pentru meșteșugurile tale. Pentru aceasta, adăugați următoarea linie în fișierul ts / etc / prt-get.conf:

Stocarea într-un director separat va fi mult mai ușoară și mai sigură. După editarea fișierului, trebuie să vă amintiți să reporniți chrootul. Trebuie menționat faptul că în acest dosar există deja directoare cu porturi răspândite în colecții. Colectorul va căuta portul după nume în toate directoarele în ordine, deci dacă vă este frică de coliziuni de nume - plasați-vă directorul deasupra celorlalte.

Acum trebuie să creați un singur script bash care va fi responsabil pentru asamblarea portului: / ts / ports / yourproject / portname / Pkgfile. Eșantionul poate fi vizualizat aici. și puteți privi la orice alt port. Versiunea de bază arată astfel:

Să vedem ce face el (de fapt, el nu face, ci doar determină stadiul adunării):

Să ne verificăm ipotezele. Pentru a efectua prima construcție, trebuie să faceți următoarele:

Fișierul final de nume de port # 0.5.2.3-1.pkg.tar.xz (numele fișierului este format ținând cont de variabilele specificate la începutul scriptului) este un port gata de instalat și conține arborele sistemului de fișiere. Rămâne să o includeți în imagine - despre cum să procedați, vezi mai jos.

De asemenea, trebuie remarcat faptul că, dacă aveți un director cu portul conține fișiere sau .md5sum .footprint - asamblare poate „eșua“ o eroare din cauza unei nepotriviri de fișiere sau arbori md5 sume. Puteți șterge aceste fișiere înainte de asamblare și acestea vor fi generate automat și puteți efectua următoarea secvență de acțiuni:

Portul este asamblat - este timpul să îl instalați în sistem. În acest stadiu, este un sistem de lucru, cel în care colectați ThinStation.

Acum, arhiva este despachetată și toate fișierele sunt disponibile pentru utilizare. Cu toate acestea, aceste fișiere nu apar în imaginea pe care ați compilat - pentru aceasta veți avea nevoie de un pachet în afară de port.

Crearea unui pachet

Pachetul minim ar putea arăta astfel:

În cazul în care fișierul de dependențe este suficient pentru a specifica o linie de bază. Se consideră o idee bună că toate pachetele depind cel puțin de pachetul de bază. dar puteți adăuga mai multe reguli. Acest lucru este suficient pentru a atunci când pachetul de linia mypackage build.conf dvs. - somefile-plasat-in-etc fișier a fost în / etc directorul imaginii terminat.

Ce putem face dacă dorim ca pachetul nostru, pe lângă dosarele obișnuite, să includă portul nostru în adunare? Pentru aceasta avem nevoie doar de două scripturi. Script de instalare ts / build / packages / mypackage / build / install:

Și scriptul de dezinstalare ts / build / packages / mypackage / build / remove:

Acum, când pornim magia ./build, portul nostru va fi adăugat în arborele de fișiere imagine și va apărea în ansamblu. Desigur, dacă vă amintiți să adăugați acest pachet în build.conf.

actualizarea

Trebuie remarcat faptul că toate manipulările descrise mai sus sunt posibile datorită magiei sistemului de porturi CRUX. Portul este instalat și scos din sistem bazat pe datele din .footprint și este important să ne asigurăm că acest fișier este întotdeauna relevant. Există și alte capcane - să oprească instalarea, o eroare în timpul instalării și multe acțiuni neașteptate diferite pot duce cu ușurință la faptul că, în sistemul dumneavoastră (și ca o consecință - imagine) sunt fișiere pe care într-adevăr nu se așteaptă să vadă. Periodic fac o curățare completă a bucătăriilor pentru a fi sigur că sistemul se va comporta așa cum era de așteptat. Cu toate acestea, uneori nu este suficient timp pentru asta. Prin urmare, în cazul în care un fel de pachet și / sau portul a devenit incoerență, pentru mine, am adus următoarele comenzi, care, în 99% din cazuri va șterge toate fișierele inutile și ca rezultat încă într-un copac, în ordine:

Ce altceva să citești

Iată câteva articole interesante care mi-au ajutat odată:

Ei bine și doar în cazul în care, ramura mea ThinStation pe GitHub unde este posibil să găsești alte profiluri și modificări, poate fi utilă:







Articole similare

Trimiteți-le prietenilor: