2009. április 16., csütörtök

Hangoljunk bagolyúr segítségével

Ha a Linux terjesztésünk készítői és mi is egyöntetűen akarjuk, jóllakott pingvinünk képes jó aszkéta módjára minél kevesebb elektront enni. Ennek hatása hosszabb akkumulátoros üzemidő, és/vagy kevesebb fogyasztás lehet. Az alábbiakban pár egyszerű példát mutatok be, amelynek segítségével tuningolhatjuk a Linuxot alacsonyabb fogyasztásra. Ennek hatására kevesebbet kell termelnie az erőműveknek, kisebb lesz a légszennyezettség, az ózonlyuk begyógyul és a sarkkörökre visszanőnek a jéghegyek (már amelyik elolvadt eddigre).

A lényeg tehát, hogy a számítógépünk hardverei már nagy valószínűséggel felkészültek, hogy kicsit zöldek legyenek. Jó esetben nekünk ezt csak be kell kapcsolni.

Merevlemezek

1. Diszkek lekapcsolása

root@tarantula:~# hdparm -i /dev/sda

/dev/sda:

Model=FUJITSU MHV2040AH , FwRev=00000096, SerialNo= NT04T6A2MHJ0
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78140160
IORDY=yes, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a: ATA/ATAPI-2,3,4,5,6

* signifies the current active mode

Az UDMA-val kezdődő sor alatt láthatjuk, hogy hogyan áll merevlemezünk az energiagazdálkodással. Ha AdvancedPM=yes, akkor beállíthatjuk, hogy bizonyos tétlenség után kapcsoljon le a merevlemezünk. Jó tudni, hogy kb. 10-30 másodperc, mire feltápászkodik, tehát nem érdemes mondjuk 1 percet megadni... A bekapcsolás a "-B", az idő megadása a "-S" paraméterrel történik, utána nem percben vagy másodpercben kell megadni az értéket, hanem egy igen elborult algoritmus szerint, akit érdekel, keresse ki a man-ban. Mivel nekem a teljes üzemidő másfél óra akksin, de túl korán sem állítanám le, ezért húsz percet adtam meg:

hdparm -B 1 -S 240 /dev/sda

A fél óra 241, egy óra 242. Ha véglegesen is be szeretnénk állítani, akkor a /etc/hdparm.conf-ban a "spindown_time" értéket keressük meg, kommentezzük ki és állítsuk be a megfelelő értéket.

2. Gyakori I/O csökkentése

Másik megoldás az, ha megmentjük a merevlemezünket a túl gyakori írástól. A POSIX szabvány alapján (amelyhez a Linux is igazodik) a fájloknak kell legyen egy ún. atime, azaz access time, elérési idő tulajdonsága, ami értelemszerűen az utolsó elérési időt jelzi. Ebből már lehet kapisgálni, hogy minden fájlnál, amelyet vagy írásra, olvasásra megnyitunk, ezt a kis paramétert mindig le kell generálni és kiírni a diszkre. Még viccesebb, hogy ha egy ls paranccsal listázzuk egy könyvtár tartalmát, akkor is megváltozik annak az atime-ja! Most ha hozzávesszük, hogy nem csak a felhasználók, hanem bármely program ugyanezeket okozza, akkor rájövünk hogy ez jelentős tétel is lehet.

Van egy olyan felcsatolási paraméter az ext3 fájlrendszeren, amely jó kompromisszumot ad: csak időről időre frissíti az atime-ot. Az Ubuntun szerencsére ez az alapértelmezett, de azért ellenőrizzük le:

root@tarantula:~# mount
/dev/sda3 on / type ext3 (rw,relatime,errors=remount-ro)

...Ha nincs ott a relatime, akkor a /etc/fstab-ba beleírhatjuk. Ha úgy érezzük, egyáltalán nincs szükség az atime-ra, akkor cseréljük ki a relatime-ot noatime-ra. Figyeljünk, hogy milyen fájlrendszert írunk át, én ext3-at használok, azon tuti.

Beállítható ezen a furmányos Linuxon az is, hogy hány századmásodpercenként írjon a diszkre. (Ugye odáig világos, hogy nem azonnal kerül minden a lemezre, hanem egy pici késleltetéssel, addig egy átmeneti cache-ben csücsül). Alapértelmezetten ez 5 másodperc, lekérdezhetjük így:

cat /proc/sys/vm/dirty_writeback_centisecs 499

Ha laptopon vagyunk, és jó az akksi, és nem számítunk túl sűrűn kernel panic-ra, akkor miért ne vennénk nagyobbra? Semmit nem veszthetünk vele. Írjuk hát be a /etc/sysctl.conf-ba:

sys.vm.dirty_writeback_centisecs 1000

Ezzel nagy bátran duplájára emeltük az időt, azaz felére az írások számát.

3. I/O csökkentése a syslog hangolásával

A syslog lényege az, hogy minden naplózott esemény a diszkre kerüljön, mivel onnan kevesebb valószínűséggel veszik el. Emiatt minden esemény diszkre írásakor meghívja a sync I/O-funkciót, amely a cache-ben lévő, kiírandó adatokat egyből kiírja (normál esetben éppen annyi időnként írja ki, mint amit az előbbi pontban állítottunk be). Van egyébként erre egy kézzel bármikor futtatható parancssori utasítás is, el nem hinnétek, hogy sync a neve... Ha éppen nem egy szuperbiztonságos szervert üzemeltetünk és nem épp egy kernel betérdelést debugolunk, akkor szerintem felesleges ennyire vergődni a logokon. Nyissuk meg a /etc/syslog.conf fájlt, és a target-ek (ez a jobb oldali oszlop) elé tegyünk végig szóközt. Elég soknál már ott is van! Lássuk, hogy néz ez ki előtte:

auth,authpriv.* /var/log/auth.log

...és utána:

auth,authpriv.* -/var/log/auth.log

4. Laptop-mód bekapcsolása

Ez a Linux kernel olyan fícsöre, hogy igyekszik optimalizálni az I/O műveleteket úgy, hogy a diszkek minél többet pihenjenek. A /etc/defaults/acpi-support fájlban láthatjuk is, hogy van egy ENABLE_LAPTOP_MODE paraméter, ami alapból false. Olvashatunk egy figyelmeztetést, hogy néhány gépen ez bizony fagyást okozhat - én nem kockáztattam, nem kapcsoltam be.

Spórolás hangkártyával

Ha az ac97 hangkódekkel rendelkező felhasználók népes táborába tartozunk, akkor beállíthatjuk azt is, hogy amikor nem szól a hangkártya, akkor egyúttal takarítson meg némi energiát önmaga lekapcsolásával. Győződjünk meg arról, hogy ilyen kártyánk van-e, és tudja-e a spórolást, valamint mindez be van-e állítva:

root@tarantula:~# cat /sys/module/snd_ac97_codec/parameters/power_save
0

Ha nem azt írja, hogy ilyen fájl nem létezik, akkor már jók vagyunk.
Ha itt 1-et látunk, akkor minden rendben; ellenkező esetben írhatjuk a
/etc/rc.local fájlba, az "exit" sor elé:# echo 1 > /sys/module/snd_ac97_codec/parameters/power_save

Megtakarítás a laptop-kijelzővel

Gondolom, nem kell hosszan ecsetelnem, hogy a kijelző háttérvilágítása a laptopon gyakran az áramfelvétel felét kiteszi; nem ritka a 4-5W fogyasztás, miközben a laptop 10-11W-ot fogyaszt. Gondoljunk a kijelző háttérvilágításának csökkentésére, valamint akkumulátoros üzemben a gyors kikapcsolásra. Ez utóbbit például ezzel tehetjük meg:

bagoj@tarantula:~$ xset dpms 0 0 60

(Figyeljünk, ezt sima felhasználóként csináltam! Mivel ez az apróbetűs rész amit senki se olvas el, ide írom, hogy ezentúl a root-ként végzendő dolgokat simán #-tel, a felhasználóként végzendőket $ jellel jelölöm, ahogyan általában szokás.)

Ez 60 másodperc inaktivitás után lekapcsolja a kijelzőt, a normál képernyővédő bekapcsolást pedig nem befolyásolja (maximum annyiban, hogy a vicces cicák képei nem látszanak, he-he). A visszakapcsolás meg azonnali. Vészhelyzetben a 15 másodpercet sem tartom hülyeségnek...

Az első dologra pedig az Ubuntu alapból tud megoldást, hiszen beállítható minden a Rendszer/Beállítások/Energiagazdálkodás alatt; másoknak pedig az xbacklight programocska segíthet - már amennyiben a laptopon nincs a háttérvilágítást állító billentyű.

Fukar processzorok

Ha netán több magos rendszerünk van, akksis üzemidőben letilthatjük a teljesítményre optimalizált működést. Ezzel is nyerhetünk valamit:

# echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
# echo 1 > /sys/devices/system/cpu/sched_smt_power_savings

Uniprocesszoros gépeken is alkalmazható a CPU órajel-gazdálkodásának beállítása; további fortélyként. Ennek lekérdezésére létezik a Gnome alatt egy panel-applet, "CPU órajel-változás figyelő" néven, beállítani azonban ott semmit sem lehet. Bezzeg itt:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors conservative ondemand userspace powersave performance

Ezek a lehetőségeink. Az "ondemand" olyan 50%-on tartja a processzor órajelét, és szükség esetén felemeli maximumra, csak amíg szükséges. Ubuntun ez az alapértelmezett. A "powersave" igyekszik a minimumon tartani, a "performance" pedig maximális teljesítményt ad le. Fogalmam sincs, a maradék kettő mit csinál. :-) A "userspace"-szel gondolom, lehetőséget adunk hogy felhasználói programokkal egy-egy konkrét értékre lőjük be az órajelet, de a conservative...?
Lekérdezni és beállítani így lehet:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Fösvény kommunikáció

Ha éppen nem szükséges használni a vezetékmentes hálózatunkat, vagy a Bluetooth kapcsolatot, és nincs a laptopon megfelelő gomb ezek leállítására / elindítására, akkor letilthatjuk ezeket a parancssorból. Történetesen ugyanis egyes wifi driverek több energiát használnak, ha nem vagyunk kapcsolódva, mint ha fent lennénk a wifi hálón (!). Ha nagyon kell az energia, akkor futtassuk ezt le:

for i in `find /sys -name "rf_kill"`; do echo 1 > $i ; done
hciconfig hci0 down
rmmod hci_usb

(Feltéve, ha a Bluetooth eszközünk neve hci0. Ellenőrizni a hciconfig paranccsal lehet.)

Visszakapcsolás:

for i in `find /sys -name "rf_kill"`; do echo 0 > $i ; done
modprobe hci_usb
hciconfig hci0 up

És természetesen a felsorolt beállításokra egy szkriptet is fabrikálhatunk, amely megtesz nekünk mindent, ha nagy szükség van az utolsó millivoltra is:

#!/bin/bash
if [ `id -u` != "0" ]; then
echo "Csak root-kent futtathato!"
exit 1
fi
/sbin/hdparm -B 1 -S 240 /dev/sda
/bin/mount -o remount,relatime /
/bin/echo 1000 > /proc/sys/vm/dirty_writeback_centisecs
/bin/echo 1 > /sys/module/snd_ac97_codec/parameters/power_save
/bin/echo 1 > /dev/dsp
/bin/echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
/bin/echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
/bin/echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
/usr/bin/xset dpms 0 0 60
for i in `find /sys -name "rf_kill"`; do echo 1 > $i ; done
/usr/sbin/hciconfig hci0 down
/sbin/rmmod hci_usb
A visszakapcsoláshoz pedig:

#!/bin/bash
if [ `id -u` != "0" ]; then
echo "Csak root-kent futtathato!"
exit 1
fi
/sbin/hdparm -B 0 /dev/sda
/bin/echo 500 > /proc/sys/vm/dirty_writeback_centisecs
/bin/echo 0 > /sys/module/snd_ac97_codec/parameters/power_save
/bin/echo 0 > /sys/devices/system/cpu/sched_mc_power_savings
/bin/echo 0 > /sys/devices/system/cpu/sched_smt_power_savings
/bin/echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
for i in `find /sys -name "rf_kill"`; do echo 0 > $i ; done
/sbin/modprobe hci_usb
/usr/sbin/hciconfig hci0 up

Nevezzük el őket, készítsünk neki parancsikont az asztalunkra oszt máris jóidő. Felelősséget, szokás szerint, nem tudok vállalni a dologért. :-)

(Megjegyzés: már 1-2 napja megírtam ezt a postot, azóta szeretném kipróbálni, hogy ténylegesen van-e különbség a kisülés idejében, ha beállítom ezt a sok mindent. Azóta sem sikerült csalhatatlan bizonyítékot találnom. Szóval lehet, hogy ez olyasmi, mint a tuning autók hátsó ledes lámpái, amik a foton kibocsátással is "hozzájárulnak" az autó gyorsulásához.

Forrás

Rootkit ellen pedig gyökérfű...

Rootkit Hunter, ami jó.

Rootkit szkenner egy egyszerű eszköz, ami körülbelül 99.9* százalékban felderiti a gonosz kis dögöket. A program felderíti a rootkiteket, a hátsó ajtókat (backdoor) és exploitokat.A Rootkit Huntert ingyen használhatók.
(*Nem, nem igazán 99.9 százalék, a program csak egy plusz biztonsági réteg:)


http://www.rootkit.nl

2009. március 28., szombat

A Windows Intéző használata FTP kliensként

Ahhoz, hogy FTP kliensként használjuk az Intézőt, mindenekelőtt nyissuk meg a Hálózati helyeket, és válasszuk az Eszközök / Hálózati meghajtó csatlakoztatása... menüpontot. Megjelenik egy ablak, amelyben kattintsunk az Internetes tárolóhely regisztrálása vagy csatlakozás hálózati kiszolgálóhoz. linkre.

Elindul egy varázsló. Kattintsunk kétszer a Tovább gombra. Most elérkeztünk az FTP szerver címének megadásához. Ha például az UWnél van tárhelyünk, adjuk meg az ftp://ftp.uw.hu címet. Fontos megjegyezni, hogy a varázsló nem kínál fel lehetőséget arra az esetre, amikor az FTP kiszolgáló nem az alapértelmezett 21-es porton figyel. Így ha más porton keresztül szeretnénk kommunikálni, a cím végére írjuk be a portszámot is! Pl.: ftp://ftp.pelda.hu:22
Mivel az UW nem nyilvános FTP szerver, ezért a következő ablakban meg kell adnunk a bejelentkezéshez szükséges felhasználónevünket. A Tovább gomb megnyomása után nevet adhatunk az FTP helyünknek, később ezzel azonosíthatjuk, hogy melyik szerverről is van szó. A varázsló végül létrehozza a kapcsolatot a szerver és kliens között, és egy felugró ablakban a jelszó megadására szólít fel minket. Adjuk meg, valamint pipáljuk be a Jelszó mentése opciót.


A tárhelyet innentől kezdve úgy használhatjuk, mint bármilyen más intézős ablakot. Másolhatunk, kivághatunk, törölhetünk, átnevezhetünk fájlokat és mappákat, illetve más ablakokból is belehúzhatunk állományokat.

http://techline.hu/tudastar/20080831_intezo_ftp.aspx

2009. március 22., vasárnap

Thunderbird csatolmany ISO átnevezés mizéria

Tools -> Options -> Advanced -> General -> Config Editor, type mail.strictly_mime.parm_folding in the Filter:, and then double click on the 2 and change it to 0.

Ennyi.

2009. március 4., szerda

Proftpd telepítés alapjai Debianon

apt-get install proftpd ucf

Feltett kérdésre a válasz:
Run proftpd from inetd or standalone? – standalone


Szerkesztjük: /etc/proftpd/proftpd.conf
Módosítjuk ezt:
UseIPv6 off

Hozzáadjuk ezeket:
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Szerver kesz."

Futtatjuk a következő parancsokat:
ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf
/etc/init.d/proftpd restart

Érdemes kattintani: ide.

2009. február 21., szombat

Az fstab csoda

Eszköz Csatolási_pont Fájlrendszer-típus Csatolási_opciók Dump Check

/dev/hda2 / reiserfs defaults 1 1
/dev/hda6 /home reiserfs defaults 1 2
/dev/hda5 swap swap defaults 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,users 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,owner,users 0 0
/dev/hda7 /mnt/win0 vfat noauto,users,rw,uid=500 0 0
/dev/hda1 /mnt/win1 vfat noauto,users,ro 0 0
proc /proc proc defaults 0 0

A táblázat oszlopait kiegészítettem magyarázó címekkel, vegyük most ezeket egyenként sorra:

Az ELSŐ oszlopban azok az eszközök vannak amelyeken a fájlrendszerek lehetnek. Mint ahogy látható, az fstab fájlban nem csak a CD-ROM és a floppy meghajtók vannak felsorolva; ezen a példabeli számítógépen linux és windows rendszerek is üzemelnek, így több merevlemez-partíció vált szükségessé.
Megyjegyzendő ebben a listában a 'proc', ami valójában nem eszköznév és a '/proc' könyvtárban lévő fájlok sem találhatók meg a merevlemezen; azokat a rendszer generálja abból a célból, hogy sajátmagának információt szolgáltasson önnmagáról. Ezen a különlegességen kívül az összes többi bejegyzés elég könnyen érthető szabályok szerint épül fel.

A MÁSODIK oszlopban azok a helyek lettek megnevezve, ahol a fájlrendszereknek a könyvtárfán meg kell jelenniük (Emlékezzünk
arra, hogy ezeknek a könyvtáraknak már létezniük kell a merevlemezen, különben a felcsatolási művelet egy hibaüzenettel meg fog szakadni.)
A partíciók között - a csatolási pont szempontjából - az egyetlen kívétel a "swap"; ezt a merevlemez-partíciót a rendszer virtuális memóriaként használja abban az esetben, ha a fizikális memóriában nincs elegendő hely a futó programok számára. A "swap" valójában nincsen sehová felcsatolva a virtuális fájlrendszerben. (Ne is kíséreljük meg felcsatolni sehová! Hagyjuk úgy ahogy van!)

A HARMADIK oszlopban azon fájlrendszer-típusok vannak megnevezve, amelyek az első oszlopban lévő eszközökön találhatóak. A "reiserfs" ebben az esetben a linux saját fájlrendszere; láthajuk, hogy példánkban a gyökérkönyvtár (/) és a felhasználók szülő-könyvtára (/home) ilyen típusú. Van néhány "vfat" fájlrendszer is, amely a Windows és Linux rendszerek közötti fájlcserék lehetőségét szolgálja. A CD-ROM-ok és DVD-k fájlrendszerének típusa minden esetben 'iso9660'. A 'proc' és 'swap' fájlrendszerek különleges esetek, mint ahogy azt a fentiekben is írtam.

A NEGYEDIK oszlop az egymástól vesszővel (szóköz nélkül!) elválasztott felcsatolási opciókat tartalmazza. (Az összes felcsatolási opció megismeréséhez elolvashatjuk a mount kézikönyv oldalát, amelyhez a parancssorba ennyit kell beírnunk: man mount). Ebben a példafájlban a legáltalánosabban használt mount opciókat mutattam be. A 'defaults' többnyire megfelelő olyan fájlrendszerekhez, amelyeket boot-olás közben kell felcsatolni, azonban az eltávolítható médiákhoz (CD-ROM, DVD stb.) ajánlatos a 'noauto'-t használni annak az érdekében, hogy a rendszer a boot-kor ne próbálja meg azokat automatikusan mount-olni.

Alapértelmezettként a felhasználók nem csatolhatnak fel fájlrendszereket, ennek az engedélyezéséhez az opciókhoz hozzá kell adni még a 'users'-t is. A felhasználók felcsatolási engedélyének alapértelmezése 'ro,noexec', ami azt jelenti, hogy a fájlrendszer csak olvasható a felhasználó számára és onnan semmilyen progarmot nem lehet futtatni. A teljes hozzáféréshez így itt még megadhatjuk az 'rw,exec' ('írás-olvasás,futtatás')opciókat is. Az 'uid=' opció csak vfat és msdos fájlrendszerekhez használatos; mivel ezekben a fájlrendszerekben nem tárolnak tulajdonosi információkat, így ezzel az opcióval közöljük a rendszerrel, hogy ki lesz a tulajdonos. Ezen opció megadása nélkül a fájlrendszer mindíg annak a tulajdonába kerülne aki felcsatolta (automatikus felcsatolás esetén pedig a 'root' tulajdona lenne.)

Az ÖTÖDIK oszlopot a dump parancs használja annak a megállapításához, hogy miről kell backup-ot készíteni (1 = készíts backup-ot, 2 = ne készíts backup-ot).

A HATODIK oszlopot az fsck használja annak a megállapítására, hogy a rendszer bootolásakor melyik fájlrendszerekben keressen hibákat és milyen sorrendben. A '0' érték azt jelenti, hogy a fájlrendszer nem lesz automatikusan ellenőrizve (pl.: a floppy-kat és CD-ROM-okat nem lenne logikus ellenőrizni). A gyökésrpartíció számára az '1' értéket, a többi partíció számára pedig a '2' értéket szükséges megadni.

Forrás: slackware.hu

2009. február 5., csütörtök

Minden hozzáférés letiltása egy pillanat alatt

echo > /etc/nologin

echo karbantartás > /etc/nologin

A parancs elkészít egy nologin nevezetű fájlt az etc könyvtárban ami már üresen is elegendő ahhoz, hogy a felhasználók ne tudjanak belépni, de ha az echo parancs segítségével beleírjuk, hogy "karbantartás" akkor a felhasználók tudni is fogják, hogy miért nem tudnak belépni.