This shows you the differences between two versions of the page.
so2:resurse:sala-de-laborator [2013/02/10 02:10] 127.0.0.1 external edit |
so2:resurse:sala-de-laborator [2015/02/22 21:34] (current) razvan.deaconescu [Hardware] |
||
---|---|---|---|
Line 20: | Line 20: | ||
***Editare surse prin SSH** (folosind vim, emacs sau alt editor text-based); compilare prin SSH | ***Editare surse prin SSH** (folosind vim, emacs sau alt editor text-based); compilare prin SSH | ||
* Se pornește mașina virtuală de Linux. | * Se pornește mașina virtuală de Linux. | ||
- | * Se deschide o conexiune SSH cu mașina virtuală, executând într-un terminal comanda: {{{ssh root@spook.local}}} \\ (sau forma echivalentă: {{{ssh -l root spook.local}}}). | + | * Se deschide o conexiune SSH cu mașina virtuală, executând într-un terminal comanda: ''ssh root@spook.local'' \\ (sau forma echivalentă: ''ssh -l root spook.local''). |
- | * Se descarcă scheletul laboratorului, executând într-un terminal comanda: {{{get-lab XX}}} (se înlocuiește XX cu numărul laboratorului curent). Scheletul va fi descărcat și extras în directorul curent. | + | * Se descarcă scheletul laboratorului, executând într-un terminal comanda: ''get-lab XX'' (se înlocuiește XX cu numărul laboratorului curent). Scheletul va fi descărcat și extras în directorul curent. |
- | * Se poate folosi un tab suplimentar în terminal pentru compilarea surselor. Se apasă {{{Ctrl+Shift+T}}} în terminal pentru a deschide un tab nou și se realizează înca o conexiune SSH în acest tab. | + | * Se poate folosi un tab suplimentar în terminal pentru compilarea surselor. Se apasă ''Ctrl+Shift+T'' în terminal pentru a deschide un tab nou și se realizează înca o conexiune SSH în acest tab. |
- | * Se deschide {{{Netconsole Terminal}}} (icon-ul este pe Desktop) pentru a primi mesajele trimise de kernelul mașinii virtuale. | + | * Se deschide ''Netconsole Terminal'' (icon-ul este pe Desktop) pentru a primi mesajele trimise de kernelul mașinii virtuale. |
/* | /* | ||
***Editare surse local** (folosind un editor vizual cum ar fi gedit sau gVim); compilare prin SSH | ***Editare surse local** (folosind un editor vizual cum ar fi gedit sau gVim); compilare prin SSH | ||
* Se pornește mașina virtuală de Linux. | * Se pornește mașina virtuală de Linux. | ||
- | * Se montează directorul {{{/home/student}}} de pe mașina virtuală în directorul {{{/home/student/spook-share/}}} al mașinii gazdă, folosind {{{Mount spook-share}}} (icon-ul este pe Desktop; dupa rularea scriptului se confirmă montarea apăsând OK, apoi se așteaptă mesajul de succes sau de eroare; //nu// se va rula scriptul a doua oară inainte de a primi acele mesaje); alternativ, se poate executa într-un terminal comanda {{{mount-spook-share}}} sau comanda de montare manuală ({{{mount /home/student/spook-share}}}). | + | * Se montează directorul ''/home/student'' de pe mașina virtuală în directorul ''/home/student/spook-share/'' al mașinii gazdă, folosind ''Mount spook-share'' (icon-ul este pe Desktop; dupa rularea scriptului se confirmă montarea apăsând OK, apoi se așteaptă mesajul de succes sau de eroare; //nu// se va rula scriptul a doua oară inainte de a primi acele mesaje); alternativ, se poate executa într-un terminal comanda ''mount-spook-share'' sau comanda de montare manuală (''mount /home/student/spook-share''). |
- | * Se verifică montarea corectă a directorului: {{{ls /home/student/spook-share/}}} (ar trebui să se vada un fișier {{{hello.txt}}}; prezența unui fișier {{{not-mounted.txt}}} indică faptul că în acel director nu este montat nimic). | + | * Se verifică montarea corectă a directorului: ''ls /home/student/spook-share/'' (ar trebui să se vada un fișier ''hello.txt''; prezența unui fișier ''not-mounted.txt'' indică faptul că în acel director nu este montat nimic). |
- | * Se descarcă scheletul laboratorului, executând comanda: {{{get-lab XX}}} (se înlocuiește XX cu numărul laboratorului curent). Scheletul va fi descărcat și extras în directorul curent. | + | * Se descarcă scheletul laboratorului, executând comanda: ''get-lab XX'' (se înlocuiește XX cu numărul laboratorului curent). Scheletul va fi descărcat și extras în directorul curent. |
- | * Se deschide editorul preferat (gedit, gVim) și se încarcă scheletul primului exercițiu din directorul {{{/home/student/spook-share/labXX-tasks/}}}. | + | * Se deschide editorul preferat (gedit, gVim) și se încarcă scheletul primului exercițiu din directorul ''/home/student/spook-share/labXX-tasks/''. |
- | * Se deschide o conexiune SSH cu mașina virtuală pentru compilarea surselor. Din terminalul deschis mai sus, se execută comanda: {{{ssh root@spook.local}}} (sau forma echivalentă: {{{ssh -l root spook.local}}}). Apoi se navighează în directorul primului exercițiu: {{{cd labXX-tasks/...}}} | + | * Se deschide o conexiune SSH cu mașina virtuală pentru compilarea surselor. Din terminalul deschis mai sus, se execută comanda: ''ssh root@spook.local'' (sau forma echivalentă: ''ssh -l root spook.local''). Apoi se navighează în directorul primului exercițiu: ''cd labXX-tasks/...'' |
- | * Se deschide {{{Netconsole Terminal}}} (icon-ul este pe Desktop) pentru a primi mesajele trimise de kernelul mașinii virtuale. | + | * Se deschide ''Netconsole Terminal'' (icon-ul este pe Desktop) pentru a primi mesajele trimise de kernelul mașinii virtuale. |
* | * | ||
- | |||
==== Exerciții Windows ==== | ==== Exerciții Windows ==== | ||
Line 41: | Line 40: | ||
Sfaturi utile: | Sfaturi utile: | ||
- | *Pentru **compilarea modulelor de kernel**, se foloseste __numai__ consola {{{x86 Checked Build Environment}}}. Compilând cu această consolă vor fi activate warning-urile, care de cele mai multe ori vă indică probleme serioase în cod. | + | *Pentru **compilarea modulelor de kernel**, se foloseste __numai__ consola''x86 Checked Build Environment''. Compilând cu această consolă vor fi activate warning-urile, care de cele mai multe ori vă indică probleme serioase în cod. |
- | *Pentru **compilarea aplicațiilor user-space** (de exemplu, testerele care însoțesc scheletul), se folosește __numai__ consola {{{Visual Studio 2008 Command Prompt}}}. | + | *Pentru **compilarea aplicațiilor user-space** (de exemplu, testerele care însoțesc scheletul), se folosește __numai__ consola ''Visual Studio 2008 Command Prompt''. |
*Deschideți DbgView înainte să inserați orice modul în kernel. | *Deschideți DbgView înainte să inserați orice modul în kernel. | ||
==== Observații generale ==== | ==== Observații generale ==== | ||
- | *Dacă hostname-urile {{{spook.local}}} sau {{{chooch.local}}} nu sunt recunoscute: | + | *Dacă hostname-urile ''spook.local'' sau ''chooch.local'' nu sunt recunoscute: |
*Verificați că mașina virtuală respectivă este pornită și funcțională. | *Verificați că mașina virtuală respectivă este pornită și funcțională. | ||
- | *Porniți manual Avahi mDNS/DNS-SD daemon, executând comanda următoare într-un terminal de pe mașina gazdă: {{{sudo /etc/init.d/avahi-daemon start}}} | + | *Porniți manual Avahi mDNS/DNS-SD daemon, executând comanda următoare într-un terminal de pe mașina gazdă: ''sudo /etc/init.d/avahi-daemon start'' |
==== Editarea folosind vim ==== | ==== Editarea folosind vim ==== | ||
Sfaturi utile pentru editarea folosind vim: | Sfaturi utile pentru editarea folosind vim: | ||
***Paste fără linii "în scară":** Când se face paste, editorul va încerca să indenteze automat liniile ca și cum ar fi scrise de la tastatură. | ***Paste fără linii "în scară":** Când se face paste, editorul va încerca să indenteze automat liniile ca și cum ar fi scrise de la tastatură. | ||
- | *Pentru a păstra formatarea codului, inainte de a da paste se execută comanda {{{:set paste}}} | + | *Pentru a păstra formatarea codului, inainte de a da paste se execută comanda '':set paste'' |
- | *Pentru a reveni la modul normal, în care indentarea se realizează automat, se executa comanda: {{{:set nopaste}}} | + | *Pentru a reveni la modul normal, în care indentarea se realizează automat, se executa comanda: '':set nopaste'' |
***Cut, copy, paste în mod vizual:** Pentru a selecta rapid text nu se folosește mouse-ul (nu funcționează cum ar trebui prin SSH). | ***Cut, copy, paste în mod vizual:** Pentru a selecta rapid text nu se folosește mouse-ul (nu funcționează cum ar trebui prin SSH). | ||
- | *Editorul vim are un buffer intern (ca un clipboard) în care se poate stoca un bloc de text. O parte a buffer-ului este păstrată și după ieșirea din editor (în fișierul {{{~/.viminfo}}}) | + | *Editorul vim are un buffer intern (ca un clipboard) în care se poate stoca un bloc de text. O parte a buffer-ului este păstrată și după ieșirea din editor (în fișierul ''~/.viminfo'') |
- | *Se intră în modul vizual apăsând tasta {{{v}}} (pentru modul de selecție caracter-cu-caracter) sau tasta {{{V}}} (pentru modul de selecție linie-cu-linie). | + | *Se intră în modul vizual apăsând tasta ''v'' (pentru modul de selecție caracter-cu-caracter) sau tasta ''V'' (pentru modul de selecție linie-cu-linie). |
*Selecția începe de la caracterul curent / linia curentă. | *Selecția începe de la caracterul curent / linia curentă. | ||
- | *Se folosesc săgețile pentru a selecta bucata de cod relevantă și în final se apasă {{{d}}} (delete) pentru a șterge selecția și a o pune în buffer sau {{{y}}} (yank) pentru a copia selecția în buffer. Se va reveni automat la modul comandă. | + | *Se folosesc săgețile pentru a selecta bucata de cod relevantă și în final se apasă ''d'' (delete) pentru a șterge selecția și a o pune în buffer sau ''y'' (yank) pentru a copia selecția în buffer. Se va reveni automat la modul comandă. |
*Se deplasează cursorul cu săgețile și se poziționează înainte de caracterul / linia unde se vrea să se insereze conținutul buffer-ului. | *Se deplasează cursorul cu săgețile și se poziționează înainte de caracterul / linia unde se vrea să se insereze conținutul buffer-ului. | ||
- | *Se apasă {{{p}}} (paste) pentru a insera conținutul buffer-ului __după__ caracterul / linia curentă. Se poate folosi {{{P}}} pentru a insera conținutul buffer-ului __înainte__ de caracterul / linia curentă. | + | *Se apasă ''p'' (paste) pentru a insera conținutul buffer-ului __după__ caracterul / linia curentă. Se poate folosi ''P'' pentru a insera conținutul buffer-ului __înainte__ de caracterul / linia curentă. |
***Cut, copy, paste rapid:** Se folosește pentru a șterge, muta sau copia câteva linii. | ***Cut, copy, paste rapid:** Se folosește pentru a șterge, muta sau copia câteva linii. | ||
- | *Pentru a copia linia curentă în buffer se apasă {{{yy}}}. | + | *Pentru a copia linia curentă în buffer se apasă ''yy''. |
- | *Pentru a muta linia curentă în buffer se apasă {{{dd}}}. | + | *Pentru a muta linia curentă în buffer se apasă ''dd''. |
- | *Pentru a copia/muta în buffer mai multe linii, se prefixează comanda cu un număr. De exemplu, {{{10dd}}} mută 10 linii în buffer. | + | *Pentru a copia/muta în buffer mai multe linii, se prefixează comanda cu un număr. De exemplu, ''10dd'' mută 10 linii în buffer. |
- | *Pentru a insera conținutul buffer-ului se folosește comanda {{{p}}} (inserare inainte de linia curentă) sau {{{P}}} (inserare după linia curentă). | + | *Pentru a insera conținutul buffer-ului se folosește comanda ''p'' (inserare inainte de linia curentă) sau ''P'' (inserare după linia curentă). |
- | ***Tags pentru căutare rapidă în surse:** sunt configurate deja în vim pentru mașina virtuală de Linux de la laborator, deci e de ajuns să folosiți shortcut-urile specifice: se poziționează cursorul pe un identifcator/nume de fișier include și se apasă {{{Ctrl+]}}} ; pentru a reveni se apasă {{{Ctrl+t}}} . Mai multe detalii [[http://blog.golden-ratio.net/2008/09/using-ctags-with-vim/|aici]]. | + | ***Tags pentru căutare rapidă în surse:** sunt configurate deja în vim pentru mașina virtuală de Linux de la laborator, deci e de ajuns să folosiți shortcut-urile specifice: se poziționează cursorul pe un identifcator/nume de fișier include și se apasă ''Ctrl+]'' ; pentru a reveni se apasă ''Ctrl+t'' . Mai multe detalii [[http://blog.golden-ratio.net/2008/09/using-ctags-with-vim/|aici]]. |
- | ===== Hardware ===== | ||
- | *15 sisteme având configurația de mai jos | ||
- | *CPU: Intel Core i3, 3.3 GHZ | ||
- | *Memory: 4GB RAM | ||
- | *HDD: 1TB |