Debian - uniwersalna instalacja/Instalacja Debiana na nForce2 i dyskach SATA
Wojciech "voytech" Krężel <darkinn@w3.pl> http://www.darkinn.w3.pl/
Zainstalowanie Debiana GNU/Linux 3.0r1 na dyskach Serial ATA jest o tyle trudne, że żadne z jąder systemu zamieszczonych w dystrybucji nie wspiera najpopularniejszego kontrolera SATA - Silicon Image 3112. Kontroler ten, standardowo montowany jest w płytach głównych opartych na chipsecie nForce2. W tym artykule chciałbym podzielić się moimi uwagami odnośnie instalacji i konfiguracji Debiana na takiej właśnie płycie głównej.
Na pewno sposób przedstawiony przeze mnie nie jest elegancki. Na pewno można to zrobić szybciej, prościej i lepiej, ale ma on jedną niezaprzeczalną zaletę - działa. A to nie jest bez znaczenia, o czym przekonacie się "googlując" w poszukiwaniu lepszych pomysłów ;-)
Przed instalacją systemu
[edytuj]Przygotowanie jądra
[edytuj]Pobieramy z Internetu najnowsze stabilne źródła jądra Linux i kopiujemy je do katalogu /usr/src/. Tam je rozpakowujemy, tworzymy link symboliczny i konfigurujemy jądro:
# cd /usr/src/ # tar zxf linux-2.4.21.tar.gz # ln -s linux-2.4.21 linux # cd linux # make menuconfig
Ponieważ chcemy zbudować monolityczne jądro, ale z obsługą modułów, to upewniamy się, że mamy włączone takie opcje:
- Code maturity level options -> Prompt for development and/or incomplete code/drivers
- Loadable module support -> Enable loadable module support
- Block devices -> Normal floppy disk support
- Block devices -> RAM disk support
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> Include IDE/ATAPI CDROM support
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> PCI IDE Chipset support
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> AMD Viper support
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> Silicon Image chipset support
- Network device support -> Ethernet (10 or 100Mbit) -> 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support
- File systems -> Ext3 journaling file system support
- File systems -> Second extended fs support
i wyłączone takie opcje:
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> AMD Viper ATA-66 Override
Następnie kompilujemy jądro:
# make dep # make bzImage
Przygotowanie dyskietek startowych
[edytuj]Teraz tworzymy dyskietki startowe, dzięki którym będziemy mogli rozpocząć instalację systemu. Wkładamy pierwszą płytę instalacyjną Debiana do napędu CD-ROM i montujemy ją. Potem wkładamy pierwszą dyskietkę, aby utworzyć dyskietkę ratunkową (ang. rescue disk):
# mount /cdrom # dd if=/cdrom/dists/stable/main/disks-i386/current/images-1.44/bf2.4/rescue.bin of=/dev/fd0
Następnie montujemy dyskietkę i podmieniamy umieszczone na niej jądro na jądro zbudowane przez nas:
# mount /floppy # cp /usr/src/linux/arch/i386/boot/bzImage /floppy/linux.bin # umount /floppy
Teraz wkładamy drugą dyskietkę i tworzymy dyskietkę główną (ang. root disk):
# dd if=/cdrom/dists/stable/main/disks-i386/current/images-1.44/bf2.4/root.bin of=/dev/fd0 # umount /cdrom
Instalacja systemu
[edytuj]Teraz wreszcie możemy przejść do naszego komputera z chipsetem nForce2 na "pokładzie". Uruchamiamy go z pierwszej dyskietki, a gdy zostaniemy o to poproszeni, to wkładamy drugą. Powinien się wtedy uruchomić instalator z CD-ROMu, o ile włożyliśmy do niego wcześniej płytkę.
Mamy teraz dwie możliwości: jeśli nasza płyta ma obydwie karty sieciowe umieszczone na złączu ATX (jak np. Asus A7N8X Deluxe), to sieć powinna nam działać podczas instalacji. Jeżeli natomiast drugą "sieciówkę" mamy na karcie ACR (jak np. WinFast K7NCR18GPro-2), to do instalacji muszą nam wystarczyć posiadane CD z dystrybucją. Kończymy instalację zapamiętując, którą partycję mamy podmontowaną jako partycję główną (ang. root). Dyski SATA powinny być rozpoznane przez system jako /dev/hde i /dev/hdg. Rebootujemy komputer.
Po reboocie system nie chce nam się uruchomić... Bez obaw. Jest to zupełnie prawidłowy objaw, gdyż podczas instalacji na dysku zostało umieszczone jądro z płyty CD, a nie z naszej dyskietki. Musimy znów przejść do drugiego Linuksa.
Wkładamy pustą dyskietkę, tworzymy ją bootowalną, po czym znowu podmieniamy jądro na przygotowane przez nas:
# mkboot # mount /floppy # cp /usr/src/linux/arch/i386/boot/bzImage /floppy/vmlinuz # umount /floppy
Bootujemy komputer z nForcem2 z dyskietki i gdy zgłosi się LILO, to wpisujemy
# linux root=/dev/hdeX
Oczywiście zamiast X podajemy numer naszej partycji głównej, np. /dev/hde3 .
To jeszcze nie koniec "zabawy" ;-) Gdy już się uruchomi system, musimy podmienić jądro na dysku twardym i zaktualizować plik /etc/lilo.conf :
# mount /floppy # cp /floppy/vmlinuz /boot/vmlinuz-rescue # vi /etc/lilo.conf
Dopisujemy w nim następujące linijki:
image=/boot/vmlinuz-rescue label=rescue read-only
i wydajemy polecenia:
# lilo # umount /floppy
Wyjmujemy dyskietkę i wreszcie możemy zbootować Debiana z naszego dysku Serial ATA :-)
Po instalacji systemu
[edytuj]Kompilacja jądra i instalacja sterowników
[edytuj]Teraz będą nam potrzebne źródła jądra Linux i sterowniki do chipsetu nForce2. Jeśli nasz komputer jest podłączony do Sieci, to pobieramy je wprost z Internetu. Jeżeli nie mamy połączenia z Internetem, to musimy pobrać kody źródłowe z innej maszyny i przenieść je na jakimś nośniku.
Źródła najnowszej stabilnej wersji Linuksa możemy pobrać spod adresu ftp://sunsite.icm.edu.pl/pub/Linux/kernel/v2.4/linux-2.4.21.tar.gz, zaś sterowniki do chipsetu nForce2 stąd - http://download.nvidia.com/XFree86/nforce/1.0-0261/NVIDIA_nforce-1.0-0261.tar.gz.
Poniższa komenda zainstaluje pakiety, które są niezbędne do kompilacji kernela:
# apt-get install bin86 gcc libncurses5-dev make libc6-dev
Kompilujemy jądro, tym razem z obsługą modułów, pamiętając o włączeniu wyżej wymienionych funkcji oraz o następujących rzeczach:
1. niektórzy ludzie zalecają wyłączenie opcji
- Processor type and features -> Local APIC support on uniprocessors
- Processor type and features -> IO-APIC support on uniprocessors
- General setup -> Power Management support -> ACPI support
ze względu na problemy z działaniem (w jądrach do wersji 2.4.21-rc2-ac2). Na używanym przez mnie jądrze 2.4.21 nie stwierdziłem żadnych problemów, ale proszę mieć na uwadze te opinie.
2. niektórzy ludzie doradzają wyłączenie opcji
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> Generic PCI IDE Chipset Support
, ponieważ drastycznie wpływa na wydajność systemu. Dzieje się tak, gdyż Linux używa sterowników Generic IDE zamiast natywnych dla chipsetu, gdy obydwa są wkompilowane w jądro. Obsługą chipsetu nForce2 zajmuje się wspomniany już sterownik, który włączamy za pomocą opcji
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> AMD Viper support
3. niektórzy ludzie zalecają następujące ustawienie opcji kompilacji CFLAGS i HOSTCFLAGS w pliku Makefile:
-O3 -mcpu=athlon-xp -march=athlon -pipe -msse -mfpmath=sse,387
Ja tego nie testowałem.
4. do włączenia obsługi USB służą opcje
- USB support -> Support for USB -> Preliminary USB device filesystem
- USB support -> Support for USB -> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
- USB support -> Support for USB -> EHCI HCD (USB 2.0) support (EXPERIMENTAL) (NEW)
Można również włączyć inne funkcje, z których chce się korzystać.
5. do włączenia obsługi FireWire służy opcja
- IEEE 1394 (FireWire) support (EXPERIMENTAL) -> OHCI-1394 support
6. do obsługi wbudowanej karty dźwiękowej można wykorzystać sterownik nVidii, bądź użyć sterownika dołączonego do jądra. Gdybyście chcieli skorzystać ze sterownika wchodzącego w skład źródeł Linuksa, to podczas konfiguracji kernela musicie włączyć opcję:
- Sound -> Sound card support -> Intel ICH (i8xx), SiS 7012, NVidia nForce Audio or AMD 768/811x
7. podobno wbudowana karta sieciowa 3Com działa na znajdującym się w źródłach jądra 2.4.21 sterowniku 3c59x:
- Network device support -> Ethernet (10 or 100Mbit) -> 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support
Napisałem podobno, gdyż w mojej płycie głównej sieciówka była umieszczona na karcie ACR, przez co stała się dla mnie bezużyteczna.
Jeżeli jednak sieciówka nie zadziała na tym sterowniku, to skopiujcie sterownik z płyty CD dołączonej do płyty głównej:
# cp /cdrom/ścieżka/dostępu/3c90x-103.tar.gz /usr/src # cd /usr/src # tar zxf 3c90x-103.tar.gz # cd 3c90x-103
Niektórzy ludzie zalecają także odkomentowanie w pliku 3c90x.h następującej linii:
// #define BRIDGEPORT_SUPPORT 1 // 3c9201
oraz wydanie później komend:
# ./compile_UP # ./install3c90x
8. do obsługi softwarowego RAID-u umieszczonego na płycie (tak, tak, to nie jest sprzętowy RAID - jego działanie opiera się na windowsowym sterowniku) można użyć opcji:
- ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices -> Silicon Image Medley software RAID (EXPERIMENTAL)
W pomocy do tej opcji możemy przeczytać:
Note, that Linux does not use the Raid implementation in BIOS, and the main purpose for this feature is to retain compatibility and data integrity with other OS-es, using the same disk array. Linux has its own Raid drivers, which you should use if you need better performance.
Myślę, że możemy zatem bez obaw zignorować tę opcję, jeżeli nie będziemy mieli zainstalowanych dwóch systemów operacyjnych.
Niektórzy ludzie radzą, żeby przed kompilacją sterownika nForce wykonać następujące czynności:
# cd /usr/src/linux/include/linux # mv malloc.h malloc.h.org # ln -s slab.h malloc.h
, co pozwoli uniknąć błędów podczas kompilacji. Sugerowana jest również zmiana -falign-functions=4 na -malign-functions=4 w pliku Makefile dla nvnet, jeżeli używamy kompilatora gcc w wersji 2.95.
U mnie na szczęście te zabiegi nie były konieczne. Przystępujemy zatem do rozpakowania sterownika nForce i jego kompilacji:
# tar zxf NVIDIA_nforce-1.0-0261.tar.gz # cd /usr/src/nforce # make # make install
NOTATKA
Głupia sprawa, ale podczas wielu testów i kompilacji zdarzyło się, że kilka razy wyskakiwał mi błąd "Unresolved symbols" w pliku nvaudio.o . W zasadzie do końca nie wiem, co pomogło, ale wydaje mi się, że "lekarstwem" w takich przypadkach jest komenda make mrproper i ponowna kompilacja jądra.
Tworzymy teraz plik /etc/modutils/local i wpisujemy do niego:
alias parport_lowlevel parport_pc alias usb-controller usb-ohci alias usb-controller1 ehci-hcd alias usb-interface usb-ohci alias ieee1394-controller ohci1394 # W zależności, która sieciówka jest u was rozpoznawana jako pierwsza # przypiszcie odpowiednio eth0 i eth1. alias eth0 nvnet # Sterownik nvidii ma następujące parametry: #options nvnet optimization=0 # optymalizacja: 0-szybkości działania, # 1-użycia procesora #options nvnet speed=0 # szybkość: 0-auto, 1-10Mbps, 2-100Mbps #options nvnet duplex=0 # duplex: 0-auto, 1-half, 2-full alias eth1 3c59x # Odkomentować, jeśli do dźwięku chcecie używać sterownika nVidii. # alias sound-slot-0 nvaudio # Odkomentować, jeśli do dźwięku chcecie używać sterownika z jądra # (nie potrzeba podawać parametru). #alias sound-slot-0 i810_audio # BARDZO WAŻNY PARAMETR! Wyjaśnienie znajduje się poniżej. options nvaudio spdif_status=0
Domyślnie parametr spdif_status jest włączony, ale wtedy sterownik wspiera wyłącznie 48kHz. Próba odtworzenia zwykłego pliku .mp3 kończy się tak:
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz stereo No supported rate found!
Dlatego właśnie trzeba wyłączyć ten parametr, aby sterownik obsługiwał inne formaty.
Informacje o modułach uaktualniamy za pomocą polecenia
# update-modules
Optymalizacja pracy twardego dysku
[edytuj]Pozostaje nam jeszcze zoptymalizować pracę twardego dysku. Pewnie już zauważyliście podczas startu taki oto komunikat jądra:
SiI3112 Serial ATA: not 100% native mode: will probe irqs later ide2: MMIO-DMA , BIOS settings: hde:pio, hdf:pio ide3: MMIO-DMA , BIOS settings: hdg:pio, hdh:pio
i rzeczywiście, wydajność ultraszybkich dysków WesternDigital WD360GD 10000RPM jest daleka od akceptowalnego poziomu:
# hdparm -t /dev/hde /dev/hde: Timing buffered disk reads: 64 MB in 45.88 seconds = 1.39 MB/sec
Należy zatem włączyć odpowiednie opcje w którymś ze skryptów startowych.
# hdparm -q -c 1 -q -m 16 -q -d 1 -q -X66 -q -k 1 /dev/hde # hdparm -t /dev/hde /dev/hde: Timing buffered disk reads: 64 MB in 1.18 seconds = 54.24 MB/sec
Piękne, prawda? ;-)
OSTRZEŻENIE |
Natomiast optymalizację pracy "twardziela" wyłączamy tak:
# hdparm -q -c 0 -q -m 0 -q -d 0 -q -k 0 /dev/hde
Nierozwiązane problemy
[edytuj]1. Do wspomnianej przeze mnie płyty WinFast K7NCR18GPro-2, firma Leadtek dołącza kartę K7NFAL z wyprowadzeniami:
- Mini-1394
- 1394
- RJ-45 (karta sieciowa 3Com)
- SPDIF output
- Kanały: tylny prawy/tylny lewy
- Kanały: centralny/subwoofer
Niestety, nie mam pojęcia jak uruchomić cokolwiek z rzeczy umieszczonych na karcie ACR. Komendy modprobe 3c90x i modprobe 3c59x powodują następujący komunikat
/lib/modules/2.4.21/kernel/drivers/net/3c59x.o: init_module: No such device
2. System widzi kontroler FireWire, ale nie wiem czy działa. Spotkałem się z opiniami, że nie, ale sam nie mogłem tego sprawdzić.
3. Nie udało mi się uruchumić obsługi 6 kanałów. Podczas ładowania modułu pojawia się komunikat:
Nvidia + AC97 Audio, version 0.24 Nvaudio: in Funcction Nvaudio_init_module Nvaudio: NVIDIA nForce2 Audio found at IO 0xd400 and 0xd000, IRQ 3 Nvaudio: Audio Controller supports 6 channels. NVaudio: Defaulting to base 2 channel mode. ac97_codec: AC97 Audio codec, id: ALG32 (ALC650) Nvaudio: Nvaudio_ac97_enable_variable_rate Nvaudio: AC'97 codec 0 supports AMAP, total channels = 6
Podobny efekt jest na sterowniku i810_audio:
Intel 810 + AC97 Audio, version 0.24, 16:25:57 Aug 4 2003 i810: NVIDIA nForce Audio found at IO 0xd400 and 0xd000, MEM 0x0000 and 0x0000, IRQ 3 i810_audio: Audio Controller supports 6 channels. i810_audio: Defaulting to base 2 channel mode. i810_audio: Resetting connection 0 ac97_codec: AC97 Audio codec, id: ALG32 (ALC650) i810_audio: AC'97 codec 0 supports AMAP, total channels = 6
4. Nie udało mi się jeszcze uruchomić lm-sensors, ale jeśli chcecie samemu spróbować, to pod tym adresem jest pewna wskazówka: http://www.nforcershq.com/forum/viewtopic.php?t=23918&sid=8e6f3b6d097334d2c105967163817e83.
I to chyba tyle. Będę szczęśliwy, jeśli zechcecie się ze mną podzielić swoimi uwagami.
Licencja
[edytuj]Całość tekstu jest objęta licencją CC-BY-SA 3.0 i jednocześnie GNU FDL 1.2.
Udziela się zezwolenia do kopiowania, rozpowszechniania lub modyfikacji tego dokumentu zgodnie z zasadami Licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 3.0 Unported lub dowolnej późniejszej wersji licencji opublikowanej przez Creative Commons, która zawiera te same elementy co niniejsza licencja. Treść licencji dostępna jest pod adresem http://creativecommons.org/licenses/by-sa/3.0/legalcode.
Udziela się zezwolenia do kopiowania, rozpowszechniania lub modyfikacji tego dokumentu zgodnie z zasadami Licencji GNU Wolnej Dokumentacji w wersji 1.2 lub dowolnej późniejszej, opublikowanej przez Free Software Foundation; nie zawiera Sekcji Niezmiennych, bez Tekstu na Przedniej Okładce i bez Tekstu na Tylnej Okładce. Kopia licencji załączona jest w sekcji zatytułowanej "GNU Free Documentation License".