# recompile module kernel[Loading initial ramdisk][Resuelto]

## chrootman

Cómo volver a recompilar los módulos(por ejemplo de virtualbox vboxdrv o de cdemu vhba) de un kernel que ya no aparece porque se enmascaró gentoo-sources o se eliminó de eselect? porque sigo ocupando ese kernel antiguo, pero ya no está disponible para reconfigurarlo. 

```
uname -a

5.13.0-gentoo-x86_64
```

```
eselect kernel list

Available kernel symlink targets:

  [1]   linux-5.16.10-gentoo *
```

Lo saque de /var/lib/portage/world con deselect y emerge -C y traté de instalar una versión determinada, pero no me deja, incluso con los que aparecen el el árbol después de hacer un emerge --sync.

```
>>> Waiting 5 seconds before starting...

>>> (Control-C to abort)...

>>> Unmerging in: 5 4 3 2 1

>>> Unmerging (1 of 2) sys-kernel/gentoo-sources-5.13.0...

>>> Unmerging (2 of 2) sys-kernel/gentoo-sources-5.16.9...

 * Note: Even though you have successfully unmerged 

 * your kernel package, directories in kernel source location: 

 * /usr/src/linux-5.16.9-gentoo

 * with modified files will remain behind. By design, package managers

 * will not remove these modified files and the directories they reside in.

 * For more detailed kernel removal instructions, please see: 

 * https://wiki.gentoo.org/wiki/Kernel/Removal

 * GNU info directory index is up-to-date.
```

```
sys-kernel/gentoo-sources/gentoo-sources-4.14.267.ebuild

sys-kernel/gentoo-sources/gentoo-sources-4.19.230.ebuild

sys-kernel/gentoo-sources/gentoo-sources-4.9.302.ebuild

sys-kernel/gentoo-sources/gentoo-sources-5.10.101.ebuild

sys-kernel/gentoo-sources/gentoo-sources-5.15.24.ebuild

sys-kernel/gentoo-sources/gentoo-sources-5.16.10.ebuild

sys-kernel/gentoo-sources/gentoo-sources-5.4.180.ebuild
```

```
emerge =sys-kernel/gentoo-sources-5.13.0

 * IMPORTANT: 5 news items need reading for repository 'gentoo'.

 * Use eselect news read to view new items.

Calculating dependencies... done!

emerge: there are no ebuilds to satisfy "=sys-kernel/gentoo-sources-5.13.0".
```

```
emerge --ask --noreplace gentoo-sources:5.13.0

 * IMPORTANT: 5 news items need reading for repository 'gentoo'.

 * Use eselect news read to view new items.

These are the packages that would be merged, in order:

Calculating dependencies... done!

emerge: there are no ebuilds to satisfy "gentoo-sources:5.13.0".
```

Si ejecuto emerge --quiet @module-rebuild va a hacerlo contra el último (linux-5.16.10-gentoo)

Y el problema es que el último tiene el problema de "Loading initial ramdisk stuck", en realidad se queda estancado unos minutos y luego se comporta como el otro, he probado desde cambiar la compresión a mode (LZ4), agregar CONFIG_FB_SIMPLE, sacar intel-ucode, agregar a GRUB_CMDLINE_LINUX_DEFAULT dis_ucode_ldr, acpi=off, habilitar y deshabilitar Support for frame buffer devices, VESA VGA graphics support etc, make proper, make clean, make oldconfig, etc pero igual se demora 4 minutos(linux-5.16.10-gentoo) y el otro (gentoo-sources:5.13.0) unos 5 segundos, pero si no se enmascara, se recompila automáticamente con la config por defecto, y si se hace, entonces desaparace y no se pueden recompilar los módulos. También intenté copiando los módulos a initramfs o usando también --no-ramdisk-modules para dejar todo en la imagen pero de ninguna forma funciona. Es primera vez que me pasa en gentoo, al menos.Last edited by chrootman on Fri May 13, 2022 12:11 am; edited 3 times in total

----------

## quilosaq

Puedes volver a construir el núcleo 5.13.0 a partir de las fuentes. Necesitaras crear un repositorio local

https://wiki.gentoo.org/wiki/Handbook:AMD64/Portage/CustomTree/es#Definir_un_repositorio_de_ebuild_personalizado

Y meter dentro el ebuild del núcleo que quieres:

https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-kernel/gentoo-sources/gentoo-sources-5.13.0.ebuild?id=95df55d64c2d4da9296a3b1ef6903f9e6eb64dbf

----------

## chrootman

Interesante, lo voy a intentar.

----------

## chrootman

Lo que encontré es que se puede hacer de 2 formas, pero con la segunda eselect me muestra el kernel que quiero, con el otro entonces habría crear el enlace simbólico.

https://wiki.gentoo.org/wiki/Handbook:AMD64/Portage/CustomTree/es#Definir_un_repositorio_de_ebuild_personalizado

```
mkdir -p /usr/local/portage/overlay/{metadata,profiles}

chown portage:portage /usr/local/portage/overlay

echo 'chrootman' > /usr/local/portage/overlay/profiles/repo_name

nano /usr/local/portage/overlay/metadata/layout.conf

masters = gentoo

auto-sync = false

[code]cd /etc/portage/repos.conf

nano /etc/portage/repos.conf/chrootman.conf

[chrootman]

location = /usr/local/portage/overlay[/code]

[code]mkdir -p /usr/local/portage/overlay/sys-kernel/gentoo-sources

cd /usr/local/portage/overlay/sys-kernel/gentoo-sources

wget https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-kernel/gentoo-sources/gentoo-sources-5.13.0.ebuild?id=95df55d64c2d4da9296a3b1ef6903f9e6eb64dbf[/code]

mv gentoo-sources-5.13.0.ebuild\?id\=95df55d64c2d4da9296a3b1ef6903f9e6eb64dbf 

gentoo-sources-5.13.0.ebuild 

chown -R portage:portage /usr/local/portage/overlay/*

ebuild /usr/local/portage/overlay/sys-kernel/gentoo-sources/gentoo-sources-5.13.0.ebuild manifest

cd /usr/local/portage/overlay/sys-kernel/gentoo-sources

nano /etc/portage/make.conf

PORTDIR_OVERLAY="/usr/local/portage/overlay/"
```

```
mkdir -p /usr/local/portage/overlay/profiles

touch /usr/local/portage/overlay/profiles/repo_name

echo "chrootman" >> /usr/local/portage/overlay/profiles/repo_name

ebuild gentoo-sources-5.13.0.ebuild compile
```

---------------------------------------------------------------------------------------------------------

https://wiki.gentoo.org/wiki/Creating_an_ebuild_repository

https://wiki.gentoo.org/wiki/Eselect/Repository

```
emerge --ask app-eselect/eselect-repository

eselect repository create chrootman

cd /var/db/repos/chrootman/

git init

git add .

git commit

mkdir -p /var/db/repos/chrootman/sys-kernel/gentoo-sources

cp /usr/local/portage/overlay/sys-kernel/gentoo-sources/gentoo-sources-5.13.0.ebuild /var/db/repos/chrootman/sys-kernel/gentoo-sources

cd sys-kernel/gentoo-sources/

chown -R portage:portage /var/db/repos/chrootman

pushd /var/db/repos/chrootman/sys-kernel/gentoo-sources

cd /var/db/repos/chrootman/sys-kernel/gentoo-sources

gentoo-sources-5.13.0.ebuild manifest

chown -R portage:portage /var/db/repos/chrootman/*

ebuild gentoo-sources-5.13.0.ebuild manifest

popd
```

```
emerge =sys-kernel/gentoo-sources-5.13.0
```

```
eselect kernel list

Available kernel symlink targets:

  [1]   linux-5.13.0-gentoo

  [2]   linux-5.16.10-gentoo *
```

```
eselect kernel set 1

eselect kernel list

Available kernel symlink targets:

  [1]   linux-5.13.0-gentoo *

  [2]   linux-5.16.10-gentoo
```

```
cp /etc/kernels/kernel-config-5.13.0-gentoo-x86_64 /usr/src/linux/.config

cd /usr/src/linux

make oldconfig

make modules_prepare

emerge --quiet @module-rebuild
```

----------

## chrootman

Al final resulto que el kernel 13 al recompilarlo adquirió el mismo problema de los 5 minutos en espera de los otros(es en la única distro que me pasa), creo que el problema puede ser microcode pero sacando eventualmente intel-uc y no amd del /boot porque de lo contrario pasa el monitor de no signal de 3 segundos a el completo booteo (que es rápido porque donde se demora realmente es en 'loading initial ramdisk') con no signal, pero luego sale de ese estado y aparece slim y si puedo iniciar la sesión igualmente, también intente quitando el use -initramfs de package.use de sys-firmware/intel-microcode, pero no hay ninguna mejora, lo mismo intentando sacarlo del kernel "Firmware blobs root directory". 

También puede ser la bios porque si no agrego net.ifnames=0 biosdevname=0 como parámetro del grub entonces me cambia las interfaces y no puedo iniciar virtualbox. Por otro lado si no se quiere que el --deepclean elimine las sources de un kernel determinado durante el world update hay que agregar manualmente sys-kernel/gentoo-sources:X.XX.X a /var/lib/portage/world, también el problema radica en haber hecho muchos cambios a  dsdt y que al sacarlo systemd sigue pensando de alguna manera que están esas opciones según lo que me muestra dmesg del arranque. Otra cosa que hice fue restaurar con rsync a otro disco pero sacando la partición boot y real_root=UIID, que aunque cambie todo como se debe de alguna forma eso tal vez generó esa ralentización en el arranque.

----------

## chrootman

Resucite el pc sacándole la pila y cambiando los voltages, al parecer tiene un zócalo defectuoso porque a veces acepta una memoria y otras veces no y hace tiempo tuve el mismo problema en la misma fecha pero con solo hacer un clear cmos la terminó aceptando en esa ocación. Ahora compile otro kernel con practicamente las mismas opciones y no se demora 3 segundos sino que 40 segundos, lo que es aceptable comparado con los 5 minutos del otro. Parece ser un problema de los kernels nuevos porque en otras distros pasa lo mismo pero la diferencia es que el último kernel de arch linux se demora en esta misma máquina 3 segundos, agregue opciones como pci=noaer pci=nomsi acpi_osi=off acpi=off noapic random.trust_cpu=on iommu=soft intremap=no_x2apic_optout nox2apic, etc las cuales no cambiaron nada. ¿Alguien sabe cuál es el mejor kernel y más estable en este tipo de situaciones en gentoo? Su numeración exacta?

----------

## quilosaq

¿Has probado a usar sólo el núcleo Linux sin ningún ramdisk? ¿Usas genkernel? ¿Usas grub?

----------

## chrootman

 *quilosaq wrote:*   

> ¿Has probado a usar sólo el núcleo Linux sin ningún ramdisk? ¿Usas genkernel? ¿Usas grub?

 

Sin ningún ramdisk significa usar el parametro --no-ramdisk-modules?

```
make -j3 -s && make -j3 modules_install && make install

genkernel --no-ramdisk-modules initramfs
```

, lo hice y se demora lo mismo, aunque no recuerdo bien si me mostraba el mismo mensaje. Uso genkernel y grub en gentoo al igual que en archlinux(3 y 40seg demora tal como el kernel 13 de gentoo), pero en gentoo se demora 5 min el último. También he usado el kernel dist con dracut y también se demora. Estaba pensando usar rEFInd porque en la misma máquina tengo en otro disco un esquema de particionamiento EFI GTP con clover que funciona a la perfección, sin ningún retraso, a pesar de que es BIOS. Pero he encontrado algo muy detallado sobre como usarlo, pero lo voy a intentar luego.

----------

## quilosaq

 *chrootman wrote:*   

> ...
> 
> Sin ningún ramdisk significa usar el parametro --no-ramdisk-modules?
> 
> ...

 

No. Simplemente no generes un initramfs ni con genkernel ni de ninguna otra manera. El initramfs solo es necesario en algunas situaciones. Si ya lo tienes generado prueba a eliminarlo o renombrarlo (para que grub no lo detecte) y regenera el archivo de configuración de grub.

----------

## chrootman

 *quilosaq wrote:*   

>  *chrootman wrote:*   ...
> 
> Sin ningún ramdisk significa usar el parametro --no-ramdisk-modules?
> 
> ... 
> ...

 

Excelente. Graaaacias!!   :Idea: 

Por fin!   :Laughing: 

----------

