Revert to Standard Ubuntu Kernel on OVH or Kimsufi Servers

I have a cheap dedicated server running Ubuntu Linux — the 8.04 LTS “Hardy Heron” release — with Kimsufi, the budget arm of French hosting company OVH. All their Linux servers (and FreeBSD servers too, I think) are provisioned with their own custom, static kernel. This, they say, makes it “secure”. It also makes it a pain in the ass to use, since you lose kernel module functionality. So I went through this scary, but straightforward process to put the standard Ubuntu kernel back. Note that I did this procedure on their entry level C-05G server, and your mileage may vary dependent on which server you lease from them, and what hardware specification you have (and ergo what kernel drivers you’ll need). Stuff you should type below is in bold type.

Update 2013-01-01: So using Ubuntu 12.04 makes this process soooo much easier. All you need to do (if you’re not using RAID) is the following:

neuro@valiant:~$ sudo su -
root@valiant:~# apt-get install linux-image-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
crda iw linux-image-3.2.0-35-generic wireless-regdb
Suggested packages:
fdutils linux-doc-3.2.0 linux-source-3.2.0 linux-tools
The following NEW packages will be installed:
crda iw linux-image-3.2.0-35-generic linux-image-server wireless-regdb
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.6 MB of archives.
After this operation, 150 MB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 precise/main wireless-regdb all 2011.04.28-1ubuntu3 [6,164 B]
Get:2 precise/main crda amd64 1.1.2-1ubuntu1 [15.2 kB]
Get:3 precise-updates/main linux-image-3.2.0-35-generic amd64 3.2.0-35.55 [38.5 MB]
Get:4 precise/main iw amd64 3.2-1 [50.4 kB]
Get:5 precise-updates/main linux-image-server amd64 [2,618 B]
Fetched 38.6 MB in 6s (5,797 kB/s)
Selecting previously unselected package wireless-regdb.
(Reading database ... 24873 files and directories currently installed.)
Unpacking wireless-regdb (from .../wireless-regdb_2011.04.28-1ubuntu3_all.deb) ...
Selecting previously unselected package crda.
Unpacking crda (from .../crda_1.1.2-1ubuntu1_amd64.deb) ...
Selecting previously unselected package linux-image-3.2.0-35-generic.
Unpacking linux-image-3.2.0-35-generic (from .../linux-image-3.2.0-35-generic_3.2.0-35.55_amd64.deb) ...
Selecting previously unselected package iw.
Unpacking iw (from .../archives/iw_3.2-1_amd64.deb) ...
Selecting previously unselected package linux-image-server.
Unpacking linux-image-server (from .../linux-image-server_3. ...
Processing triggers for man-db ...
Setting up wireless-regdb (2011.04.28-1ubuntu3) ...
Setting up crda (1.1.2-1ubuntu1) ...
Setting up linux-image-3.2.0-35-generic (3.2.0-35.55) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-35-generic /boot/vmlinuz-3.2.0-35-generic
update-initramfs: Generating /boot/initrd.img-3.2.0-35-generic
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.2.0-35-generic /boot/vmlinuz-3.2.0-35-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.2.0-35-generic /boot/vmlinuz-3.2.0-35-generic
Generating grub.cfg ...
Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
Found linux image: /boot/vmlinuz-3.2.0-35-generic
Found initrd image: /boot/initrd.img-3.2.0-35-generic
No volume groups found
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sda1
Found Ubuntu 12.04 LTS (12.04) on /dev/sdb1
Setting up iw (3.2-1) ...
Setting up linux-image-server ( ...
root@valiant:~# mkdir ~/ovh.d
root@valiant:~# mv /etc/grub.d/06_OVHkernel ~/ovh.d

root@valiant:~# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-35-generic
Found initrd image: /boot/initrd.img-3.2.0-35-generic
No volume groups found
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sda1
Found Ubuntu 12.04 LTS (12.04) on /dev/sdb1
root@valiant:~# shutdown -r -f now

When installing the stock Ubuntu kernel, you’ll be prompted where to install the grub-pc bootloader; install it to /dev/sda, so you’ll boot from the MBR on the first hard disk (as long as you’re not using RAID). The server should reboot into the new kernel. Remember the instructions below: if it doesn’t respond to pings after a few minutes, try reconfiguring the server from the OVH control panel to netboot from the rescue kernel. E&OE, YMMV, and enjoy!

Update 2011-07-28: I just rented one of Kimsufi’s new 16G servers running Ubuntu 10.04 LTS “Lucid Lynx”, and the procedure below worked perfectly.

Update 2012-06-14: Thanks to Desdenova who had some issues and documented how to get round them. Cheers!

First, let’s check what kernel we’re running:

neuro@hera:~$ uname -a
Linux hera #6 SMP Fri Aug 14 10:29:05 UTC 2009 x86_64 GNU/Linux

Yup, some scary, weird kernel that OVH have compiled and installed themselves — although to be fair, they do provide kernel configs to compile a different variant yourself, but I wanted to use the stock Ubuntu 64-bit kernel.

So after doing sudo apt-get update && sudo apt-get upgrade to make sure everything else is up to date, let’s install the GRUB boot loader, and the stock Ubuntu Server kernel image.

neuro@hera:~$ sudo apt-get install linux-server grub
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
linux-image-2.6.24-24-server linux-image-server
Suggested packages:
grub-doc mdadm linux-doc-2.6.24 linux-source-2.6.24
The following NEW packages will be installed
grub linux-image-2.6.24-24-server linux-image-server linux-server
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.4MB of archives.
After this operation, 111MB of additional disk space will be used.
Do you want to continue [Y/n]?
Get: 1 hardy-updates/main grub 0.97-29ubuntu21.1 [871kB]
Get: 2 hardy-security/main linux-image-2.6.24-24-server 2.6.24-24.59 [17.8MB]
Get: 3 hardy-security/main linux-ubuntu-modules-2.6.24-24-server 2.6.24-24.39 [5671kB]
Get: 4 hardy-security/main linux-image-server [26.6kB]
Get: 5 hardy-security/restricted linux-server [26.6kB]
Fetched 24.4MB in 2s (9414kB/s)
Preconfiguring packages ...
Selecting previously deselected package linux-image-2.6.24-24-server.
(Reading database ... 38251 files and directories currently installed.)
Unpacking linux-image-2.6.24-24-server (from .../linux-image-2.6.24-24-server_2.6.24-24.59_amd64.deb) ...
Selecting previously deselected package linux-ubuntu-modules-2.6.24-24-server.
Unpacking linux-ubuntu-modules-2.6.24-24-server (from .../linux-ubuntu-modules-2.6.24-24-server_2.6.24-24.39_amd64.deb) ...
Selecting previously deselected package grub.
Unpacking grub (from .../grub_0.97-29ubuntu21.1_amd64.deb) ...
Selecting previously deselected package linux-image-server.
Unpacking linux-image-server (from .../linux-image-server_2. ...
Selecting previously deselected package linux-server.
Unpacking linux-server (from .../linux-server_2. ...
Setting up linux-image-2.6.24-24-server (2.6.24-24.59) ...
Running depmod.
update-initramfs: Generating /boot/initrd.img-2.6.24-24-server
Running postinst hook script /sbin/update-grub.
Searching for GRUB installation directory ...
No GRUB directory found. To create a template run 'mkdir /boot/grub' first. To install grub, install it manually or try the 'grub-install' command. ### Warning, grub-install is used to change your MBR. ###

User postinst hook script [/sbin/update-grub] exited with value 1
dpkg: error processing linux-image-2.6.24-24-server (--configure):
subprocess post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of linux-ubuntu-modules-2.6.24-24-server:
linux-ubuntu-modules-2.6.24-24-server depends on linux-image-2.6.24-24-server; however:
Package linux-image-2.6.24-24-server is not configured yet.
dpkg: error processing linux-ubuntu-modules-2.6.24-24-server (--configure):
dependency problems - leaving unconfigured
Setting up grub (0.97-29ubuntu21.1) ...

dpkg: dependency problems prevent configuration of linux-image-server:
linux-image-server depends on linux-image-2.6.24-24-server; however:
Package linux-image-2.6.24-24-server is not configured yet.
linux-image-server depends on linux-ubuntu-modules-2.6.24-24-server; however:
Package linux-ubuntu-modules-2.6.24-24-server is not configured yet.
dpkg: error processing linux-image-server (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-server:
linux-server depends on linux-image-server (=; however:
Package linux-image-server is not configured yet.
dpkg: error processing linux-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
E: Sub-process /usr/bin/dpkg returned an error code (1)

OK, that didn’t look so good, but it’s all right. Now, we’ll fix the problem that GRUB was complaining about, then complete the install.

neuro@hera:~$ sudo mkdir /boot/grub
neuro@hera:~$ sudo apt-get install grub
Reading package lists... Done
Building dependency tree
Reading state information... Done
grub is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
After this operation, 0B of additional disk space will be used.
Setting up linux-image-2.6.24-24-server (2.6.24-24.59) ...
Running depmod.
update-initramfs: Generating /boot/initrd.img-2.6.24-24-server
Running postinst hook script /sbin/update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... Generating /boot/grub/default file and setting the default boot entry to 0
Searching for GRUB installation directory ... found: /boot/grub
Testing for an existing GRUB menu.lst file ...

Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) y
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.24-24-server
Updating /boot/grub/menu.lst ... done

Setting up linux-ubuntu-modules-2.6.24-24-server (2.6.24-24.39) ...
update-initramfs: Generating /boot/initrd.img-2.6.24-24-server

Setting up linux-image-server ( ...
Setting up linux-server ( ...

And that’s that part fixed! Now we just need to configure GRUB to point in the right direction, and install it to the MBR (Master Boot Record).

neuro@hera:~$ sudo grub-install --recheck --root-directory=/ /dev/sda
Probing devices to guess BIOS drives. This may take a long time.
Installing GRUB to /dev/sda as (hd0)...
Installation finished. No error reported.
This is the contents of the device map //boot/grub/
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0) /dev/fd0
(hd0) /dev/sda
neuro@hera:~$ sudo grub
Probing devices to guess BIOS drives. This may take a long time.

[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd0,0)
root (hd0,0)
grub> find /boot/grub/stage2
find /boot/grub/stage2
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
grub> quit

… and now both kernel and bootloader are installed. Time for the scary part. From another machine, ping the server (if you’re running Windows, and pinging from the command prompt, use ping -t instead of just ping to continuously ping rather than just try 5 times; press Ctrl+C to cancel the ping at any time). Now that we’re monitoring whether the server is up or not, we can reboot it to use the new kernel …

neuro@hera:~$ sudo shutdown -r -f now

Broadcast message from neuro@hera
(/dev/pts/1) at 10:14 ...

The system is going down for reboot NOW!
neuro@hera:~$ logout
Connection to hera closed.

You should see the server stop responding to pings, then a minute or so later, start responding again.

If it doesn’t respond after a few minutes, don’t panic, use the Netboot mode to reboot your server, using a network-boot kernel. Once there, you can simply do sudo lilo -v which will re-install the original LILO bootloader, using the OVH-installed kernel, or stick with the netboot kernel if you like.

However, if the server does start responding to pings again (and it should), you can now ssh back in and check things out …

$ ssh hera
Linux hera 2.6.24-24-server #1 SMP Tue Aug 18 16:51:43 UTC 2009 x86_64

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
Last login: Sun Sep 20 06:43:01 2009
neuro@hera:~$ uname -a
Linux hera 2.6.24-24-server #1 SMP Tue Aug 18 16:51:43 UTC 2009 x86_64 GNU/Linux

Woo hoo. A standard Ubuntu kernel, that can take kernel modules, and be updated regularly using apt-get, aptitude, etc. Of course, you can mix this up using other packaged kernels, such as the -rt real time kernel, or the -xen kernel to use Xen virtual machines. Go nuts, because at least now you can use your server as Shuttleworth and co intended!

Note: this procedure worked perfectly for me, but as mentioned at the start, YMMV: I can’t be held responsible if it all goes tango uniform, and Bad Things Happen. Proceed at your own risk, and good luck!

  • Bastien LEGRAS

    Thanks a lot ! I ran your procedure from an Ubuntu 8.10 Server it worked from the first time !

  • eeko

    Cheers, ran on 9.04 some different errors but worked 1st time :)

    2.6.28-16-server #55-Ubuntu SMP Tue Oct 20 20:37:10 UTC 2009 x86_64 GNU/Linux

  • Lauren

    just tried this – seems to have gone through all the steps fine, but it's still using the old kernel … any pointers?

  • ericdes

    Thank you for this post. As an alternative you shouldn't get any error message if you create the /boot/grub directory before launching the 'sudo apt-get install linux-server grub'.

    My kimsufi machine runs Ubuntu 9.04 and has its /boot directory on RAID-1 partition (/dev/md1). After running 'setup (hd0)' I realized (too late) that /boot/grub/menu.lst was created with:

    kernel /boot/vmlinuz-2.6.28-17-server root=/dev/md1 ro quiet splash (WRONG)

    which doesn't work because the grub doesn't know about the raid at boot time. I corrected via the Netboot console with root=/dev/sda1:

    kernel /boot/vmlinuz-2.6.28-17-server root=/dev/sda1 ro quiet splash

    Also, since this is a mirrored raid, I wanted to be able to automatically boot from /dev/sdb1 should the first drive fail. Here's are the instructions to follow in the grub shell (booth partitions /dev/sdba1 and /dev/sdba2 must be synchronized):

    > device (hd0) /dev/sdb
    > root (hd0,0)
    > setup (hd0)
    > quit

    and reboot!


    P.S. Each time my grub setup (hd0) returned this error:
    Running "embed /boot/grub/e2fs_stage1_5 (hd0)"… failed (this is not fatal)
    Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"… failed (this is not fatal)
    but that didn't prevent the server from rebooting via the grub.

  • Peter

    after update my server I can not access via ssh any more.
    Dows anyone have a similar problem ?

    • neuro

      Peter, read the bit starting from "If it doesn’t respond after a few minutes" …

  • Martin

    thank you very much for your tutorial. I followed all the steps you described, my server still boots but unfortunately it boots still the ovh kernel.
    Any clue why my system does not recognize the new kernel? (I had some error messages during the kernel-install that said that /proc/modules was not found).

    Thank you for your help and sorry for my English,

    P.S: You can also write me on twitter if you want to: @murphy2

  • Rob


    Nice Post. I"m curious. Would this method work with Debian 5.0 Lenny? I am searching for a way to go from a grs to std kernel on lenny.


    • neuro

      Possibly, but i wouldn't like to guarantee it :)

  • CoolestGeek

    This worked for me and got me an original kernal on Ubuntu 10.04 LTS Lucid Lynx x64 bit on Ovh, thanks!

  • daniele

    AWESOME, u saved my day and part of the night too 😀 !

  • Richie Ward

    Thanks it works amazing!!! I dont believe it!

  • Martin J.

    Thanks for that – worked sweetly under Ubuntu 10.04 on a Kimsufi KS server.

    I really don't know why Kimsufi use customised kernels, as these aren't covered by automatic Ubuntu updates, and they break things like VMware and KVM that need special kernel modules.

  • extenue

    IT WORKS !!

    Thanks !!! just awesome , i lost hours and hours , all my evening for one week .. (wanted to install vmware server 2)

    tested succesfully on my kimsufi 250G ubuntu x64 server 10.10 , now i could install vmware without issue with this :

    !!!! BIG THANX !!!!

  • Pingback: The OVH Kimsufi Ubuntu kernel doesn’t support NFS | Arun Stephens()

  • Visible Web

    Kimsufi 24G are really good cheap dedicated server, unfortunately, just like every with Kimsufi the Ubuntu 10.04.3 LTS came with Linux #1 SMP Fri Apr 15 17:44:15 UTC 2011 x86_64 GNU/Linux
    Now i got a standard ubuntu kernel and can enable nfs-kernel-server. Thanks !

  • Chris Teesdale

    Much simpler method

    1.) Add PPA kernel sources to repository:-

    sudo add-apt-repository ppa:kernel-ppa/ppa

    sudo apt-get update

    2.) Check Availible Kernels with command:-

    apt-cache showpkg linux-headers

    3.) See what version you get from that command. For me the latest version was 2.6.38-10-generic. So I ran:-

    sudo apt-get install linux-headers-2.6.39-0 linux-headers-2.6.39-0-generic linux-image-2.6.39-0-generic –fix-missing

    This installs the "generic" ubuntu kernel but after that we need to select it as default within grub. This been complicated with the introduction of Grub2 on 11.04. What I did was:-

    rm /etc/grub.d/06_OVHkernel <– This removes the grub template for OVH's Dirty Kernel

    grub-mkconfig <– This recompiles the grub.cfg file from the templates.

    • neuro

      Why are you pulling the kernel from a PPA instead of using the distro kernel? And what's less simple than using the 'linux-server' package? You'll always get the latest server-optimised kernel (which is why you don't install 'generic') rather than having to hand pick one.

  • James Scholes

    Thanks for this guide. Just used it successfully on Ubuntu 11.10 and am now running the latest 3.x server kernel image. I had to do the following before running `grub-install –recheck –root-directory=/ /dev/sda’, however:

    ln -sf “/dev/sda1″ /dev/root

    • extenue

      THANKS ! i had to to that for 12.04 LTS

  • James Scholes

    WordPress mangled the commands in my previous comment. If you’re running Ubuntu 11.10 (possibly other versions too?), download the attached “dev-root-link” script from this page:
    Run it before the grub-install step.

  • Emil

    I did exactly as posted, but it doesnt work on my 16G. I really cant see the difference.
    But when i boot the vKVM, the host boots the standard ubuntu kernel just fine.

  • RafaLinux

    Thank you very much for the post. Did not worked for me but gave me the idea on what I was doing wrong. We found that gru2 is too complicated and sometimes does not work as should. Then we found this link. Our OVH server (tested 10.04 and 11.04) uses grub2 by default.

    That uses the "neuro" method for the kernel and the "Chris" method for the grub2 and worked in the first try.

    Thank you both and also Artica.

  • Dylan

    Hello i tried this but i get a error at the command: sudo grub-install –recheck –root-directory=/ /dev/sda

    It tells me: /dev/root: Not found or not a block device.

    Can you tell me what im doing wrong?
    I did a fresh install of ubuntu 11.10 and kernel version:

    Thx for any advice

    • Dylan

      I fixed it myself with the following commands:
      # sudo mount /dev/sda1 /mnt
      # sudo grub-install –root-directory=/mnt /dev/sda

  • Mark

    Fantastic, thanks for this. Worked for me on 11.04 after following your instructions. I needed to get to the standard kernel because NFS seems to be disabled on the kernel provided.

  • Moiax

    Awesome. I’ve been looking everywhere for guides on how to do this, compiled a few kernels, reset a few servers, but your setup worked without a hitch, first time.

    Big Thanks

  • Desdenova

    I just went through the process but it did not work for me. My server wouldn't start up, so I went through Netboot, but the lilo command no longer works as OVH no longer supports lilo.

    However, I did manage to fix the situation. Here's what I did, for others who may find themselves in this same spot:

    First, I decided I'd retry your technique but with one little change… I added two lines from Chri's solution, which seemed like they might be important:

    rm /etc/grub.d/06_OVHkernel <– This removes the grub template for OVH's Dirty Kernel
    grub-mkconfig <– This recompiles the grub.cfg file from the templates.

    I inserted these right before doing the "sudo grub" from the tutorial.

    NOTE: I did a mv rather a rm, ie
    mv /etc/grub.d/06_OVHkernel /path/to/some/folder

    This however was still not enough.

    After doing some more research, I came across another guide (in French) which suggested doing the following:

    sudo update-grub
    sudo grub-install /dev/sda

    I would like to bring to your attention that the "update-sudo" command failed to find the menu.1st file, which I'm guessing is what was stopping the server from booting. Thankfully, it proposed to generate one for me (how kind!) to which I replied yes and… TADA! I am now happily running a more standard kernel, yay!

    In any case, thanks for posting the tutorial. Without it, I'd still be wondering where to begin, heh!

  • Oliver K.

    I understand that this blog post is for Ubuntu, but I’m sure you’ll see the light and switch to Debian one day:

    For a recent Debian system on a newer Kimsufi 16G, OVH use GRUB. This is good news. To “upgrade” to a non-OVH kernel, simply install the appropriate Linux image package — I used the meta-package “linux-image-amd64″ — and set the default kernel in “/etc/default/grub”. Then run `update-grub`, reboot, relax, and you’re done.

    • neuro

      Oliver, I’m not sure how I’ll “see the light” in switching back to Debian after years of using Ubuntu :)

  • Go3Team

    Worked perfect, after banging my head for 18 hours trying to figure out how to get rid of the original kernel. Thanks!

  • Mike

    Hey Neuro,

    First off, thanks for the guide. I have a kimsufi server running ubuntu 10.04. I followed your steps exactly, but unfortunately my server did not reboot. I have three partitions: a raid 1 mounted at /, a raid 0 mounted at /home, and a swap partition. This is my first experience with linux, and I am wondering if my problem may be coming form the partitions I have created.

    I am going to keep working on it for now. I would greatly appreciate any suggestions.


  • Mike

    I switched my server to 11.10 and this method finally worked.

  • Jacek

    I am using raid and I wanted to do the same. Here are the instructions on what to do to replace kernel on kimsufi server using mdraid:
    1. Install stock kernel using:
    apt-get install linux-image-server # no change here

    2. You will notice some error messages similar to:
    Generating grub.cfg …
    Found linux image: /boot/vmlinuz-3.2.0-39-generic
    Found initrd image: /boot/initrd.img-3.2.0-39-generic
    /usr/sbin/grub-probe: error: no such disk.
    /usr/sbin/grub-probe: error: no such disk.
    No volume groups found

    This is important – because OVH kernel does not use modules grub is unable figure out what grub needs to load

    3. To go around the problem 2 add the following to your /boot/grub/grub.cfg. In my case I added it just below function load_video section (not within the section! below)
    insmod raid
    insmod mdraid09
    insmod part_msdos
    insmod part_msdos
    insmod ext2

    You should ensure that all this modules actually exist in /boot/grub/${modulename}.mod

    4. Once saved reboot the server

    5. When the server comes back run command to regenerate grub config, this time with all required modules added automatically:


    That is it, everything should be working fine from now.