Re: /dev/loop3 No appropriate device found

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bernhard Stoevesandt wrote:
> gcc -D__KERNEL__ -I/usr/src/linux-2.4.18.SuSE/include -Wall
> -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer
> -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2
> -march=i586   -DKBUILD_BASENAME=ksyms  -DEXPORT_SYMTAB -c ksyms.c
> ksyms.c:609: `set_user_nice' undeclared here (not in a function)
[snip]
> it is an old suse-distro (8.0).

Ok. I found SuSE 8.0 kernel patches from ftp.suse.com and looked at the
source. Now I understand what went wrong: module compilation failed. I got
these errors on 2.4.18-SuSE-91 kernel + loop-AES-v3.1c :

patched-loop.c: In function `loop_thread':
patched-loop.c:757: warning: implicit declaration of function `set_user_nice'
[snip]
depmod: *** Unresolved symbols in /lib/modules/2.4.18-SuSE-91/block/loop.o

Most 2.4 kernels use either normal 2.4 scheduler or O(1) scheduler. That
SuSE kernel appears to have scheduler that is sufficietly different from
both above mentioned schedulers and confused loop module compilation to use
wrong scheduler interface.

Really old loop-AES versions used different scheduler detection code. On
June 2003, that scheduler detection code was changed to test defines
include/linux/sched.h, causing scheduler mis-detection and compile failure
on that particular SuSE kernel. I now fixed this incompatibility by
modifying scheduler detection code. A patch for loop-AES-v3.1c is included.

To clean up the mess, you need to remove that extra EXPORT_SYMBOL() from
your kernel.

    cd /usr/src/linux-2.4.18.SuSE
    sed -e 's/EXPORT_SYMBOL(set_user_nice);//' <kernel/ksyms.c >z
    mv z kernel/ksyms.c

And then recompile your kernel. This assumes that you are using lilo
bootloader, and that lilo is configured to boot /boot/vmlinuz kernel.

    mv .config z
    make distclean
    mv z .config
    make oldconfig
    make dep && make clean && make bzlilo INSTALL_PATH=/boot
    make modules && make modules_install

And then apply included loop-AES patch.

    cd /usr/src/loop-AES-v3.1c
    patch -p1 <this-email

And then build loop.o module for your kernel.

    make LINUX_SOURCE=/usr/src/linux-2.4.18.SuSE

And then boot your new kernel /boot/vmlinuz

-- 
Jari Ruusu  1024R/3A220F51 5B 4B F9 BB D3 3F 52 E9  DB 1D EB E3 24 0E A9 DD


--- ../loop-AES-v3.1c/loop.c-2.4.patched	2005-09-17 12:20:54.000000000 +0300
+++ ./loop.c-2.4.patched	2006-01-27 15:36:39.000000000 +0200
@@ -222,7 +222,7 @@
  * This is loop helper thread nice value in range
  * from 0 (low priority) to -20 (high priority).
  */
-#if defined(DEF_NICE) && defined(DEF_COUNTER)
+#if defined(DEF_NICE)
 static int lo_nice = -20;   /* old scheduler default */
 #else
 static int lo_nice = -1;    /* O(1) scheduler default */
@@ -748,7 +748,7 @@
 		lo_nice = 0;
 	if (lo_nice < -20)
 		lo_nice = -20;
-#if defined(DEF_NICE) && defined(DEF_COUNTER)
+#if defined(DEF_NICE)
 	/* old scheduler syntax */
 	current->policy = SCHED_OTHER;
 	current->nice = lo_nice;

-
Linux-crypto:  cryptography in and on the Linux system
Archive:       http://mail.nl.linux.org/linux-crypto/


[Index of Archives]     [Kernel]     [Linux Crypto]     [Gnu Crypto]     [Gnu Classpath]     [Netfilter]     [Bugtraq]
  Powered by Linux