First off, I'd like to thank all those who responded to my previous post
about installing a USB modem. Thanks to your comments, I got much
further, but latest attempts were not completely successful.
Sooooo, I'm hoping for further critiques of the following procedure.
1. Start with 2.2.14 kernel:
[I have Redhat 6.2 which comes with the 2.2.14 kernel. I reinstalled
after deleting and recreating /boot, /, and <swap> partitions with Disk
Druid. As I understand it, this is supposed to erase/reformat previously
existing partitions, but see below.]
2. Install patch
[I copied usb-2.3.50-1-for-2.2.14.diff.gz from my download directory to
/usr/src. Then:]
cd linux
gzip -dc ../usb-2.3.50-1-for-2.2.14.diff.gz | patch -p1
[I got two errors. The first:]
can't find file to patch at input line 2760
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
diff -urN linux-2.2.14-raw/arch/alpha/config.in linux-2.2.14-usb/arch/alpha/config.in
--- linux-2.2.14-raw/arch/alpha/config.in Tue Jan 4 19:12:10 2000
+++ linux-2.2.14-usb/arch/alpha/config.in Sun Mar 5 17:18:14 2000
[I hit enter and skipped the patch and then got a prompt asking if I
wanted to skip the patch. I skipped.]
[The second error came on patching mouse.c]
Previous or reversed patch detected. assume -R [n] patch anyway [y]
[Except for the backport patch, I've applied no other patch --- even
before reinstalling. I chose to patch anyway and the remainder of the
script ran without problems.]
make distclean
3. Select USB support
make menuconfig.
[Selected USB support for modems.]
4. Preparation
4.1 Added following lines to /etc/conf.modules:
keep
path[usb]=/lib/modules/`uname -r`
4.2 Make nodes
mknod /dev/ttyACM0 c 166 0
mkdir /dev/usb
mknod /dev/usb/ttyACM0 c 166 0
[The documentation with the patch includes the first mknod command,
while the documentation from linux.org includes the second. Which is
correct? I don't know. So, i did both.]
5. The Make
make dep
make clean
make boot
make modules
[This generated an error:]
#In file included from radio-micropcm20.c:13:
#../sound/low.evel/miroaci.h:9: #error compiling a driver that needs the
ACI-mixer but without ACI-mixer support
...
make[2]: *** [radio-micropcm20.o] Error 1
make[2]: Leaving directory '/usr/src.linux-2.2.14/drivers/char
make[1]: *** [_modsubdir_char] Error 2
make[2]: Leaving directory '/usr/src.linux-2.2.14/drivers
make[1]: *** [_mod_drivers] Error 2
[Since I already had a radio-micropcm20.o module, I removed
radio-micropcm20.c from that directory and tried again. This time there
were no errors. The usb related modules (acm.0, usb-uhci.o, usbcore.o
etc. now appeared in /usr/src/linux/drivers/usb]
#move old modules out of the way
rm -rf /lib/modules/2.2.14-5.0-old
mv /lib/modules/2.2.14-5.0 /lib/modules/2.2.14-5.0-old
make modules_install
[This recreated /lib/modules/2.2.14-5.0 but it did not have a usb
subdirectory and no usb modules were moved. I suspect that the makefile
(see below) has to be edited to include the line:
if [ -f USB_MODULES ]; then inst_mod USB_MODULES usb; fi; \
However, when I included this line in Makefile, entering 'make
modules_install' generated the following error:]
/bin/sh: -c: line2: syntax error: unexpected end of file
make: *** [modules_install] Error 2
[So perhaps something else needs changing as well.]
6. Attempted workaround
I copied the *.o modules mentioned in USB_MODULES to
/lib/modules/2.2.14-5.0/usb and tried to install with insmod but got a
string of errors due to unresolved dependencies.
7. Other
There is still no /proc/bus/usb directory.
The mount command:
mount -t usbdevfs none /proc/bus/usb.
produced an error message saying the kernel doesn't support usbdevfs.
8. Result
The above process results in a kernel that does not boot. It hangs with
the message:
VFS Cannot open root device 03:05
Kernel panic: VFS: Unable to mount root fs on 03:05
Any critque of the above procedure would be most welcome.
Joseph Polanik
------------------
Appendix: the modules_install section from /usr/src/linux/Makefile
modules_install:
@( \
MODLIB=$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE); \
cd modules; \
MODULES=""; \
inst_mod() { These="`cat $$1`"; MODULES="$$MODULES $$These"; \
mkdir -p $$MODLIB/$$2; cp $$These $$MODLIB/$$2; \
echo Installing modules under $$MODLIB/$$2; \
}; \
mkdir -p $$MODLIB; \
\
if [ -f BLOCK_MODULES ]; then inst_mod BLOCK_MODULES block; fi; \
if [ -f NET_MODULES ]; then inst_mod NET_MODULES net; fi; \
if [ -f IPV4_MODULES ]; then inst_mod IPV4_MODULES ipv4; fi; \
if [ -f IPV6_MODULES ]; then inst_mod IPV6_MODULES ipv6; fi; \
if [ -f SCSI_MODULES ]; then inst_mod SCSI_MODULES scsi; fi; \
if [ -f FS_MODULES ]; then inst_mod FS_MODULES fs; fi; \
if [ -f NLS_MODULES ]; then inst_mod NLS_MODULES fs; fi; \
if [ -f CDROM_MODULES ]; then inst_mod CDROM_MODULES cdrom; fi; \
if [ -f USB_MODULES ]; then inst_mod USB_MODULES usb; fi; \
if [ -f HAM_MODULES ]; then inst_mod HAM_MODULES net; fi; \
if [ -f SOUND_MODULES ]; then inst_mod SOUND_MODULES sound; fi; \
if [ -f VIDEO_MODULES ]; then inst_mod VIDEO_MODULES video; fi; \
if [ -f FC4_MODULES ]; then inst_mod FC4_MODULES fc4; fi; \
if [ -f IRDA_MODULES ]; then inst_mod IRDA_MODULES net; fi; \
if [ -f SK98LIN_MODULES ]; then inst_mod SK98LIN_MODULES net; fi; \
\
for f in *.o; do [ -r $$f ] && echo $$f; done | sort > $$MODLIB/.allmods; \
echo $$MODULES | tr ' ' '\n' | sort | comm -23 $$MODLIB/.allmods - >
$$MODLIB/.misc; \
if [ -s $$MODLIB/.misc ]; then inst_mod $$MODLIB/.misc misc; fi; \
rm -f $$MODLIB/.misc $$MODLIB/.allmods; \
)
# modules disabled....
else
modules modules_install: dummy
@echo
@echo "The present kernel configuration has modules disabled."
@echo "Type 'make config' and enable loadable module support."
@echo "Then build a kernel with module support enabled."
@echo
@exit 1
endif
*****************************************************
Joseph Polanik, [EMAIL PROTECTED]
Trionic Research Institute, http://www.trionica.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]