Gyakori Linux problémák és megoldásuk

Gubancok itt is vannak

Nagyon sokat fejlődtek az asztali Linux rendszerek úttörő időszakuk, a 2000-es évek eleje-közepe óta. Egyrészt már sokkal több alkalmazás érhető el Linux alá és azok minősége is nagyságrendeket javult (gondoljunk például a StarOffice, OpenOffice kezdeti minimális kompatibilitására a Microsoft formátumokkal). Másrészt a Windows desktop fejlődésével párhuzamosan – ma már sokak szerint azt megelőzve – bontakoztak ki a különféle ablakkezelő csomagok – például GNOME, KDE, Unity, Cinnamon –, egyre inkább van miért és mire váltani, ehhez kezdők számára előző cikkeinkben adtunk némi támpontot. Persze ha váltunk, akkor előbb-utóbb szembekerülünk a problémákkal is. Mostani írásunkban a Grub dual boot menüvel, a Wi-Fi-vel és az UEFI-val kapcsolatos gondokat részletezzük, a kezdő felhasználók számára könnyebben követhető automatikus megoldások mellett néhány parancssoros megoldást is ismertetve.

Sokan mondhatnák erre, hogy hohó, megfogtuk a Linuxot, hiszen csak ebben a cikkben három jelentős és nem mindig könnyen megoldható nehézségről számolunk be, és akkor hol van még a többi apróság és komolyabb probléma? Azonban had emlékeztessek minden kritikust arra, hogy ezen problémák jelentős része nem magában a Linuxban gyökerezik, hanem olykor más rendszerek (jellemzően a Windows, esetleg a Mac OS) és a hozzájuk üzletileg erősen kötődő hardvergyártók magatartásában. A zárt Windows driverekkel kapcsolatos jogi problémák sokáig képezték gátját a teljesebb támogatás megvalósításának, a Windows telepítője nem számol más operációs rendszerek létezésével és a rendszerindítót sajátjára cseréli, valamint az UEFI Secure Boot kialakításánál és bevezetésénél sem igen vették figyelembe, hogy valaki másik, a Windows 8-tól eltérő rendszert is szeretne esetleg a gépére telepíteni. Mindemellett próbáljon meg valaki egynémely Windows Vista alapú laptopra Windows XP-t vagy 7-et telepíteni és jó eséllyel kiderülhet, hogy a Wi-Fi (és egyéb) driver problémák nem csak a pingvinek háza táján okoznak gondokat. Gondok tehát mindenütt vannak, és a legtöbbször megoldásukra is jó esély van, Linux alatt is.

A Windows legyilkolta a Linuxomat?

Ritkán akad olyan probléma a mai Linux telepítőkkel, hogy ne tudnák tisztességesen elhelyezni a meglévő Windows mellé a Linuxot és a rendszerbetöltőt (ez manapság leginkább a Grub). Akkor már sokkal nagyobb gond, ha fordított sorrendben járunk el, először a Linux kerül a gépre, majd utána szeretnénk mellé költöztetni a Windowst is. Az is előfordul, hogy akár már évek óta jól elmuzsikálunk a kettős rendszerrel, mígnem egyszer – talán épp egy vírusfertőzés nyomán – újratelepítjük a Windowst és huss, a következő rendszerindításra Linuxunknak se híre, se hamva.

Itt még rendben megvan a Grub és mindkét operációs rendszer.
Itt még rendben megvan a Grub és mindkét operációs rendszer.

Pánikra nincs túl nagy ok, ilyenkor egyszerűen az történt, hogy a Windows bevetette saját rendszerbetöltőjét, kigyomlálva az előzőt, de tulajdonképpeni rendszerünket és adatainkat nem törölte le, csak nem tudunk azokhoz hozzáférni. Annyit kell tennünk, hogy visszatelepítjük az MBR-be az eredetileg ott működő, linuxos bootloadert.

A Boot-Repair előtelepítve megtalálható az Ubuntuból leágaztatott Boot-Repair-Disk live lemezen. Ha tehetjük, töltsük le és írjuk ki újraírható lemezre vagy pendrive-ra. Legegyszerűbb, ha ezt használjuk, a rendszer azonnal a tárgyra tér és elindítja a javító alkalmazást, csak meg kell nyomnunk a Recommended Repair gombot, a többi szerencsés esetben automatikus.

Ha valamiért a Boot-Repair-Disk esetünkben nem bevethető, akkor szükségünk lesz egy Live CD boot lemezre, lehetőleg pont abból a Linux verzióból, amit használunk, ezzel indítsuk el a gépet és válasszuk a kipróbálást.

A legtöbb mai disztro esetében nem kell elmerülnünk a parancssor rejtelmeiben sem, az Ubuntu esetében (és sok más Linux alatt is) használhatjuk a Boot-Repair alkalmazást, de a legtöbb esetben azt fel kell telepítenünk. Ezt az éppen futó Live rendszeren is megtehetjük a Szoftverközpontban, keressünk rá a Boot-Repairre és installáljuk.

Ugyanez parancssorból gyorsabban is elvégezhető, indítsuk el a terminált, majd kérjük az illetékes szoftverkönyvtár felvételét a telepítési források közé:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

Az Enter leütését követően már mehet a Boot-Repair csomag telepítése is:

sudo apt-get install -y boot-repair && (boot-repair &)

Ezek után az indítópulton már elérhető a Boot-Repair és igen egyszerűen használható az automatikus javítás. A Recommended Repair gombra kattintva a rendszer újratelepíti a rendszerindító rekordot, befűzi a helyére az elárvult Grub rendszerindítót, így visszaáll az eredeti boot menünk.

Emellett nem árt tudni, hogy sok másra is jó még a program, lementhetjük a partíciós táblákat és az indítórekordokat, készíthetünk egy Boot-Info listát, hogy könnyebben kérhessünk segítséget fórumokon rendszerindítási problémánkkal kapcsolatban. Beállítható az alapértelmezett operációs rendszer is vagy akár visszaállítható a Windows-kompatibilis MBR is.

Grub rendszerindító javítás parancssorból

Csodálkoznánk, ha a fent ismertetett automatikus Boot-Repair mutatvány bedőlne, de az ördög nem alszik, így aztán inkább leírjuk azt is, hogyan lehet parancssorból visszaállítani a rendszerindító menüt. Ez már kíván némi rálátást és hozzáértést, legalábbis ami a meghajtók elnevezését illeti, könnyen hazavághatjuk a rendszert még jobban egy hibás parancs kiadásával, így tovább csak úszóknak és saját felelősségre!

Mindenképpen szükségünk lesz a Grub csomagra, amit ezzel a paranccsal lehet éppen futó Live linuxunkba illeszteni:

sudo apt-get install grub

Némi nyugtázás után úgy fél perc alatt lefut a Grub csomag letöltése. A terminálban általában ezután elég a következő parancsot kiadnunk egy automatikus javításhoz:

sudo grub-install /dev/sda

Itt az sda akkor helytálló, ha az első (olykor egyetlen) SATA merevlemezen volt megtalálható az indító, de ha a másodikon, akkor már /dev/sdb lehet a helyes paraméter. Ha régi, szalagkábeles IDE (ATA) merevlemezünk van, akkor a parancs vége dev/hda vagy dev/hdb (és így tovább) lehet.

Olykor a grub-install nem leli, hogy melyik partíción vannak a Grub maradványai. (A Windows tapintatlan telepítője ugyanis csak az MBR-t írja felül, ha a Grub nem a Windows partícióra volt telepítve, akkor még mindig megtalálható ott, ahol volt.) Ilyenkor fel kell térképeznünk a helyzetet, ehhez be kell lépnünk Grub parancsorába, tehát a terminálba pötyögjük be, hogy:

sudo grub

Aki már kezelt mondjuk Fdisket anno még DOS alól, annak nem lesz túl ijesztő a környezet. A Tab billentyű kiírja az elérhető parancsok listáját és a help paranccsal kérhetünk segítséget a paraméterezésben, ha kellene. Most ki kell derítenünk, hogy a Grub hol székel, azt általában a

find /boot/grub/stage1

paranccsal tudható meg. Ez visszaadja a merevlemez és a partíció sorszámát, valahogy így: (hd0, 1), legalábbis, ha az első merevlemezről és a második partícióról van szó. (A Grubban nullától számozódnak a lemezek és a partíciók is.) Ha megvan, hogy hol vannak a Grub maradványok, akkor jöhet a Grubot tartalmazó root partíció azonosítása és az ennek megfelelően kialakított MBR visszaírása, majd kilépés vissza a terminálba:

root (hd0,1)

setup (hd0)

quit

A Grub maga megérne egy külön cikket és sok különféle szituáció adódhat a rendszer felépítésétől függően, így a parancssoros útmutatónk csak vázlatos tud lenni. Mindenesetre, amíg lehet, kezdő felhasználók inkább maradjanak a Boot-Repairnél.

Grub2 esetében így néz ki a javítás:

Adjuk ki a sudo fdisk -l parancsot, ez megmutatja, hogy milyen partícióink vannak, és meg tudjuk nézni, hogy melyik merevlemezen van a root partíció. (Ez van megcsillagozva a táblázat indítás oszlopában.) A parancsok rendszergazdai hozzáférést követelnek, ezért meg kell majd adnunk jelszavunkat is.


Ezután csatoljuk a fájlrendszerbe azt a partíciót, ahol a root fájlrendszerünk van:

sudo mount /dev/sdxY /mnt

x: a .. b .. c .. attól függően, hogy mit láttunk az fdisk kimenetében.

Y: a root partíció száma.

Ezzel a paranccsal lehet újratelepíteni a Grub2-t:

sudo grub-install --boot-directory=/mnt/boot /dev/sda

A régi Grubot pedig ezzel:

sudo grub-install --root-directory=/mnt /dev/sda

Wi-Fi használata Linux alatt Windows driverekkel

Alapvetően más tapasztalataink lesznek a meghajtóprogramokkal kapcsolatban Linux alatt, mint amit Windowson megszokhattunk. A Windows telepítése során egy általános driverkészlettel látja el a rendszert, így – hacsak nem előtelepített laptopot vettünk – egyből kezdődhet a megfelelő driverek kézi installálása, letöltésekből vagy a hardver komponensekhez, perifériákhoz mellékelt lemezekről. A Linux a legtöbb esetben ehhez képest elkényezteti a felhasználót, nem szükséges semmilyen drivert letölteni és feltelepíteni, kapásból megfelelően működik a videokártya, jó esetben a hálózati adapterek és a hang is megy. (Ez utóbbi nem csoda, hisz a legtöbb alaplapon egy olcsó AC97 vagy HD Audio chip van). Akkor van baj, ha valami mégsem kerek, a leggyakoribb probléma például, hogy a különféle Wi-Fi adaptereket nem ismeri fel a telepítő.

Ilyenkor segíthet egy újabb, frissebb kernelre alapuló Linux kiadás telepítése, persze megfelelő adatmentés után. Egyes kiadások pedig megengedőbbek a zárt forráskódú driverek alkalmazását illetően, ezekre áttérve megeshet, hogy mégis működik a rendszerünk. Ilyen például a mostanában elég sokat dicsért Linux Mint, legalábbis annak Európába szánt kiadása.

Látványos tud lenni a Mint Cinnamon ablakkezelővel – forrás Flickr, growdigital
Látványos tud lenni a Mint Cinnamon ablakkezelővel – forrás Flickr, growdigital

Persze nem biztos, hogy az áttérés megoldja a problémát és bizonyára okkal használtuk eddig azt a disztribúciót, amit. Mindenesetre egy Mint Live ISO letöltése és indítólemezzé gyúrása után könnyen meggyőződhetünk róla, hogy a Mint vajon elboldogul-e elárvult vezérlőnkkel. Ha nem, vagy ha semmiképp sem szeretnénk disztribúciót váltani, akkor még mindig van egy út előttünk, de ehhez kicsit mélyebbre kell ásnunk. Persze internetkapcsolatra szükségünk lesz – legalábbis így a legkényelmesebb a szervizelés –, ezért egy átmeneti időszakra váltsunk vissza kábeles internet hozzáférésre.

Mentő megoldásként érdemes igénybe venni az Ndiswrapper szolgáltatásait. Ez egy olyan program, ami Linux alatt leutánozza a Windows hálózati adaptereket kézben tartó NDIS API működését, olyan hatékonyan, hogy a gyári Windows hálózati eszközök drivereit is képes működtetni. Azaz, ha nem tudunk Linux drivert szerezni a Wi-Fi adapterhez, akkor elég, ha megvan hozzá a Windows XP driver és az Ndiswrapper segítségével ezt beilleszthetjük a rendszerbe. A program PCI, USB és PCMCIA csatolófelületű eszközökkel egyaránt tud dolgozni.

Az ingyenes szoftver megtalálható az Ubuntu Universe telepítőforrásban, ha a Szoftverközpontban rákeresünk az Ndiswrapperre, akkor előfordulhat, hogy kérnünk kell a Universe forrás használatát, de ez csak plusz egy kattintásunkba kerül.

Ezután máris előttünk az Ndiswrapper Driver Installation Tool (leánykori nevén ndisgtk), jelöljük be hozzá az opcionális csomagokat és mehet a telepítés. Az Ndiswrapper maga parancssori eszköz, de az ndisgtkban olyan hatékony grafikus front-end (kezelőfelület) jár hozzá, hogy általában felesleges gépeléssel bajlódnunk.

Persze az eredeti Wi-Fi driverekre nem telepítőcsomagos megtestesülésükben lesz szükségünk, hanem pőrén, csak a lényegre koncentrálva. Konkrétan az inf és sys állományokat kell valamiképpen kicsomagolni a telepítőkészletből, vagy letölteni az internetről, esetleg átemelni a párhuzamos Windows partícióról. Ezeket gyűjtsük össze home mappánk alatt egy bölcsen elnevezett (pl. wifidriver) alkönyvtárban. Indítsuk el az imént telepített ndisgtket, mutassuk meg neki az inf és sys fájlokat tartalmazó mappánkat és készen is vagyunk.

Lehetnek még problémáink, amennyiben a rendszer telepítéskor ugyan felismerte, de nem tudta működésre bírni az adaptert, ekkor a Linux drivert feketelistára (blacklistre) kell tenni. Itt már nem ússzuk meg a terminált és a hardver eszközlisták böngészését, és az eljárás összességében elég bonyolult ahhoz, hogy megérjen egy külön ismertetőt.

Az Ndiswrapper egy bevált megoldás, grafikus felület is van hozzá, de megvannak a korlátai. Nem implementálják a készítők az NDIS 6 API-t, ami lehetővé tenné Windows Vista és Windows 7 alá készült driverek adoptálását. Gondot okozhat az is, hogy kevés 64 bites driver érhető el Windows XP-re, viszont egyre többen telepítenének 64 bites Linuxot (ezen csak 64 bites eredeti drivert tud használni az Ndiswrapper). Mindenesetre a régi gépek Wi-Fi problémáit hatékonyan orvosolhatjuk vele, ha más megoldás nincs, akkor érdemes kipróbálni. Ha kudarcot vallanánk, akkor mentő megoldás lehet egy olyan külső PCMCIA vagy USB Wi-Fi adapter használata, mely szerepel az operációs rendszer kompatibilitási listáján, az Ubuntu minősített hálózati komponens listája itt található.

UEFI: Linux telepítés Windows 8-as gépre

Korunk csodája és valamelyest botránykönyve is az UEFI, mely gyakorlatilag a jó öreg BIOS utódja. Egy igen összetett, saját driverekkel és felülettel dolgozó rendszer, mellyel sokkal hamarabb és biztonságosabban indítható a rendszer. Egyre több laptopon található meg, azokon, amelyeket Windows 8-cal előtelepítve szállítanak. Amiért mégsem tapsikolunk önfeledten e trend kapcsán, az annak köszönhető, hogy hónapokig gyakorlatilag csak a Windows 8 volt telepíthető az UEFI-s gépekre.

Az operációs rendszer indítása előtt ugyanis az UEFI Secure Boot funkciója megvizsgálja a kernelt és csak akkor adja át neki a vezérlést, ha rendben lévőnek ítéli a benne elhelyezett digitális aláírást. Ehhez persze az alaplap (laptop) firmware-ében a gyártók el kellett, hogy helyezzék az érvényes kulcsok készletét, ezt a készletet viszont egyelőre csak a Microsofttal egyeztették le, vagyis csak az új Windows kernelek indulnak üzembiztosan Secure Boot alatt. A Microsoft hajlandó ugyan saját kulcskészletét részben megosztani a Linux közösséggel, de ez a megoldás persze nem talált osztatlan támogatókra a túloldalon és legfeljebb ideiglenes támaszul szolgálhat. Áthidaló megoldás lehet az UEFI Secure Boot kikapcsolása, de az biztos, hogy a helyzet OS-politikailag nem tekinthető ideálisnak.

Nem tudni mikorra rendeződik el megnyugtatóan az UEFI ügy, mindenesetre már jelentek meg Secure Boot kompatibilis Linux lemezképek, ilyen például az Ubuntu 12.04.2 LTS és minden ennél újabb, 64 bites kiadás (32 bites kernelt nem enged elindulni a Secure Boot, így az új vasakon kénytelenek leszünk lemondani régi rendszerek futtatásáról). Készítsük el valamelyikből a telepítőlemezt vagy pendrive-ot. Mielőtt telepítenénk, az Ubuntu help javasolja, hogy az UEFI menük mélyén elrejtett beállításokban tiltsuk le a QuickBoot/FastBoot, Intel Smart Response (SRT) és a Windows 8-ban a FastStartup opciókat – fogadjuk meg a tanácsait. (Hogy miként léphetünk be az UEFI és BIOS menükbe, azt az alábbi szakaszban ismertetjük a Secure Boot kikapcsolása kapcsán). Ha minden beállítás megfelelő, akkor bootoljunk a telepítőlemezről és válasszuk a Try Ubuntu opciót, majd onnan telepítsük a rendszert a szokásos módon, a meglévő Windows megtartását választva. Ha nem kapunk Secure Boot vagy Signature hibát, akkor örvendezzünk, és ha még a boot menü is működik és felkínálja mind a Windows 8, mind az Ubuntu pontokat, akkor gyakorlatilag nyertünk.

Amennyiben gond lenne a boot során (csak a Windows indul el vagy épp az nem), akkor irány ismét a Live Linux boot. Itt a már ismert módon indítsuk el (ha kell, telepítsük) a Boot-Repairt és adjunk egy esélyt a Recommended Repair gombnak. (Számítva a további bonyodalmakra érdemes lejegyzetelni az URL-t, amit a program ilyenkor kiír, erre hivatkozva hathatósabb szakmai segítséget tudunk majd kérni a help.ubuntu.comon, ingyenes regisztráció fejében).

UEFI Secure Boot kikapcsolása

Fontos tudni, hogy ha a gyári Windows 8 mellé szeretnénk egy Linuxot második operációs rendszernek, akkor azt szintén UEFI rendszerben kell feltelepítenünk, így csak a fentebb ismertetett út járható. Ha viszont tudunk élni a Windows 8 újdonságai és csempés felülete nélkül, azaz magában használnánk a Linuxot, akkor sok gondtól kímélhetjük meg magunkat az UEFI Secure Boot kikapcsolásával. Ez sajnos nem megy úgy, mint régen, a DEL és F2 kombinációkkal a márkás laptopokon nem léphetünk be az UEFI/BIOS menübe. El kell indítanunk a Windows 8-at, onnan tudjuk elérni a rendszer beállításait.

Irány a Windows 8 Gépház, melynek indítógombja a csempés felület jobb oldalról becsúszó Beállítások paneljén van. A Beállítások menüt a jobb képernyőszéltől befelé simítva, vagy érintés hiányában az egeret a jobb felső sarokból lefelé mozgatva hívhatjuk elő. Válasszuk alul a Gépház opciót.

A Gépház bal oldali kategóriái között az Általános pontra kattintva jobb oldalt keressük meg a Speciális rendszerindítást és válasszuk az Újraindítás most pontot. Az itt megjelenő boot opciós menüben kérjük a Hibaelhárítás pontot, ezen belül pedig válasszuk a Speciális lehetőségeket, majd az Indítási beállításokat. Csak itt érhetjük el az Újraindítás gombot, ami az UEFI konfigurációs menüjét hozza fel végre. Még „szerencse”, hogy olyan egyszerű idáig eljutni, és még egy minotaurusszal sem futottunk össze.

Az UEFI-vezérlőprogram beállításai menüpontot kiválasztva a BIOS/firmware kulcsszavakat keressük, ezek vezetnek el a régi BIOS menü megfelelőjébe, itt már karakteres módra vált a rendszer. A firmware beállítások hasonlóak a régi BIOS-okban megszokotthoz. Keressük meg a Secure Boot opciót (Security menü) és állítsuk Disabledre. Ellenőrizzük a Boot menü beállításait és ne felejtsük el menteni a beállításokat kilépéskor.

Érdemes figyelembe venni, hogy egyes Samsung noteszgépek (a 300E5C, NP700Z5C, NP700Z7C és NP900X4C szériák biztosan érintettek) „belehalhatnak” abba, ha Linuxot próbálunk telepíteni rájuk, függetlenül attól, hogy a Secure Boot aktív-e vagy sem. A probléma a Samsung UEFI implementációjába épített eszközmeghajtóval van, mely megváltoztatja az alaplapi NVRAM tartalmát (ez tárolja a BIOS/UEFI beállításokat). Ezt kikerülendő a legújabb kernelváltozatok már úgy bootolnak, hogy nem aktiválják a hibás drivereket (Ubuntu esetében a javítás a 12.04.2 LTS kiadásban már megtalálható). Ha a baj megtörtént, akkor a laptop szétszerelésével és a gombelem eltávolításával orvosolható a hiba, de ilyenkor a garanciáról le kell mondanunk, mivel szétszedtük a gépet, szóval jobbára marad a szerviz.

Azóta történt

Előzmények