Welcome to the Linux Foundation Forum!

Loading Initial Ramdisk... and my boot freezes

Hey Guys!!
I updated my grub in my ubuntu 20.04 after building my new kernel which is version 5.8.18. After this process, I checked my /boot directory the initrd.img-5.8.18 was also present. But once I boot into this kernel. I get "Loading Initial RamDisk ..." and my boot freezes. Anybody can help me out please.. I have been held up here for more than a week. I tried building around 5 kernels. Every time I build it, boot freezes and same issue pertains. Thanks in advance :). My mail id is sudesh.skofficial@gmail.com

Comments

  • coop
    coop Posts: 916

    one possibility is you do not have the proper disk drivers. This is particularly true if you are building in a hypervisor as they have various ideas of what to use. Building from your own custom kernel can be a non-trivial process. If you are lucky enough to get it right the first time or two, great. Otherwise, you should start from a working configuration and then try to get rid of stuff you don't need.

    If you boot into the Ubuntu stock kernel and then go to the custom kernel building directory, I would do:

    cp .config .config_MINETOSAVE
    make localmodconfig
    (answer all questions asked, usually just take the default by hitting return)

    and then whatever you do to compile and install, such as:
    make -j 4 && make modules_install && make install
    (or whatever your procedure is).

    The make localmodconfig should make sure you are getting all the modules built you currently are running.

  • coop
    coop Posts: 916

    make that "mv .config .config_MINETOSAVE" so you are clearly starting over, and once it works you can add and subtract tot he
    configuration

  • @coop said:
    make that "mv .config .config_MINETOSAVE" so you are clearly starting over, and once it works you can add and subtract tot he
    configuration

    @coop said:
    one possibility is you do not have the proper disk drivers. This is particularly true if you are building in a hypervisor as they have various ideas of what to use. Building from your own custom kernel can be a non-trivial process. If you are lucky enough to get it right the first time or two, great. Otherwise, you should start from a working configuration and then try to get rid of stuff you don't need.

    If you boot into the Ubuntu stock kernel and then go to the custom kernel building directory, I would do:

    cp .config .config_MINETOSAVE
    make localmodconfig
    (answer all questions asked, usually just take the default by hitting return)

    and then whatever you do to compile and install, such as:
    make -j 4 && make modules_install && make install
    (or whatever your procedure is).

    The make localmodconfig should make sure you are getting all the modules built you currently are running.

    Hello Coop!
    Actually before using the commands, 1. make -j 4 2. make modules_install and 3. make install, I did "cp /boot/config-uname -r .config" to copy the old configurations and then did "yes ' ' | make oldconfig" After this I may need make menuconfig to customize my kernel because I don't need so many drivers, etc. Once after all this is done, I am doing 1. , 2. and 3. I also went into my "grub.cfg" to see if something is different for the custom built kernel from the one which is perfectly booting. Everything is the same. I also checked /boot directory. All the necessary files are created for boot say for eg, 1. vmlinuz-5.8.18, 2.initrd.img-5.8.18, 3. System.map-5.8.18 and 4. config-5.8.18. I will also try the above steps that you have mentioned and check if it works. What does the "cp .config .config_MINETOSAVE" mean? Am I copying my current .config file, and where should I move or copy it to? Thanks a ton, Coop! Have a great day :)

  • coop
    coop Posts: 916

    the .config_MINETOSAVE just means keep a copy of your old config in case you want to resurrect it, nothing special about the name. You did indeed follow a good procedure. The only suggestion I would make is:

    1) Starting with the Ubuntu working kernel config, do not customize the kernel to eliminate un-needed drivers before you recompile. Yes it will take infinity to compile, but this makes sure you did not inadvertently excise something needed. This approach rarely fails.

    2) You could also try starting with NO config file at all and do "make localmodconfig" which should compile only drivers in current use. You might try this first as it is faster

    Also you have not said if this is a VM or an actual physical machine. The kind of errors you report often happen with VirtualBox in particular which sometimes makes funny choices for disk drivers.

    Sometimes the new distros are a little weird. Fedora 33 now requires you have "zram" enabled in the kernel configuration as it uses it by default for swap. I found this out the hard way, with configurations that had always worked before refusing to boot.

    Hope this is helpful. Good luck!

  • @coop said:
    the .config_MINETOSAVE just means keep a copy of your old config in case you want to resurrect it, nothing special about the name. You did indeed follow a good procedure. The only suggestion I would make is:

    1) Starting with the Ubuntu working kernel config, do not customize the kernel to eliminate un-needed drivers before you recompile. Yes it will take infinity to compile, but this makes sure you did not inadvertently excise something needed. This approach rarely fails.

    2) You could also try starting with NO config file at all and do "make localmodconfig" which should compile only drivers in current use. You might try this first as it is faster

    Also you have not said if this is a VM or an actual physical machine. The kind of errors you report often happen with VirtualBox in particular which sometimes makes funny choices for disk drivers.

    Sometimes the new distros are a little weird. Fedora 33 now requires you have "zram" enabled in the kernel configuration as it uses it by default for swap. I found this out the hard way, with configurations that had always worked before refusing to boot.

    Hope this is helpful. Good luck!

    My entire procedure is mentioned below, sir.

    I updated my grub in my ubuntu 20.04 after building my new kernel which is version 5.8.18. After this process, I checked my /boot directory the following were present,

    1. vmlinuz-5.8.18

    2. initrd.img-5.8.18

    3. System.map-5.8.18 and

    4. config-5.8.18.

    In /var/lib/initramfs-tools/ my 5.8.18 file is present. So I don't know where am doing wrong.

    But once I boot into this kernel. I get "Loading Initial RamDisk ..." and my boot freezes. Anybody can help me out please.. I have been held up here for more than a week. I tried building around 5 kernels. Every time I build it, boot freezes and same issue pertains.

    Do the linux-headers-version play a vital role in loading the temporary root file system into the initial ramdisk during the boot process. Because my current working kernel which is "5.4.0-53-generic" has a "linux-headers-5.4.0-53-generic directory" in the /usr/src location.

    I used the following commands to build my kernel,

    1. mkdir kernel

    2. cd kernel

    3. git clone -b linux-5.8.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

    4. cd linux-stable/

    5. make mrproper

    6. cp /boot/config-uname -r .config

    7. yes '' | make oldconfig

    8. make menuconfig

    9. make -j 4

    10. make modules_install

    11. make install

    12. cd /boot; mkinitramfs -k 5.8.18 -o initrd.img-5.8.18

    13. sudo update-grub

    My mail id is sudesh.skofficial@gmail.com Thanks in advance :).

    I am using Mi Notebook 14 from Xaomi which is an Intel Core i5 system and it is not a Virtual Machine, sir.

  • Check and see if you have CONFIG_DECOMPRESS_LZ4 compiled static. If you see CONFIG_DECOMPRESS_LZ4=y - you are good. You might have to recompile your older kernels with CONFIG_DECOMPRESS_LZ4 as a static.

Categories

Upcoming Training