A lényeg tehát, hogy rá tudtam tenni a mancsomat egy jó kis használt notebookra. Ezzel már impresszív sebességértékeket tudok majd reményeim szerint produkálni, és nem kell PIII-as kukázott vackokra telepítenem meg kernelt fordítani. Egyetlen szépséghiba, hogy Bagojnének is igen tetszik. :-) Amíg nem nyúlja le, addig tán van időm az alábbi tesztekre:
- Debian Wheezy boot idő lefaragás
- Mini linux körkép 2014-ben
- Parsix, Manjaro, LMDE kipróbálás, mert megígértem :-)
- A megkerülhetetlen 2014-es Ubuntu teszt
Mivel most van egy laptop, ami nincs napi igába befogva, ezért szívesen kipróbálok rajta bármit, csak írjátok meg. :-)
Debian Wheezy boot idő lefaragás
Az első projektet már meg is kezdtem egy debian-netinstall ISO letöltésével. Ez a folyamat természetesen eseménytelenül telt, mindössze egy érdekesség volt, mert a WIFI meghajtó szoftverhez szükség van az Intel által gyártott firmware fájlra, és ezt a Debian alapból nem szállítja. A teljesség kedvéért azért leírom, hogy pontosan hogyan is csináltam, hogy lehessen látni, mi változott mondjuk egy évvel ezelőtt óta.
Debian telepítés nem-szabad firmware-rel
Az alap probléma tehát az, hogy számos hardver létezik, amely nem a saját ROM-ban tárolja a működéshez szükséges firmware kódot, hanem az operációs rendszertől várja, hogy betöltse neki a memóriába. Ezzel egészen odáig nincs gond, amíg az oprendszer gyártója nem mondja azt, hogy a standard telepítő nem tartalmazhat non-free kódot, márpedig a Debian ilyen. A laptopom wifi kártyájához pont kell firmware, a kábelig pedig lusta vagyok elmenni (pontosabban, nehezen hozzáférhető helyen van). Makacs emberként én mégis a Debiant fogom feltelepíteni...
Alapvetően nem nagy a probléma, azt a plusz .deb-et, amely hiányzik, rá kell varázsolni a telepítő USB kulcsra. Ez elég egyszerű, mert biztosítanak is egy kátránylabdát (mármint tarball-t), amit ki kell tömöríteni az USB-kulcs firmware/ könyvtárába. Egyesek még a kátránylabdázást is megspórolják nekünk, és készítenek ilyen ISO-kat:
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/
Hurrá, én már alapból ilyen ISO-t töltöttem le. Picike probléma, hogy a .tar nincs kitömörítve, abban pedig nem találja meg a telepítő - ki kell tömöríteni, a benne lévő .deb-ekben pedig a telepítő már megtalálja a neki szükséges firmware fájlokat. Ehhez telepítés közben, amikor a fenti képernyő megjelent, leváltottam a kettes konzolra (Alt + F2), majd
mount /cdrom -o remount,rw
cd /cdrom/firmware
tar -xf firmware.tar
mount /cdrom -o remount,ro
A lényeg, hogy férjen el a cucc a pendrive-on kitömörítve is.
Ezen felül a telepítés eléggé a szokott mederben folyt, csak kicsit meglepődtem, hogy egyből a grafikus telepítő indult:
- Nyelv választás
- Firmware megkeresés és betöltés
- Hálózat automatikus beállítása, gépnév megadás
- Root felhasználó jelszó, illetve az elsődleges felhasználó nevének és jelszavának megadása
- Partícionálás, formázás, alaprendszer telepítés
- Főbb komponensek kiválasztása (pl. SSH server stb), csak az alaprendszert választottam
- GRUB telepítés, reboot
Ez most sem volt túl bonyolult. Ezután jöhetett a szokásos parancssoros majomkodás:
Sudo
Nem tudom, miért ragaszkodik a Debian ahhoz, hogy sudo-t nem rak fel alapból. Szerintem (és sok más ember szerint is) veszélyesebb belépni root felhasználóval, mint csak egy-egy feladatra átlépni privilegizált módba. Ezért jött a sudo feltelepítése, és a saját felhasználóm bepakolása a /etc/group fájlba:
apt-get install sudo
adduser bagoj sudo
Takarítás
Mivel ez egy sima grafikus munkaállomás nyomtatóval nem felszerelt felhasználónak, főként netezni, jópár szolgáltatást kigyomláltam belőle:
apt-get --purge remove exim4-daemon-light exim4-config libsane sane-utils mlocate cups rsyslog nfs-common
apt-get autoremove
Grafikus rendszer telepítés
A szokásos LXDE felület telepítése gyorsan zajlott, egyetlen rendhagyó dolgot végeztem el. Mivel unom már az xDM-es (vagyis gdm, kdm, lightdm, xdm...) belépéseket, illetve az általuk mérhetően okozott boot lassulást, mivel amúgy is egyetlen felhasználó vagyok a rendszeren, úgy gondoltam, hogy egy "NODM" megoldást választok, vagyis login manager nélkül indítom az X felületet. Ez több gondolatot is felvet:
- Hogyan indítom el az X-et belépés nélkül
- Hogyan fogok kilépni/leállítani
- Biztonsági kockázatok
Kezdjük az elején.A grafikus rendszer telepítésére egy szép parancs (mindenki a saját videokártya driverét tegye fel, vagy aká az összeset a video-all csomag telepítésével):
apt-get install pcmanfm evince-gtk lxlauncher lxtask p7zip-rar p7zip-full fuse galculator gksu gnome-bluetooth gnome-keyring gvfs-backends gvfs-daemons gvfs-fuse lxappereance lxde-common lxde-core lxde-icon-theme lxinput lxmenu-data lxpanel lxpolkit lxsession lxsession-edit lxshortcut lxterminal menu menu-xdg notification-daemon ntfs-3g udisks openbox obconf policykit-1-gnome upower ttf-dejavu x11-utils xserver-xorg-input-evdev xserver-xorg-input-mouse xserver-xorg-input-synaptics xarchiver xserver-xorg-video-fbdev xserver-xorg-video-intel xserver-xorg-video-vesa zip xdg-utils xinit chromium-browser flashplugin-nonfree alsa-base
apt-get clean
update-flashplugin-nonfree --install
(A flashplugin-nonfree telepítéshez ne felejtsük el a /etc/apt/sources.list szerkesztését, a "main" után mindenütt legyen "contrib non-free" is (idézőjelek nélkül)).
Mint az látható, nem fullos lxde-t tettem fel, a lényeg, hogy elinduljon, aztán majd lehet variálni. Jöhet az autologin.
Egyik legegyszerűbb, és a Debian fórum által is ajánlott módszer az, hogy az egyik konzol ablakunkat beáldozzuk, és ott nem a bevitelt végző getty programot, hanem valami mást indítunk el. Mivel a Debian alapból 6 darab tty eszközt hoz létre, és egy grafikus rendszer esetén 1-2 elég, én a 3-as konzolt választottam ki erre a célra; a 4-5-6. terminált pedig ki is kapcsoltam. Ehhez mindössze a /etc/inittab fájlt kell megtúrni (rootként persze):
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/bin/login -f bagoj tty3 </dev/tty3 >/dev/tty3 2>&1
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
A kikommentezett sorok egyértelműek, nem kell ennyi terminál. A 3. sorban látható, hogy a getty helyett a /bin/login programot indítjuk el, amelynek a -f paraméterével megadható, hogy melyik felhasználóval lépjen be. Az input és output kezelését rábízzuk a loginra, tehát amit a tty3-ra gépelünk, azt megkapja a shell, és amit a shell visszaír, azt kiírjuk a atty3-ra. Egyszerű az élet a linuxszal.
Természetesen akkor is a login indul el, amikor belépéskor beírjuk a felhasználónevünket (csak akkor kér jelszót is), és az a normál indítási mód.
Az eddigi munkánk annyit csinál tehát, hogy a 3-as terminálon automatikusan bejelentkezik a felhasználónk. Az X indítására ott a remek startx, node hogyan adjuk ki a parancsot? Ragadjuk meg a home könyvtárunkban a .bashrc fájlt és szerkesszük kicsit a végét:
if [ -z "$DISPLAY" ] && [ $(tty) = /dev/tty3 ]; then
startx
if [ $? == 0 ]; then
sudo /sbin/halt
fi
fi
Sima ügy, ha a 3-as terminálról jövünk, indítjuk az X-et, egyébként nyilván nem, hiszen nem tudnánk konzolon belépni (sőt X terminálban sem). Az X-ből való kilépésnél ellenőrzöm, hogy a visszatérési érték 0 volt-e (tehát normál módon lett leállítva az X), ha nem, akkor nagy valószínűséggel valami X probléma van, tehát nem lenne jó azonnal leállítani a gépet. Ha viszont minden rendben volt, akkor halt. (Rebootolni nem lehet. :-))
Bónusz kérdés, hogy vajon egy felhasználó kiadhatja-e a /sbin/halt parancsot? Nyilván nem. Ezért adnunk kell jogot, hogy a parancsot futtathassa külön jelszó megadása nélkül is.
root@anna:/home/bagoj# visudo
... majd egy alkalmas helyre
%sudo ALL=NOPASSWD:/sbin/halt
(Aki a sudo csoport tagja, mindenki jelszó nélkül leállíthatja a gépet. Természetesen alaposan át kell gondolni, hogy mikor engedünk ilyet! Ha vannak távolról bejelentkező felhasználók, akkor ezt nem így kell megoldani.)
Network-Manager és policykit
Van nekünk ez a csodálatos Policykit-ünk, amely alapból nem engedi, hogy az X felületen a felhasználó csatlakozhasson egy wifi hálózathoz. Ehhez létrehoztam egy fájlt az alábbi tartalommal, és voilá:
# vi /etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla
[nm-applet]
Identity=unix-group:netdev
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
A felhasználót ne felejtsük betenni a netdev csoportba (alapból benne van), mert csak azoknak a tagjai, és azok is aktív Consolekit session-nel tudnak minden funkciót elérni az nm-appletben (ami a Network Manager grafikus része).
Most jönnek a problémák:
1) Ha valaki hozzáfér a 3-as konzolhoz, nyomhat egy ctrl+c-t és máris promptot kap, tehát a bejelentkezett felhasználó jogaival rendelkezik, fájljait elérheti stb.
2) Aki legalább a bejelentkezett felhasználó jogait megszerzi, le tudja állítani a gépet
3) Ha bárki elindítja a gépet, kap egy X felületet a felhasználónk jogaival.
4) Az lxsession-logoutban (tehát a kilépéskor) nem működik a hibernate és a suspend. Ezzel kapcsolatban megkapargatjuk a Policykit-et.
Ha valaki olvassa még ezeket a sorokat, várom a tippeket a megoldásra. Persze a továbbiakban közreadom majd, hogy én mire jutottam.