VMware-ben futtatom az EeePC 900-as Xandrost. Az lspci | grep audio parancs szerint a hanghoz az snd-ens1371 modulra lenne szükség:
02:02.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
Lefordítottam az snd-ens1371 modult, a helyére másoltam, és megpróbáltam működésbe hozni, de a modprobe snd-ens1371 ezt írja:
Error inserting snd_ens1371 (/lib/modules/2.6.21.4-eeepc/kernel/sound/pci/snd-ens1371.ko): Unknown symbol in module, or unknown parameter (see dmesg)
A dmesg szerint:
snd_ac97_codec: Unknown symbol ac97_bus_type
snd_ens1371: Unknown symbol snd_ac97_resume
snd_ens1371: Unknown symbol snd_ac97_mixer
snd_ens1371: Unknown symbol snd_ac97_bus
snd_ens1371: Unknown symbol snd_ac97_suspend
Az az igazság, hogy nem tudom, hogy hogy kell rendesen kernelmodult fordítani, de mivel a nethez szükséges pcnet32 modult sikeresen lefordítottam, megy is vele a net, azt hittem, hogy az snd-ens1371-gyel is elboldogulok. Hát nem!
Annak mintájára, ahogy a pcnet32-vel megbirkóztam, az snd-ens1371 modult így próbáltam lefordítani és működésre bírni:
cd /usr/src/linux-source-2.6.21.4-eeepc
make oldconfig
make menuconfig
A menuconfigban így navigáltam: Device Drivers - Sound - <M> Sound card support - Advanced Linux Sound Architecture - PCI devices - <M> (Creative) Ensoniq AudioPCI 1371/1373. Mentettem az új kernelkonfigurációt, aztán:
make prepare
make modules_prepare
make M=sound/pci
strip --strip-debug sound/pci/snd-ens1371.ko
A lefordított modult a helyére másoltam, és próbáltam működésbe hozni:
cp sound/pci/snd-ens1371.ko /lib/modules/2.6.21.4-eeepc/kernel/sound/pci
depmod -a
modprobe snd-ens1371
Arra gyanakszom, hogy olyan lépéseket hagytam ki, amik a snd-ens1371-nek hiányoznak, a pcnet32-nek viszont nem.
A pcnet32 fordításakor így jutottam el a menuconfigban a pcnet32-höz: Device Drivers - Network device support - Ethernet (10 or 100Mbit) - [*] EISA, VLB, PCI and on board controllers - <M> AMD Pcnet32 PCI support. Mentettem az új kernelkonfigurációt, aztán:
make prepare
make modules_prepare
make M=drivers/net
strip --strip-debug drivers/net/pcnet32.ko
cp drivers/net/pcnet32.ko /lib/modules/2.6.21.4-eeepc/kernel/drivers/net
depmod -a
modprobe pcnet32
echo pcnet32 >> /etc/modules
Ezután a grafikus hálózatkezelőben kiválasztottam a pcnet32 illesztőprogramot, és azóta megy a net.
Mit rontottam el az snd_ens1371-gyel? Hogy lehet úgy csinálni, hogy jó legyen?