pondělí, října 24, 2011

Pilujeme Ubuntu

Už před nějakou dobou jsem upgradoval náš starý domácí stroj: koupil jsem novou desku, procesor, paměti a to všechno nacpal k původním diskům a mechanikám. Plán dobrý, ale boot se jaksi protáhl. A co je horší, optická mechanika nebyla systémem detekována. Tedy byla, ale jen ve Win a ne v linuchu. Takže znovu otevřít case a hledat...

Jumpery byly nastavené správně (dvě zařízení, nastavená na master a slave). První poznatek byl, že nový motherboard (byť v nějaké premiové verzi) už skoro nepočítá s PATA, které se připojuje přes nějaký modul. Má konektorem normálně na desce a dá se v BIOSu vypínat. Kromě on/off tam toho ale moc nebylo. Chvilku jsem si ještě hrál s kabelem a různým zapojením, ale nic nepomohlo. Nakonec jsem to zabalil, protože nic víc smysluplného mě nenapadlo a hlavně BIOS i Win mechaniku viděli.

Dmesg nic moc neprozradil, Gůgl aspoň naznačil. Problém je snad v ovladačích: každá mechanika potřebuje svůj. Přímo v jádře je ale jen jeden a ten druhý se použije až později jako modul. Což je problém. Jádro jsem si sice upravil a překonfiguroval, ale stejně. Možná jsem udělal něco špatně, víc času jsem už neměl a hlavně jsem už dost dlouho nepálil.

Trošku jsem doufal, že se problém vyřeší s novým jádrem v Ubuntu 11.10 a ono (nečekaně) ne. Vrhl jsem se znovu do hledání příčiny a tentokrát to šlo velmi rychle: stačilo úplně vyhodit jumpery (použít tedy možnost Cable Select) a problém zmizel. Jak trapné.

V logu se ale pořád objevovala zmínka o tom, že se kvůli kabelu používá jen UDMA/33:
[    2.296713] ata1.00: ATAPI: HL-DT-STDVD-RAM GSA-H54L, 1.00, max UDMA/66
[    2.334561] ata1.01: ATA-7: ST3320620A, 3.AAF, max UDMA/100
[    2.334563] ata1.01: 625142448 sectors, multi 0: LBA48 
[    2.334567] ata1.00: limited to UDMA/33 due to 40-wire cable
[    2.334569] ata1.01: limited to UDMA/33 due to 40-wire cable
[    2.348686] ata1.00: configured for UDMA/33
[    2.409383] ata1.01: configured for UDMA/33

Kabel mám samozřejmě v pořádku. Naštěstí jde libata vnutit, že jde o 80 žílový kabel a to pomocí kernel boot parametru libata.force (popis je v dokumentaci kernelu). Ubuntu používá Grub2, které je sice neskutečně skvělé, ale taky složité. Stačilo naštěstí upravit /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash libata.force=5:80c,7:80c"
Tento přepínač nastaví force režim 80 žílového kabelu pro všechna zařízení pověšené na ata5 a ata7. Samozřejmě je možné možné určit přímo zařízení (7.1) nebo nespecifikovat zařízení. Pak je nastavení obecné. Na konci je dobré aktualizovat grub pomocí sudo update-grub

Pokud jsem to pochopil správně, tak z 80 žílového kabelu se používá stejně jen půlka a zbytek je kvůli přeslechům. Takže je teoreticky (a podle komentářů i prakticky) možné používat vyšší přenosové rychlosti i na starších kabelech s polovičním počtem vodičů. Vyzkoušel bych to, ale už jsem asi všechny vyhodil.

A bylo po problému, boot za pár vteřin:
[    2.304704] ata5: FORCE: cable set to 80c
[    2.304710] ata5.00: ATAPI: HL-DT-STDVD-RAM GSA-H54L, 1.00, max UDMA/66
[    2.344526] ata5.01: ATA-7: ST3320620A, 3.AAF, max UDMA/100
[    2.344529] ata5.01: 625142448 sectors, multi 0: LBA48 
[    2.360655] ata5.00: configured for UDMA/66
[    2.419339] ata5.01: configured for UDMA/100

Až mě jednou tohle hraní přestane bavit, tak si koupím Mac ;)

Žádné komentáře:

Okomentovat