Sans être pédant, ce n'est pas une bonne idée, mais c'est la cause de ton
problème.
Pour la compilation, sleep() n'est pas définie au niveau du noyau. C'est un
wrapper.
Il faut utiliser une autre primitive ... Je n'aurai le temps de regarder
qu'en fin de journée!
Yves
-----Message d'origine-----
De : Robert PALUDETTO [mailto:robert.paludetto@xxxxxxxxxxxxxxxx]
Envoyé : jeudi 29 janvier 2004 09:31
À : Crespin.Quartz@xxxxxxxxxx
Objet : Réf. : [Confirme] RE : [Confirme] Problème deboot sur disque USB
Bonjour,
Dès que j'ai eu 5 mn de libre, je me suis précipité pour mettre en oeuvre
ton idée qui me parait une bonne piste.
Je m'attendais à quelques difficultés, mais pas à celle-ci : erreur à la
compile (make bzImage) en phase finale (au link je pense)
j'ai repris les dernières lignes affichées :
make[2]: Leaving directory `/mnt/sda1/usr/src/linux-2.4.22/arch/i386/lib'
make[1]: Leaving directory `/mnt/sda1/usr/src/linux-2.4.22/arch/i386/lib'
ld -m elf_i386 -T /mnt/sda1/usr/src/linux-2.4.22/arch/i386/vmlinux.lds -e
stext arch/i386/kernel/head.o
arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o \
--start-group \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o
fs/fs.o ipc/ipc.o \
drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o
drivers/misc/misc.o drivers/net/net.o
drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/ide/idedriver.o
drivers/scsi/scsidrv.o drivers/cdrom/driver.o
drivers/sound/sounddrivers.o drivers/pci/driver.o drivers/pcmcia/pcmcia.o
drivers/net/pcmcia/pcmcia_net.o drivers/pnp/pnp.o
drivers/video/video.o drivers/usb/usbdrv.o drivers/media/media.o \
net/network.o \
/mnt/sda1/usr/src/linux-2.4.22/arch/i386/lib/lib.a
/mnt/sda1/usr/src/linux-2.4.22/lib/lib.a
/mnt/sda1/usr/src/linux-2.4.22/arch/i386/lib/lib.a \
--end-group \
-o vmlinux
init/do_mounts.o(.text.init+0x63b): In function `mount_root':
: référence indéfinie vers « sleep »
make: *** [vmlinux] Erreur 1
root@ttyp1[linux]#
voici l'extrait de do_mounts.c tel que je l'ai patché :
static void __init mount_root(void)
{
sleep(4);
#ifdef CONFIG_ROOT_NFS
if (MAJOR(ROOT_DEV) == NFS_MAJOR
&& MINOR(ROOT_DEV) == NFS_MINOR) {
J'ai quelques restes de programmeur en C sous AIX, il me semble pourtant que
sleep est une fonction standard du langage C.
J'ai cherché dans les include du source, j'ai trouvé une référence à la
fonction sleep dans ide.h, de la sorte :
unsigned long sleep;
mais j'ai pas réussit à l'exploiter.
Je pense que quelque chose m'échappe encore. as-tu une idée ?
Merci d'avance
"Yves Crespin" <Crespin.Quartz@xxxxxxxxxx>
Envoyé par : confirme-owner@xxxxxxxxxxxxxxxxxx
28/01/2004 10:45
Veuillez répondre à Crespin.Quartz
Pour : "'Robert PALUDETTO'"
<robert.paludetto@xxxxxxxxxxxxxxxx>, <confirme@xxxxxxxxxxxxxxxxxx>
cc :
Objet : [Confirme] RE : [Confirme] Problème de boot sur
disque USB
Les deux solutions sont valables.
Le plus simple est de faire la compilation sur la machine cible car il y a
des optimisations de compilation automatique qui dépendent de la machine.
Cela n'a sûrement pas changé :
Cd /usr/src/linux
Make mrproper
Make oldconfig # cela te permet de récupérer ton ancienne configuration
Make dep
Make bzImage
Make install
Make modules
Make modules-install
Yves
-----Message d'origine-----
De : Robert PALUDETTO [mailto:robert.paludetto@xxxxxxxxxxxxxxxx]
Envoyé : mercredi 28 janvier 2004 08:40
À : crespin.quartz@xxxxxxxxxx
Objet : [Confirme] Problème de boot sur disque USB
Merci pour le tuyau. Encore une ou deux questions sur le sujet, avant de me
lancer dans cette aventure :
J'en conclu qu'il faut que je me fasse une compile du noyau. Deux solutions
s'offrent à moi :
- Compilation sur la machine cible après boot sur le CD knoppix 3.2 (la
machine cible n'a pas de lecteur de disquette, donc pas possible de
fabriquer une disquette de secours à l'install pour booter dessus)
- Compilation sur une autre machine ayant booté sur Mandrake 9.2
Laquelle retenir ?
quelqu'un a-t-il une how-to spécifique sur la compilation d'un noyau pour
mandrake, ou puis-je me fier à la HOW-TO du noyau linux, version 1.0 du 5
juin1999 disponible sur http://www.freenix.fr/linux/HOWTO/ ?
Enfin, quelles versions des sources dois-je utiliser (mes CD ne les
contiennent pas) ?
Encore une fois merci
Yves CRESPIN <crespin.quartz@xxxxxxxxxx>
Envoyé par : confirme-owner@xxxxxxxxxxxxxxxxxx
27/01/2004 19:12
Veuillez répondre à crespin.quartz
Pour : confirme@xxxxxxxxxxxxxxxxxx
cc :
Objet : Re: Re: [Confirme] Problème de boot sur disque USB
La solution est simple ... mais il faut avoir rencontrer le problème pour
le savoir!
C'est juste une question de timing!
Il faut patcher le noyau pour laisser le
temps de reconnaitre les périphériques USB par le système avant le
montage du FS!
Le patch est à mettre dans init/do_mounts.c
Il suffit d'attendre quelques secondes.
sleep(4);
à mettre au début de la fonction mount_root()
Yves
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com"
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com"
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com"
|