linux

Közös linux-windows partíció

Talán kevesen tudják, de nem csak a FAT32 a járható út, ha olyan partícióra van szükség, ami linux és windows alatt is egyaránt írható és olvasható. Előbbi rendszerhez létezik egy (freeware) IFS driver, amivel az ext2 partíciókat lehet írni-olvasni. Végül is logikus lépés, a Microsoft úgysem nyitja meg az NTFS specifikációját, az ext2-é pedig úgyis opensource, akkor már nem nehéz összeütni hozzá egy windows drivert.

Ext2 Installable File System for Windows

nvidia driver vs. udev

Végre sikerült rájönni, hogy miért kell minden bootolás után újratelepíteni az nvidia drivert. A megoldás egyszerű:

# cat /etc/udev/links.conf
...
M nvidia0       c 195 0
M nvidia1       c 195 1
M nvidiactl     c 195 255

Sajnos egy régi tnt2 chipes videokártyám van, amihez már nincs új driver, így a 7174-essel (2005 március) tudom csak hajtani. Tudom, nem mai darab, de nekem még megfelel(ne, ha lenne hozzá később is driver). Az nvidia jóvoltából előbb-utóbb le fogom cserélni, de az már nem nvidia lesz.

SMART error

Annyira szeretem, hogy mindig olyan hibákat találok, amit még senki sem látott, vagy a google sem ad rá értelmezhető választ (illetve én nem tudok hozzá megfelelő kulcsszavakat). Most például egy SMART hibát kaptam ki:

Offline_Uncorrectable error at sector 313962848.

Mindez nem sokkal azután, hogy beszereztem egy második winyót is, és RAID1-be kötöttem őket, vagyis egy részüket.

A hibát elvileg egyszerűen lehetne javítani, s az elektronika is megtehetné magától, de valamiért nem sikerült neki. Így kézzel kell csinálnom. Ez annyiból állna, hogy teleírom nullákkal az adott néhányszor 512 bájtot és kész. Az elektronika elintézi, hogy utána az ide irányuló írások, olvasások át legyenek irányítva egy jó szektorra.

A galiba azonban ott kezdődik, hogy nekem nincs ilyen szektorom. Legalábbis alapból nem látszik, fdisk kevesebbet mutat, s dd-vel sem tudok a megadott címre írni. Az utolsó néhány szektorról van szó, ezeket gondolom fenntartja magának a winyó.

A smartmontools support listáján a Large Disk HOWTO
READ NATIVE MAX ADDRESS / SET MAX ADDRESS alfejezetét ajánlották olvasgatásra, de igazából ettől sem lettem okosabb.

A dolog amúgy azért is zavaró, mert a smartd félóránként jelzi a logban, hogy baj van. A fenti howto-ban található setmax programot is próbálgattam, de csak 137 gigabájtosnak minősítette az egyébként 160-as diszkeket.

szoftveres RAID tanulságok

Néhány tanulság szoftveres RAID1 témában (linux), ami miatt pörgettem néhányszor.

  1. Ha PCI-os RAID/ATA vezérlőt használunk, akkor ténylegesen is forgassuk bele a kernelbe a hozzá való drivert, ne csak modulba. Tudom, triviális, de én nem vagyok hozzászokva a modulos kernelhez, és rutinosan csak egy szóközt nyomtam a make menuconfigban az opcióra. Aztán csodálkoztam a bootolási sorrenden:
    1. betölti a kernel az alaplapi IDE vezérlő driverét, felismeri a rajta lévő partíciókat
    2. nekiáll keresni a raid-es partíciókat
    3. felismeri a raid kártyát, és a rajta lévő winyókat

    Ha bele van fordítva a kernelbe a driver, akkor a, c, b a sorrend, és akkor lehet bootolni a raidkártyán lógó winyóról is.

  2. Ha másolni kell az egész / partíciót, akkor ne a cp-vel másoljuk, hanem inkább a
    find / -xdev | cpio -pm /mnt/newroot parancsot használjuk. Ez létrehozza a /dev -en belüli eszközöket is, ellentétben a cp-vel.
  3. Egy partíción is lehet RAID1-et (mirroring) csinálni, de kell egy másik is, amit missing-nek kell beállítani. Aztán később olyan partíciót adunk még hozzá amit akarunk (mdadm --add /dev/mdX /dev/hdxy).
  4. RAID-ről lilozva a lilo -t ilyeneket ír:

    The map file has *NOT* been updated.
    The boot record of /dev/md0 has *NOT* been updated.
    The Master boot record of /dev/hda has *NOT* been updated.
    The Master boot record of /dev/hde has *NOT* been updated.

    Ez így ugye nem tökéletes, de minden doksiban arról volt szó, hogy a -t kapcsolóval próbálgassuk először, ne élesben. Viszont ilyenkor ez nem számít hibaüzenetnek, s csak a -t kapcsolót kell lehagyni, és jó lesz.

  5. Állítólag a swapet is érdemes RAID1-re tenni, s nem a kernel által alapértelmezetten támogatott /etc/fstab beli pri= paramétert megadni két swap partíciónak. RAID-del ugyanis nem fog lehalni a rendszer ha menet közben kiesik egy winyó

LinEAK

Már egy ideje próbálkozom linux alatt a billentyűzeteimen lévő extra gombok beüzemelésével, de sajnos sosem sikerült. Erre való a LinEAK, de mindig a következő hibával találkoztam, s nem tudtam mit kezdeni vele.

*** Xlib error caught ***
Major opcode of failed request: 33 (XKEYBOARD)
Minor opcode of failed request: 0 (XkbSetMap)
Resource ID of failed request: 125
Serial number of failed request: 39
Error code: 10
Type: 0
Maybe we should exit now?

Most végre rájöttem. Ez csak azért van, mert az X már hamarabb lekezel egy-egy gombot (bár ebben nem vagyok egészen biztos, de némi köze lehet az igazsághoz). Ez a következőképpen lehet megnézni:

$ xmodmap -pke
...
keycode 160 = XF86AudioMute
...

Két megoldás van. Először is módosíthatod az xmodmappel ezeket a beállításokat, vagy kiszeded a ~/.lineak/lineakd.conf-ból ezeket, az X által lekezelt gombokat. Nálam a következő kettő volt problémás:

#Mute =
#Next =

Ezután már hibaüzenet nélkül elindult a lineakd.

A másik lehetőség az billentyűzettérkép átállítása az xmodmappel. Először elmentjük a régi beállításokat:

xmodmap -pke > ~/.xmodmaprc

Az extra gombok megnyomásakor keletkező XF86* eseményeket az xev paranccsal lehet kideríteni. A némítás gomb megnyomásakor például egy ilyen esemény keletkezik:

...
KeyRelease event, serial 23, synthetic NO, window 0x3400001,
    root 0x7d, subw 0x0, time 882632, (334,442), root:(338,489),
    state 0x10, keycode 160 (keysym 0x1008ff12, XF86AudioMute), same_screen YES,
    XLookupString gives 0 bytes:  ""

...

Tehát az előbb létrehozott ~/.xmodmaprc fájlból kell eltávolítani a 160-as billentyűkódhoz rendelt XF86AudioMutere történő hivatkozást. A szerkesztés után az én esetemben így néz ki a fájl előbb már bemutatott sora:

keycode 160 =

Majd visszatöltjük az új beállításokat:

$ xmodmap ~/.xmodmaprc

Ezután már nem kezeli le az X a gombot, maradhat a lineakdnek a feladat. Újabb xev teszt:

...
KeyRelease event, serial 28, synthetic NO, window 0x3200001,
    root 0x7d, subw 0x0, time 1047755, (285,488), root:(289,535),
    state 0x10, keycode 160 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:  ""
...

Esetlegesen még szükséges lehet a setxkbmap parancs kiadása is, például a következő módon:

setxkbmap -model pc105 -layout hu -variant basic
KDE esetén az xmodmap futtatására létre lehet hozni egy szkriptet a ~/.kde/Autostart/ könyvtárban (bármilyen néven).
#!/bin/bash
xmodmap ~/.xmodmaprc
Néhány lineakd szkript, illetve beállítás:
# group media
Media = xmms --play
Stop = xmms --stop
Next = xmms --fwd
Play|Pause = xmms --pause
Previous = xmms --rew

# last group
Calculator = kcalc
My Computer = /usr/bin/kdesktop_lock --forcelock
Sleep = ~/.lineak/scripts/sleep

# volume
VolumeDown = dcop kmix Mixer0 decreaseVolume 0
VolumeUp = dcop kmix Mixer0 increaseVolume 0
Mute = ~/.lineak/scripts/mute
A hivatkozott szkriptek:
$ cat .lineak/scripts/mute
#!/bin/bash

if [ $(dcop kmix Mixer0 mute 0) = true ]
then
    dcop kmix Mixer0 setMute 0 false
else
    dcop kmix Mixer0 setMute 0 true
fi
$ cat .lineak/scripts/sleep
#!/bin/sh
xset dpms force off
/usr/bin/kdesktop_lock --forcelock
Felhasznált irodalom:

dvd írás

Végre rájöttem hogyan tudom megoldani a dvd írást linux alatt, ha az iso-t csak vfat-on vagy fat32-n tudom tárolni. Szobatársnak nincs mindig itt az ext3-as winyója, így a 4 gigánál nagyonn iso-kat nem tudom feltölteni hozzá a fájlméret-korlát miatt.

A megoldás a darabolás. Szokás szerint elkészítem az iso-t a saját gépemen, feldarabolom néhány száz megabájtos darabokra, melyeket feltöltök, majd egyszerűen kiírom a következő paranccsal:

cat * | growisofs -dvd-compat -speed=2 -Z /dev/hdc=/dev/fd/0

Persze a *-ra vigyázni kell, nehogy más fájlok is belekerüljenek.

Tartalom átvétel