USB disky pod Linuxem
31.08.2005
Bohužel jsem v poslední době narazil na velké množství s externími USB disky pod linuxem, které se při přenášení velkých souborů jednoduše zaseknou. Pokud si připojíte k linuxové stanici MP3 přehrávač - nic se neděje, jednoduše jej odpojíte a zapojíte znovu, ale pokud v Linuxu zálohujete do externího USB rámečku v ranních hodinách, toto jednoduše možné není.
Kde je chyba?
Chyba je jak už je obvyklé na obou frontách. Zatímco výrobci hardwaru šetří kde můžou, a tak jejich USB disky a externí USB rámečky mají problém zvládnout větší množství dat přenášených najednou, tak linuxoví vývojáři chtějí poskytnout uživatelům co největší výkon a přenáší dat více, než je hardware schopen zvládnout. Hardware je samozřejmě optimalizován pro Windows, které sice mají nižší výkon při přenosech, ale zase fungují se všemi USB chipsety spolehlivě (jak by ne, když je pro ně výrobci optimalizují).
Trošku zde ovšem vidím chybu ve vývojářích jádra, kteří než aby se zaměřili na špatnou praxi dodržují nějaké standardy i možnosti hardwaru. Obdobné problémy mají vývojáři i v modulech ACPI, kde se zpočátku zaměřovali na specifikaci (kterou nikdo nedodržuje) a po dlouhé době se konečně vydali směrem k praxi a funkčnímu řešení, i když nebude zrovna košér.
Jak to zprovoznit
- Nejdřívě si stáhneme nejnovější linuxový kernel z adresy www.kernel.org, v době psaní tohoto článku 2.6.12. Případně můžeme použít kernel přiložený k naší distribuci.
- Poté rozbalíme kernel do složky /usr/src/linux těmito příkazy
cd /usr/src
tar -zxvvf /root/kernel-xxxx.tar.gz
cp /boot/config-xxx /usr/src/kernel-xxx/.config
- Nyní nalezneme soubor /drivers/usb/storage/scsiglue.c a změníme hodnotu max_sectors = 256 na 128
- Nakonec zkompilujeme kernel příkazy
make menuconfig (ESC a uložit)
make bzImage
make modules
make modules_install
cp arch/i386/vmlinux /boot/vmlinuz-2.xxx
vim /etc/lilo.conf (nebo grub.conf)
...
Závěr
I když návod není úplně přesný (kompilace kernelu závisí na vaší distribuci a nelze ji přesně popsat) měl by alespoň pokročilejším uživatelům pomoci při problémech s USB disky. Mě po změně nastavení začal USB disk fungovat zcela spolehlivě a rychlost přenosu se dokonce znatelně zvýšila (z 11MB/s na 20MB/s). Nicméně pokud máte kvalitní USB chipset, toto nastavení pouze degraduje výkon a nebude mít žádný význam.
Re: USB disky pod Linuxem od llook
02.09.2005 #Řekl bych, že tady je stran vývojářů nedostatek spíše v omezených možnostech konfigurace. Když už ne přes parametry jádra, tak aspoň přes menuconfig.
Konfigurovat něco v souborech s příponou ".c" není dobrá praxe...
od markon
02.09.2005 #2llook: v nových verzích se to dá konfigurovat i za běhu, myslím že je na to patch, kterej je (nebo bude) ve vanilla kernelu.
Spíš by to defaultně mělo být stabilnější než výkonnější. Ostatně ač je to k nevíře, Windows jsou standardně optimalizovány spíše pro stabilitu než výkon.