Category: Linux

  • Enterprise-Grade Ubuntu 22.04 Installation on Software RAID 0 with UEFI Boot

    Enterprise-Grade Ubuntu 22.04 Installation on Software RAID 0 with UEFI Boot

    Setting up a high-performance Linux environment on enterprise hardware isn’t just about installing an OS – it’s about precision, flexibility, and reliability. In this post, I’ll walk you through a real-world case study where I deployed Ubuntu 22.04 LTS on a ProLiant DL360 Gen9 server using mdadm-based software RAID 0 and a fully optimized UEFI boot setup.

    The Challenge

    My client needed a performant server for hosting CyberPanel and other web services. The server was equipped with 8x 4TB drives and required a RAID 0 configuration for maximum throughput. It also needed UEFI boot support and a fully customized minimal Ubuntu system for performance and control.

    However, I ran into multiple real-world obstacles:

    • Default Ubuntu installer doesn’t support RAID 0 configuration natively.
    • UEFI boot and GRUB issues on software RAID.
    • Network not coming up post-installation.
    • Emergency mode boot loops due to missing base packages

    The Solution (Step-by-Step)

    Note: Use rescue system or Live CD

    Step 1: Disk Partitioning

    Each of the 8 drives was partitioned identically using parted:

    • /dev/sdX1: 512MB FAT32 for EFI (boot, esp flags)
    • /dev/sdX2: 1MB BIOS boot partition (bios_grub flag)
    • /dev/sdX3: remaining space for RAID
    for disk in /dev/sd{a..h}; do
      parted -s $disk mklabel gpt
      parted -s $disk mkpart primary fat32 1MiB 513MiB
      parted -s $disk set 1 esp on
      parted -s $disk mkpart primary 513MiB 514MiB
      parted -s $disk set 2 bios_grub on
      parted -s $disk mkpart primary ext4 514MiB 100%
    done

    Step 2: RAID Creation

    Create RAID 0 using all /dev/sdX3 partitions:

    mdadm --create /dev/md0 --level=0 --raid-devices=8 /dev/sd{a..h}3

    Step 3: Filesystem Setup

    mkfs.ext4 /dev/md0
    mount /dev/md0 /mnt
    mkfs.vfat -F32 /dev/sda1
    mkdir -p /mnt/boot/efi
    mount /dev/sda1 /mnt/boot/efi

    Step 4: Base Ubuntu Installation (debootstrap)

    apt update
    apt install debootstrap -y
    debootstrap jammy /mnt http://archive.ubuntu.com/ubuntu

    Step 5: Mount and Chroot

    mount --bind /dev /mnt/dev
    mount --bind /proc /mnt/proc
    mount --bind /sys /mnt/sys
    mount --bind /run /mnt/run
    chroot /mnt

    Step 6: Essential Packages

    apt update
    apt install ubuntu-standard ubuntu-minimal systemd-sysv grub-efi grub-efi-amd64 shim mdadm net-tools ifupdown isc-dhcp-client -y

    Step 7: Configure RAID and FSTAB

    echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
    mdadm --detail --scan >> /etc/mdadm/mdadm.conf
    update-initramfs -u -k all

    Example /etc/fstab:

    blkid # Use to populate fstab with correct UUIDs
    UUID=xxxxx-root  /          ext4 defaults  0 1
    UUID=xxxxx-efi   /boot/efi  vfat defaults  0 1

    Step 8: GRUB Installation

    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
    grub-install /dev/sd{b..h} # for BIOS fallback (optional)
    update-grub

    Step 9: Create UEFI Boot Entry

    efibootmgr --create --disk /dev/sda --part 1 --label "Ubuntu" --loader '\EFI\ubuntu\grubx64.efi'

    Step 10: Network Configuration

    echo 'auto lo
    iface lo inet loopback
    
    auto eno49
    iface eno49 inet static
      address 178.222.247.237
      netmask 255.255.255.128
      gateway 178.222.247.1
      dns-nameservers 1.1.1.1 8.8.8.8' > /etc/network/interfaces

    The system now boots cleanly from /dev/md0, detects the RAID volume immediately via initramfs, and launches a fully minimal but extendable Ubuntu 22.04 environment ready for CyberPanel.

    Boot time was optimized, all legacy EFI entries were removed, and the network stack is stable and persistent across reboots.