Vypadá to, že se mi problém podařilo vyřešit. Bude třeba si zkompilovat jádro.
Prvně bylo třeba povolit stahování zdrojáků, abych mohl stáhnout zdrojáky jádra.
Dále jsem si stáhl tento soubor
http://no.oldos.org/files/2.6.20-no1/broken-out/libata-sd-stop_on_shutdown.patchPatch jsem ale neaplikoval přímo, prohlížel jsem jej a soubor sd.c jsem projížděl, abych ho editoval podle onoho patche.
Pokud jste v adresáři linux-source-2.6.20, pak cesta k souboru je ./drivers/scsi/sd.c .
Tak jestli jste soubor našli, budeme editovat.
Najděte tam tento odstavec
MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK14_MAJOR);
MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
static int sd_stop_on_shutdown_dfl = 0;
module_param_named(stop_on_shutdown_default, sd_stop_on_shutdown_dfl,
bool, 0644);
MODULE_PARM_DESC(stop_on_shutdown_default, "Default setting for stopping "
"disk on shutdown (0=disable, 1=enable)");
/*
* This is limited by the naming scheme enforced in sd_probe,
* add another character to it if you really need more disks.
*/Na řádku
static int sd_stop_on_shutdown_dfl = 0;změňte 0 na 1.
Po té by měl uvedený odstavec vypadat jako
MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK14_MAJOR);
MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
static int sd_stop_on_shutdown_dfl = 1;
module_param_named(stop_on_shutdown_default, sd_stop_on_shutdown_dfl,
bool, 0644);
MODULE_PARM_DESC(stop_on_shutdown_default, "Default setting for stopping "
"disk on shutdown (0=disable, 1=enable)");
/*
* This is limited by the naming scheme enforced in sd_probe,
* add another character to it if you really need more disks.
*/Pak je třeba se pustit do vlastní kompilace.
Zde jsem se opíral o
http://wiki.ubuntu.cz/Kompilace_kerneluPrvně jsem si musel stáhnout potřebné nástroje ke kompilaci. Pak mohlo dojít na konfiguraci jádra. Protože dosavadní konfigurace jádra jinak na mém stroji fungovala. Provedl jsem
sudo make oldconfig, po té jsem si otevřel
sudo make xconfig. Postupoval jsem podle
http://wiki.ubuntu.cz/Kompilace_kernelu .
Bude to trochu jiné.
Zaškrtávačku Automatically append version information to the version string klidně zaškrtněte.
V Arbitrary version signature nastavte označení své kompilace.
Projíždějte konfiguračkou, nastavujte dle
http://wiki.ubuntu.cz/Kompilace_kernelu a svého vědomí a svědomí. Zde opravdu je třeba znát význam každé volby, která bude zaškrtávana či rušena.
Protože nemám dvojjádrový stroj, vyrušil jsem Symmetric multi-processing support. Do procesor family jsem vybral Pentium M, neboť tento procesor je v mém stroji.
V Ubuntu additional drivers je Memory Stick support, toho bych si nevšímal.
Ještě jsem to radši překontroloval a uložil.
Kompilaci jsem prováděl na způsob Ubuntu (Debianu). Přes příkaz
sudo make-kpkg --initrd --stem linux --revision=vlastni.1.0 kernel_image, s parametrem --revision nějak mi to nechtělo jet, takže jenom
sudo make-kpkg --initrd --stem linux kernel_imageNemusí se to podařit napoprvé, pak je třeba zkusit opravit volbu v konfiguračce a zkusit to znovu.
Až se vytvořil balík deb, provedl jsem
cd ..
sudo dpkg -i -jmeno_meho_baliku-.debPo instalaci jsem nastartoval do toho zkompilovaného jádra.
Přesvědčil jsem se, jestli se operace zdařila. Provedl jsem
cd /sys/class/scsi_disk/w:x:y:z/ ; místo w,x,y,z jsou tam čísla, např 0:0:0:0 nebo 2:0:0:0 .
cat stop_on_shutdownVrátilo mi to číslo 1, což by tak mělo být, stop_on_shutdown je zapnutý.
Dal jsem stroj legitimně vypnout, nezpozoroval jsem onen pazvuk havarijního parkování HDD.
Vyšlo také jádro 2.6.20-14, v něm stále není stop_on_shutdown zapnutý. Nemůžu tomu uvěřit, že této chybě se nikdo nevěnuje. Může jít o zdraví HDD. Přecejen jsem klidnější, když to při vypnutí nevydává ten pazvuk havarijního parkování.