Patch from Woody Suwalski:
Erik, I think we have met online some time ago when I was in Corel/Rebel Netwinder project.... Anyway, I would like to use BB on 2.6.0 initrd. 1.00-pre4 works OK, if insmod is actually presented with a full path to the module. Otherwise - problems (not to mention conflicts when 2.4 modutil is enabled) Here are some patches for insmod and modprobe which try to walk around the default ".o" module format for 2.2/2.4 modules (you have probably noticed it is now .ko in 2.6 ;-)) Trying to steal as little space as possible if 2.6 not enabled... The modprobe is still not perfect on 2.6 - seems to be jamming on some dependencies, but works with some (to be debugged). Anyway after the patches it at least tries to work.... Will there be a 1.00-pre5 coming any time soon? Thanks, Woody
This commit is contained in:
@ -57,6 +57,7 @@ struct mod_list_t {
|
||||
|
||||
static struct dep_t *depend;
|
||||
static int autoclean, show_only, quiet, do_syslog, verbose;
|
||||
static int k_version;
|
||||
|
||||
int parse_tag_value ( char *buffer, char **ptag, char **pvalue )
|
||||
{
|
||||
@ -116,6 +117,7 @@ static struct dep_t *build_dep ( void )
|
||||
char *filename = buffer;
|
||||
int continuation_line = 0;
|
||||
|
||||
k_version = 0;
|
||||
if ( uname ( &un ))
|
||||
return 0;
|
||||
|
||||
@ -123,6 +125,9 @@ static struct dep_t *build_dep ( void )
|
||||
if ( bb_strlen ( un.release ) > ( sizeof( buffer ) - 64 )) {
|
||||
return 0;
|
||||
}
|
||||
if (un.release[0] == '2') {
|
||||
k_version = un.release[2] - '0';
|
||||
}
|
||||
|
||||
strcpy ( filename, "/lib/modules/" );
|
||||
strcat ( filename, un.release );
|
||||
@ -166,6 +171,12 @@ static struct dep_t *build_dep ( void )
|
||||
else
|
||||
mods++;
|
||||
|
||||
#if defined(CONFIG_FEATURE_2_6_MODULES)
|
||||
if ((k_version > 4) && ( *(col-3) == '.' ) &&
|
||||
( *(col-2) == 'k' ) && ( *(col-1) == 'o' ))
|
||||
ext = 3;
|
||||
else
|
||||
#endif
|
||||
if (( *(col-2) == '.' ) && ( *(col-1) == 'o' ))
|
||||
ext = 2;
|
||||
|
||||
@ -215,6 +226,12 @@ static struct dep_t *build_dep ( void )
|
||||
else
|
||||
deps++;
|
||||
|
||||
#if defined(CONFIG_FEATURE_2_6_MODULES)
|
||||
if ((k_version > 4) && ( *(end-2) == '.' ) && *(end-1) == 'k' &&
|
||||
( *end == 'o' ))
|
||||
ext = 3;
|
||||
else
|
||||
#endif
|
||||
if (( *(end-1) == '.' ) && ( *end == 'o' ))
|
||||
ext = 2;
|
||||
|
||||
@ -383,6 +400,13 @@ static void check_dep ( char *mod, struct mod_list_t **head, struct mod_list_t *
|
||||
|
||||
// remove .o extension
|
||||
lm = bb_strlen ( mod );
|
||||
|
||||
#if defined(CONFIG_FEATURE_2_6_MODULES)
|
||||
if ((k_version > 4) && ( mod [lm-3] == '.' ) &&
|
||||
( mod [lm-2] == 'k' ) && ( mod [lm-1] == 'o' ))
|
||||
mod [lm-3] = 0;
|
||||
else
|
||||
#endif
|
||||
if (( mod [lm-2] == '.' ) && ( mod [lm-1] == 'o' ))
|
||||
mod [lm-2] = 0;
|
||||
|
||||
|
Reference in New Issue
Block a user