User Tools

Site Tools


advanced-unix:capitole:capitol-02

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
advanced-unix:capitole:capitol-02 [2016/05/09 11:51]
razvan
advanced-unix:capitole:capitol-02 [2016/05/16 12:28] (current)
razvan [Compilare pe 32 de biți]
Line 1: Line 1:
 ====== 2. Sisteme de fișiere ====== ====== 2. Sisteme de fișiere ======
  
-Sistemul de fișiere reprezintă componenta cea mai vizibilă din cadrul unui sistem de operare. Un utilizator+Sistemul de fișiere reprezintă componenta cea mai vizibilă din cadrul unui sistem de operare. Un utilizator ​folosește sistemul de fișiere prin operații de creare, ștergere, modificare și investigare a fișierelor. Mai mult, un utilizator poate administra sistemul de fișiere prin configurarea de permisiuni, prin stabilirea de cote de sistem de fișiere și prin acțiuni de formatare și montare de sisteme de fișiere.
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
Line 88: Line 88:
 ==== Construire fișier cu informații binare ==== ==== Construire fișier cu informații binare ====
  
-Creați un fișier care să conțină 2048 de octeți de zero urmați de 2048 de octeți aleatori urmați de 2048 de octeți de zero și apoi urmați de 2048 de octeți din fișierul ''/​dev/sda1''​ de la offsetul 4096 al fișierului.+Creați un fișier care să conțină 2048 de octeți de zero (din ''/​dev/​zero''​) ​urmați de 2048 de octeți aleatori ​(din ''/​dev/​urandom''​) ​urmați de 2048 de octeți de zero și apoi urmați de 2048 de octeți din fișierul ''/​bin/false''​ de la offsetul 4096 al fișierului.
  
 <note important>​ <note important>​
Line 104: Line 104:
 </​note>​ </​note>​
  
-==== Compilare ​pe 32 de biți ====+==== Compilare ​fișier ​====
  
-Creați un fișier ''​.c''​ care să afișeze mesajul ''​Hello,​ world!''​. Compilați-l pentru a obține un executabil ​pe 32 de biți. Verificați folosind comanda ''​file''​ că este un executabil format ELF (//​Executable and Linking Format//​) ​pe 32 de biți. Apoi rulați-l.+Creați un fișier ''​.c''​ care să afișeze mesajul ''​Hello,​ world!''​. Compilați-l pentru a obține un executabil. Verificați folosind comanda ''​file''​ că este un executabil format ELF (//​Executable and Linking Format//). Apoi rulați-l.
  
 ==== debsums ==== ==== debsums ====
Line 114: Line 114:
 ==== chroot și executabile statice ==== ==== chroot și executabile statice ====
  
-Din fișierul ''​C''​ de mai sus creați un executabil static. Puneți acel fișier în directorul ''/​tmp/​chroot/''​ (trebuie să-l creați în prealabil). Rulați executabilul obținut folosind comanda ''​chroot''​ (adică rulați-l având ca director rădăcină,​ chroot-at, directorul ''/​tmp/​chroot''​.+Din fișierul ''​C''​ de mai sus creați un executabil static.
  
-Încercați apoi același lucru pe un executabil dinamic. Observați că nu funcționează. Copiați în directorul de chroot (''​/​tmp/​chroot/​''​) bibliotecile aferente în directoarele corespunzătoare, astfel încât să funcționeze.+<note tip> 
 +Pentru a compila static folosiți opțiunea ''​-static'' ​la ''​gcc''​. Adică similar cu 
 +<​code>​ 
 +gcc -Wall -static hello.c -o hello-static 
 +</​code>​ 
 +</​note>​
  
-Adăugați în fișierul ​''​C''​ un apel de tipul ''​sleep'' ​sau ''​pause''​ și refaceți pașii de mai sus. În timp ce executabilul rulează pornițidin altă consolă, o comandă ''​lsof''​ pentru a afișa fișierele deschide ​de acest procesObservați directorul rădăcină al procesului (''​rtd''​).+<note tip> 
 +Un executabil static nu depinde de biblioteci externe. Puteți vedea acest lucru cu ajutorul comenzii ​''​ldd'' ​(list dynamic dependencies) peste un executabil static ​sau dinamicsimilar rulării de mai jos: 
 +<​code>​ 
 +ldd ./hello 
 +ldd ./​hello-static 
 +</​code>​ 
 +</​note>​
  
 +Puneți acel fișier în directorul ''/​tmp/​chroot/''​ (trebuie să-l creați în prealabil). Rulați executabilul obținut folosind comanda ''​chroot''​ (adică rulați-l având ca director rădăcină,​ chroot-at, directorul ''/​tmp/​chroot''​).
  
-==== Container cu debootstrap ====+<note tip> 
 +Comanda ''​chroot''​ poate fi rulat doar de ''​root''​. Puteți rula în forma 
 +<​code>​ 
 +sudo chroot /tmp/chroot /​hello-static 
 +</​code>​ 
 +</​note>​
  
-Folosiți ''​debootstrap''​ pentru a crea un sistem de fișiere Debian/​Ubuntu într-un director existent pentru a crea un container în acestaFolosiți ''​chroot'' ​pentru a accesa și folosi acel container.+Încercați apoi același lucru pe un executabil dinamicObservați că nu funcționează. Copiați în directorul de chroot (''​/tmp/chroot/''​) bibliotecile aferente în directoarele corespunzătoare,​ astfel încât să funcționeze.
  
 <note tip> <note tip>
-Folosiți indicațiile de [[https://​wiki.debian.org/​Debootstrap|aici]] și [[http://​linoxide.com/​ubuntu-how-to/​configure-chroot-environment-ubuntu-14-04/​|aici]].+Bibliotecile le determinați cu ajutorul comenzii ''​ldd''​ peste executabilul dinamic.
 </​note>​ </​note>​
- 
-==== Container cu Docker ==== 
- 
-Instalați și configurați Docker și rulați comenzi într-un container Docker. 
  
 <note tip> <note tip>
-Urmăriți indicațiile de [[https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-use-docker-getting-started|aici]] ​și [[https://​docs.docker.com/​engine/​userguide/​containers/​dockerizing/​|aici]].+Folosiți opțiunea ''​%%--parents%%''​ pentru ''​cp''​ pentru a crea la destinație calea completă către fișierele de tip bibliotecă.
 </​note>​ </​note>​
 +
 +Adăugați în fișierul ''​C''​ un apel de tipul ''​sleep''​ sau ''​pause''​ și refaceți pașii de mai sus. În timp ce executabilul rulează porniți, din altă consolă, o comandă ''​lsof''​ pentru a afișa fișierele deschide de acest proces. Observați directorul rădăcină al procesului (''​rtd''​).
 +
 +==== Generare și folosire imagine ISO ====
 +
 +Vrem să creăm o imagina ISO pentru toate fișierele dn ierarhia ''/​etc''​.
 +
 +Creați un fișier ''​etc.iso''​ folosind comanda ''​genisoimage''​ care să conțină fișierele din ierarhia ''/​etc''​.
 +
 +Apoi montați imaginea ISO pentru a valida structura corectă a fișierului ''​.iso''​. Folosiți indicațiile de [[http://​askubuntu.com/​a/​193632|aici]].
 +
advanced-unix/capitole/capitol-02.1462783885.txt.gz · Last modified: 2016/05/09 11:51 by razvan