démarrer sans image initramfs

Bonjour,

J’utilise une Debian 5.0 et je cherche à optimiser le temps de démarrage…

Est-ce que quelqu’un peut me donner la procédure exacte pour booter sans l’image initramfs?? (qui prend 3s environ au démarrage)
J’ai trouvé un site assez intéressant qui explique un peu comment faire:
archlinux.org/static/newslet … rench.html

J’ai essayé leur méthode, mais ça n’a pas marché… Est-ce que quelqu’un pourrait me dire si ça marche chez lui? et si oui,
est-ce qu’il manquait quelque chose dans la démarche qu’ils expliquent sur le site?

Merci!

me semble qu’il te faut compiler en dur dans le noyau ce qui concerne les contrôleurs disques.

merci, je vais essayer de faire ça lundi matin!
Je te tiendrai au courant…

Initramfs c’est pas sensé faire gagner du temps au démarrage en collant des trucs directement dans la RAM au lieu de demander au noyau de tout charger séparément ?

Euh…?? :slightly_smiling:

Je ne sais pas, mais en tout cas ce qui est certain, c’est que l’image initramfs mets environ 3s au boot, avant de lancer tous les scripts de démarrage…
Si tu fais un bootchart, il ne prendra pas en compte l’image initramfs, donc t’imagine si ton bootchart t’affiche déjà un temps de boot rapide, tu pourras encore gagner quelques autres secondes en supprimant cette image (sorte de logo)!

si tu trouve tien nous aux courant :slightly_smiling:
j’avais chercher par le passer mai rien de concluant. par contre il te faut tout compiler en dur il me semble.

Sur quoi bute ton noyau ?

Quels messages d’erreur au démarrage ?

Il faut que le noyau comporte en dur la gestion des périphériques, des fs, des cryptages …
L’optimisation provient essentiellement
du fait que le noyau soit débarrassé du gras superflu, la difficulté étant de trouver l’équilibre.
Attend toi à plusieurs tentatives de compilation pour trouver le point d’équilibre entre légéreté et viabilité.

Ah oui, j’ai oublié de le signaler: j’utilise VMWARE!

Je n’ai pas de messages d’erreur au démarrage…

—> etxeberrizahar : toi t’arrives a booter sans initramfs?

Sinon, j’essaierai de t’envoyer (soit sur le forum, soit msn…) la configuration de mon nouveau noyau installé (j’ai tout résumé dans un bloc note)

A plus!

Bon bin ça marche toujours pas :stuck_out_tongue:

J’ai fait “makemrproper”, puis j’ai tout compilé en dur (tous les modules sans exception) en ayant en parallèle enlevé tout ce qui ne me servait pas…
Ensuite j’ai quitté le menuconfig en enregistrant, puis “make bzImage”, puis “make modules && make modules_install” (mais vu qu’il n’y a plus de modules, ça ne sert à rien^^, mais je l’ai quand même fait), j’en profite pour faire un “make install”, puis je copie l’image créée “cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30.4” sachant que je travaille dans “/home”…
Enfin, je vais dans “/boot” et je crée un initrd pour que ça puisse démarrer : “mkinitramfs -o linux-2.6.30.4” et je fais un “update-grub”… et je REBOOT :slightly_smiling:

Mais rien, y a toujours cette foutue image au démarrage!!

Qu’est-ce que vous en pensez?

Pas vraiment. A l’origine, l’initrd ou initramfs a essentiellement pour but d’accomplir les opérations préalables au montage du système de fichiers racine, notamment en chargeant les modules nécessaires s’ils ne sont pas compilés en dur dans le noyau. Cela permet de créer un noyau polyvalent mais léger sans mettre tous les pilotes en dur. Egalement il me semble qu’on ne peut pas avoir la racine en LVM sans initrd/initramfs car le noyau ne sait pas gérer LVM seul sans outils userland ; idem si la racine est chiffrée. Corrigez-moi si je me trompe.

Il n’est pas impossible que par effet de bord le démarrage soit accéléré en lisant des fichiers depuis un initrd/initramfs non fragmenté plutôt que depuis des positions dispersées sur le système de fichiers racine, mais à mon avis on ne gagne pas grand chose. D’autre part l’initrd est lu par le chargeur donc via le les fonctions d’accès disque du BIOS, pas forcément aussi performantes que le pilote disque du noyau.

[quote=“relax”]Enfin, je vais dans “/boot” et je crée un initrd pour que ça puisse démarrer : “mkinitramfs -o linux-2.6.30.4” et je fais un “update-grub”… et je REBOOT :slightly_smiling:

Mais rien, y a toujours cette foutue image au démarrage!![/quote]
Si tu crées un initrd, forcément, il y a toujours un initrd…
Quand tu écris “image initramfs”, tu parles du fichier initramfs ou d’un dessin qui s’affiche au démarrage lors de l’exécution de l’initramfs ? Dans le premier cas, il ne faut pas créer d’initramfs (à condition qu’il soit possible de démarrer sans). Dans le second cas, c’est la création de l’initramfs qu’il faut modifier afin de ne pas afficher d’image, recompiler le noyau ne sert à rien.

[quote=“PascalHambourg”]
Si tu crées un initrd, forcément, il y a toujours un initrd…
Quand tu écris “image initramfs”, tu parles du fichier initramfs ou d’un dessin qui s’affiche au démarrage lors de l’exécution de l’initramfs ? Dans le premier cas, il ne faut pas créer d’initramfs (à condition qu’il soit possible de démarrer sans). Dans le second cas, c’est la création de l’initramfs qu’il faut modifier afin de ne pas afficher d’image.[/quote]

Je pense que je parle du second cas… je t’explique, j’aimerai que ma debian boot sans que cette image (ou présentation) d’initramfs s’affiche:

Booting "Debian GNU/Linux, kernel 2.6.26-2-686"
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
[Linux-bzImage, setup=0x3000, size=0x16c910]
initrd /boot/initrd.img-2.6.26-2-686
[Linux-initrd @ 0x1f8fa000, 0x5e5097 bytes]

C’est du texte, pas une image, et ça ressemble à quelque chose qui est affiché par grub plutôt que par l’initramfs qui n’est exécuté qu’après le démarrage du noyau. Ces quelques secondes dont tu parles, je ne serais pas choqué outre mesure que ce soit le temps nécessaire à grub pour charger le noyau et l’initramfs.

Ok :slightly_smiling: je dois sûrement pas employer les bons termes, ou j’ai sûrement pas su représenter ce que je voulais faire… bref^^

Par contre, jette un coup d’oeil sur ce site : bbs.archlinux.org/viewtopic.php?id=43109

Il s’agit d’une autre méthode pour enlever cette “image” initramfs que je cherche à enlever: le fallback image!
Par contre, je ne connais pas du tout la démarche…

D’après la discussion que tu indiques, cette “fallback image” n’est autre qu’un initramfs alternatif. Rien n’est dit sur les différences avec l’initramfs par défaut. Dans le dernier message, les temps sont indiqués avec le noyau et l’initramfs par défaut d’une part, et sans initramfs (ni cette “fallback image”), avec un noyau compilé avec les modules en dur d’autre part. Si tu veux faire pareil, il te faut compiler un noyau avec les modules nécessaires en dur et ne pas créer ni déclarer d’initramfs dans le menu.lst de grub ; pas besoin de mettre tous les modules en dur, juste les pilotes pour l’accès au disque contenant le système de fichiers racine et le gestionnaire pour le type de ce dernier (ext2 | ext3 | xfs | reiser…)

Ah, une suggestion pour compiler le noyau : j’utilise make-kpkg du paquet kernel-package pour créer un paquet .deb du noyau, c’est tellement plus pratique pour installer et désinstaller les noyaux faits maison.

Merci pour tes réponses PascalHambourg!

Je vais essayer de voir tout ça aujourd’hui et demain! Par contre, est-ce qu’il faut que je décoche l’option “Initial RAM filesystem and RAM disk (initramfs/initrd) support” dans General setup?

Je désactive cette option dans mes noyaux sans initrd/initramfs. Pas testé pour voir ce qui se passerait si elle était activée.

ok :wink:

Sinon, voici tout ce que j’ai décoché dans la configuration du noyau:

***************** Configuration d’un noyau Lenny (Debian version 5.0) pour un démarrage en 10s **********************

Cases qui ont été décochées équivaut à : [ ]

  1. General setup :

    • POSIX Message Queues [ ]
    • BSD Process Accounting version 3 file format [ ]
    • Export task/process statistics through netlink (EXPERIMENTAL) [ ]
    • Auditing support [ ]
    • (14) Kernel log buffer size
    • Create deprecated sysfs layout for older userspace tools [ ]
    • UTS namespace [ ]
  2. Enable loadable module support :

  3. Enable the block layer :

  4. Processor type and features :

    • Tickless System (Dynamic Ticks) [ ]
    • High Resolution Timer Support [ ]
    • Symmetric multi-processing support [ ]
    • Processor family (Core 2/newer Xeon)
    • Preemption Model (preemptible Kernel)
    • Machine Check Exception [ ]
    • Toshiba Laptop support [ ]
    • Dell laptop support [ ]
    • dev/cpu/microcode [ ]
    • dev/cpu/*/msr [ ]
    • EFI runtime service support [ ]
    • Enable seccomp to safely compute untrusted bytecode [ ]
  5. Power management and ACPI options :

    –> ACPI (Advanced Configuration and Power Interface) Suport : [*]

    • AC Adapter [ ]
    • Battery [ ]
    • Smart Battery System [ ]

    –> APM (Advanced Power Management) BIOS support [ ]

    –> CPU Frequency scaling :

    • CPU Frequency scaling [ ]
  6. Bus options (PCI etc.) :

    • NatSemi SCx200 support [ ]
    • PCCard (PCMIA/CardBus) support [ ]
    • Support for PCI Hotplug [ ]
  7. Networking support :

    –> Networking options :

    • IP: advanced router [ ]
    • IP: multicast routing [ ]
    • The IPv6 protocol [ ]
    • On peut décocher toutes les options qui viennent après “Classical IP over ATM”

    –> Amateur Radio support [ ]
    –> IrDA (infrared) subsystem support [ ]
    –> Bluetooth subsystem support [ ]
    –> Wireless (NEW) [ ]

8) Device Drivers :

--> Generic Driver Options :
* Select only drivers that don't need compile-time external firmware [ ]

--> Connector - unified userspace <-> kernelspace linker [ ]
--> Memory Technology Device (MTD) support [ ]

--> Parallel port support [M] : 
* Multi-IO cards (parallel and serial) [ ]
* AX88796 Parallel Port [ ]
* IEE 1284 transfer modes [ ]

--> Plug and Play support :
* PNP debugging messages [ ]
* Plug and Play BIOS support [ ]

--> Block devices [*] :
* XT hard disk support [ ]
* Parallel port IDE device support [ ] 
* Compaq SMART2 support [ ]
* Compaq Smart Array 5xxx support [ ]
* Mylex DAC960/DAC1100 PCI RAID Controller support [ ]
* Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL) [ ] 
* Cryptoloop Support [ ]
* Promise SATA SX8 support [ ]
* ATA over Ethernet support [ ]
* Virtio block driver (EXPERIMENTAL) [ ]

--> Misc devices [ ]

--> ATA/ATAPI/MFM/RLL support [M]:
* Include IDE/ATAPI TAPE support [ ]
* IDE ACPI support [ ]
* CMD640 chipset bugfix/support [ ]
* PNP EIDE support [ ]
* OPTi 82C621 chipset enhanced support (EXPERIMENTAL) [ ]
* RZ1000 chipset bugfix/support [ ]
* AEC62XX chipset support [ ]
* ALI M15x3 chipset support [ ]
* AMD ans nVidia IDE support [ ]
* ATI IXP xhipset IDE support [ ]
* CMD64{3|6|8|9} chipset support [ ]
* Compaq Triflex IDE support [ ]
* Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL) [ ]
* Cyrix/National Semiconductor CS5530 MediaGX chipset support [ ]
* AMD CS5535 chipset support [ ]
* HPT36X/37X chipset support [ ]
* JMicron JMB36x support [ ]
* National SCx200 chipset support [ ]
* IT8213 IDE support [ ]
* IT821X IDE support [ ]
* NS87415 chipset support [ ]
* PROMISE PDC202{46|62|65|67} support [ ]
* PROMISE PDC202{68|69|70|71|75|76|77} support [ ]
* ServerWorks OSB4/CSB5/CSB6 chipsets support [ ]
* Silicon Image chipset support [ ]
* SiS5513 chipset support [ ]
* SLC90E66 chipset support [ ] 
* Tekram TRM290 chipset support [ ]
* VIA82CXXX chipset support [ ]
* Toshiba TC86C001 support [ ]

--> SCSI device support :
* RAID Transport Class [ ]
* legacy /proc/scsi/ support [ ]
* SCSI tape support [ ]
* SCSI OnStream SC-x0 tape support [ ]
* SCSI CDROM support [ ]
* SCSI media changer support [ ]
* Probe all LUNs on each SCSI device [ ]
* Verbose SCSI error reporting (kernel size +=12K) [ ]
* Asynchronous SCSI scanning [ ]
* SCSI low-level drivers [ ]

--> Serial ATA (prod) and Parallel ATA (experimental) drivers [ ]
--> Multiple devices driver support (RAID and LVM) [ ]
--> Fusion MPT device support [ ]

--> IEE 1394 (FireWire) support :
* Stable FireWire stack [ ]
 
--> I20 device support [ ]

--> Network device support [*] :
* Enable older network device API compatibility [ ]
* Dummy net driver support [ ]
* Bonding driver support [ ]
* EQL (serial line load balancing) support [ ]
* Universal TUN/TAP device driver support [ ]
* Virtual ethernet pair device [ ]
* General Instruments Surfboard 1000 [ ]
* ARCnet support [ ]
* PHY Device support and infrastructure : tout décocher

* Ethernet (10 or 100Mbit) [*] :
  > Sun Happy Meal 10/100baseT support [ ]
  > Sun GEM support [ ]
  > Sun Cassini support []
  > 3COM cards [ ]
  > AMD LANCE and PCnet (AT1500 and NE2100) support [ ]
  > Western Digital/SMC cards [ ]
  > Racal-Interlan (Micom) NI cards [ ]
  > "Tulip" family network device support [ ]
  > DEPCA, DE10x, DE200, DE201, DE202, DE422 support [ ]
  > HP 10/100VG PCLAN (ISA, EISA, PCI) support [ ]
  > Other ISA cards [ ]
  > AMD 8111 (new PCI lance) support [ ]
  > Adaptec Starfire/DuraLAN support [ ]
  > Apricot Xen-II on board Ethernet [ ]
  > Broadcom 440x/47xx ethernet support [ ]
  > nForce Ethernet support [ ]
  > CS89x0 support [ ]
  > Myson MTD-8xx PCI Ethernet support [ ]
  > National Semiconductor DP8381x series PCI Ethernet support [ ]
  > PCI NE2000 and clones support [ ]
  > Support for uncommon RTL-8139 rev. K [ ]
  > Support for older RTL-8129/8130 boards [ ]
  > RDC R6040 Fast Ethernet Adapter support [ ]
  > SiS 900/7016 PCI Fast Ethernet Adapter support [ ]
  > SMC EtherPower II [ ]
  > Sundance Alta support [ ]
  > TI ThunderLAN support [ ]
  > VIA Rhine support [ ]


* Ethernet (1000 Mbit) [ ] 
* Ethernet (10000 Mbit) [ ]
* Token Ring driver support [ ]
* Wireless LAN : décocher "Wireless LAN (pre-802.11)" et "Wireless LAN (IEE 802.11)"
* USB Network Adapters : décocher "USB CATC NetMate-based Ethernet device support", "USB KLSI KL5USB101-based ethernet device support", "USB Pegasus/Pegasus-II based ethernet device support", "USB RTL8150 based ethernet device support" et "Multi-purpose USB Networking Framework"
* Wan interfaces support [ ]
* ATM drivers [*] : décocher "Dummy ATM driver"
* FDDI driver support [ ]
* HIPPI driver support [ ]
* PLIP (parallel port) support [ ]
* PPP multilink support [ ]
* PPP over Ethernet [ ]
* PPP over L2TP [ ]
* SLIP (serial line) support [ ]
* Fibre Channel driver support [ ]
* Network console logging support [ ]
* Virtio network driver [ ]

--> Telephony support [ ]

--> Input device support :
* Joystick interface [ ]
* Joysticks/Gamepads [ ]
* Tablets [ ]
* Touchscreens [ ]

--> Character devices :
* IPMI top-level message handler [ ]
* Double Talk PC internal speech card support [ ]

--> SPI support [ ]

--> Multifunction device drivers : 
* Support for Silicon Motion SM501 [ ] 
* HTC PASIC3 LED/DS1WM chip support [ ]    

--> Multimedia devices :
* Enable Video For Linux API 1 (DEPRECATED) [ ]
* Enable Video For Linux API 1 compatible Layer [ ]
* DVB for Linux [ ]
* Load and attach frontend and tuner driver modules as needed [ ]
* Video capture adapters [ ]
* Radio Adapters [ ]

--> Graphics support :
* /dev/agpgart (AGP Support) [ ]
* Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) [ ]
* Lowlevel video output switch controls [ ]
* Support for frame buffer devices [ ]

--> Sound card support [ ]
--> HID Devices [ ]

--> USB support [*] :
* OHCI HCD support [ ]
* USB testing driver [ ]
  1. Firmware drivers

  2. File systems :

    –> Ext2 extended attributes [ ]
    –> Ext3 extended attributes [ ]
    –> ReiserFS extended attributes [ ]
    –> JFS filesystem support [ ]
    –> XFS filesystem support [ ]
    –> Report quota messages through netlink interface [ ]
    –> Print quota warnings to console (OBSOLETE) [ ]
    –> Old quota format support [ ]
    –> Quota format v2 support [ ]
    –> Kernel automounter support [ ]
    –> Kernel automounter version 4 support (also supports v3) [ ]
    –> FUSE (Filesystem in Userspace) support [ ]

    –> DOS/FAT/NT Filesystems :

    • NTFS write support [ ]

    –> Pseudo filesystems :

    • Tmpfs POSIX Access Control Lists [ ]
    • HugeTLB file system support [ ]

    –> Miscellaneous filesystems [ ]

    –> Network File Systems : [*]

    • NFS client support for NFS version 4 (EXPERIMENTAL) [ ]
    • NFS server support for NFS version 4 (EXPERIMENTAL) [ ]
    • Secure RPC: Kerberos V mechanism (EXPERIMENTAL) [ ]
    • Secure RPC: SPKM3 mechanism (EXPERIMENTAL) [ ]
    • CIFS support (advanced network filesystem, SMBFS successor) [ ]
    • NCP file system support (to mount NetWare volumes) [ ]
    • Coda file system support (advanced network fs) [ ]
    • Andrew File System support (AFS) (EXPERIMENTAL) [ ]

    –> Partition Types :

    • Acorn partition support [ ]
    • Alpha OSF partition support [ ]
    • Amiga partition table support [ ]
    • Atari partition table support [ ]
    • Macintosh partition map support [ ]
    • BSD disklabel (FreeBSD partition tables) support [ ]
    • Minix subpartition support [ ]
    • Solaris (x86) partition table support [ ]
    • Unixware slices support [ ]
    • SGI partition support [ ]
    • Ultrix partition table support [ ]
    • Sun partition tables support [ ]
    • Karma Partition support [ ]
    • EFI GUID Partition support [ ]

    –> Native language support : [M]

    • J’ai tout décoché excepté “Codepage 437 (United States, Canada)”, “ASCII (United States)” et “NLS UTF-8”
  3. Cryptographic API :

    • Null algorithms [ ]
    • Testing module [ ]
    • CCM support [ ]
    • GCM/GMAC support [ ]
    • CTR support [ ]
    • CTS support [ ]
    • LRW suport [ ]
    • XTS support [ ]
    • XCBC support [ ]
    • MD4 digest algorithm [ ]
    • Michael MIC keyed digest algorithm [ ]
    • SHA384 and SHA512 digest algorithms [ ]
    • Tiger digest algorithms [ ]
    • Whirlpool digest algorithms [ ]
    • AES cipher algorithms (i586)
    • Anubis cipher algorithm [ ]
    • Blowfish cipher algorithm [ ]
    • Camellia cipher algorithms [ ]
    • CAST5 (CAST-128) cipher algorithm [ ]
    • CAST6 (CAST-256) cipher algorithm [ ]
    • Khazad cipher algorithm [ ]
    • Salsa20 stream cipher algorithm [ ]
    • Salsa20 stream cipher algorithm (i586) [ ]
    • SEED cipher algorithm [ ]
    • Serpent cipher algorithm [ ]
    • TEA, XTEA and XETA cipher algorithms [ ]
    • Twofish cipher algorithm [ ]
    • Twofish cipher algorithms (i586) [ ]
    • LZ0 compression algorithm [ ]
    • Hardware crypto devices [ ]

Est-ce qu’il y aurait des modules que j’ai décoché qui étaient super importants et donc qu’il faudrait que je recoche? et des modules qui vont servir lorsque je vais enlever cette initramfs…?

Malheureux ! tu veux ma mort en me balançant des centaines d’options du noyau ?
Il y a belle lurette que je n’ai pas configuré un noyau à partir de zéro. Je me contente d’activer les options qui m’intéressent spécifiquement. Lors d’une nouvelle version, je passe un coup de make silentoldconfig pour configurer les nouvelles options, et :

  • si je ne comprends pas l’option, je laisse la valeur par défaut
  • si je suis sûr de ne pas en avoir besoin je mets N
  • si je peux en avoir besoin, je mets Y ou M.

Je vois que tu as désactivé des options générales que les descriptions conseillent d’activer. On ne sait jamais, quelque chose peut en avoir besoin et à mon avis ça ne ralentira pas beacoup le démarrage, tout au plus le noyau sera un peu plus gros.

L’option SMP n’est-elle pas nécessaire pour exploiter les processeurs multi-coeurs ou bien je me trompe ?

Dans les jeux de caractères j’ajoute ISO-8859-1 (latin-1) et -15 (latin 9 avec symbole monétaire euro), même si je ne sais pas vraiment à quoi ça sert.

Ensuite je ne connais pas ton matériel, donc je ne sais pas de quels pilotes tu as besoin.

Comme te le dit PascalHambourg n’appelle pas mkinitramfs et supprime initrd dans l’entrée de grub si tu n’en veux pas.

Tu dis ne pas avoir de rapport d’erreur
De manière absurde je te dirais :
pas de message d’erreur, pas d’erreur .

Si l’erreur est d’avoir initramfs au démarrage, c’est normal si tu appelles initrd et que tu le mettes dans les options du noyau.

initramfs est présent depuis linux 2.6.13, tous les noyaux antérieurs démarraient sans initramfs

Au temps jadis où on démarrait avec un noyau sans initrd depuis une disquette , l’attente se comptait en longues minutes.
Les minutes sont devenues maintenant des secondes.

Je n’ai pas de méthode miracle à te proposer, seulement une méthode laborieuse.
Tu compiles, tu testes, tu repères où ça coince et tu recommences
Temps et patience ,perséverance et ajustement jusqu’à l’obtention du but recherché.

Je ne suis pas sûr de comprendre la remarque. Les noyaux antérieurs comme le 2.6.8 de sarge pouvaient utiliser un initrd, ce qui est à peu près la même chose. Et tous les noyaux, antérieurs et postérieurs, peuvent démarrer sans initrd ou initramfs.