Skip to content

Add check that machine uses UEFI #175

Description

@scotts00

Edera requires the machine on which it is installed use UEFI. Currently edera-check does not call this out if the machine uses BIOS.

Steps to Reproduce

Setup a throwaway EC2 Instance with Ubuntu using BIOS

Setup

export AWS_PROFILE=<yourProfile>
export AWS_REGION=us-east-1
export KEY_NAME=<yourKeyInAWS>

SG_ID=$(aws ec2 create-security-group \
  --group-name edera-check-test \
  --description "throwaway SG for edera-check testing" \
  --query 'GroupId' --output text)
aws ec2 authorize-security-group-ingress --group-id $SG_ID --protocol tcp --port 22 --cidr $(curl -s ifconfig.me)/32

AMI_ID=$(aws ec2 describe-images \
  --owners 099720109477 \
  --filters "Name=name,Values=ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*" \
            "Name=state,Values=available" \
  --query 'sort_by(Images,&CreationDate)[-1].ImageId' --output text)

SNAP_ID=$(aws ec2 describe-images --image-ids $AMI_ID --query 'Images[0].BlockDeviceMappings[0].Ebs.SnapshotId' --output text)

MY_SNAP_ID=$(aws ec2 copy-snapshot \
  --source-region $AWS_REGION \
  --source-snapshot-id $SNAP_ID \
  --description "legacy-bios AMI test" \
  --query 'SnapshotId' --output text)
aws ec2 wait snapshot-completed --snapshot-ids $MY_SNAP_ID

LEGACY_AMI_ID=$(aws ec2 register-image \
  --name "ubuntu-noble-legacy-bios-test" \
  --architecture x86_64 \
  --virtualization-type hvm \
  --root-device-name /dev/sda1 \
  --ena-support \
  --boot-mode legacy-bios \
  --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=$MY_SNAP_ID,VolumeType=gp3,DeleteOnTermination=true}" \
  --query 'ImageId' --output text)
aws ec2 wait image-available --image-ids $LEGACY_AMI_ID

INSTANCE_ID=$(aws ec2 run-instances \
  --image-id $LEGACY_AMI_ID \
  --instance-type m5.large \
  --key-name $KEY_NAME \
  --security-group-ids $SG_ID \
  --block-device-mappings 'DeviceName=/dev/sda1,Ebs={VolumeSize=20,VolumeType=gp3,DeleteOnTermination=true}' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=edera-check-bios-test}]' \
  --query 'Instances[0].InstanceId' --output text)
aws ec2 wait instance-running --instance-ids $INSTANCE_ID

EC2_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[0].Instances[0].PublicIpAddress' --output text)
echo "AMI $LEGACY_AMI_ID was created"
echo "Snapshot $MY_SNAP_ID was created"
echo "Instance $INSTANCE_ID is ready"
echo "ssh -i ~/.ssh/$KEY_NAME ubuntu@$EC2_IP"

Dependencies

sudo apt-get update && sudo apt-get install -y docker.io nftables
sudo systemctl start docker
sudo usermod -aG docker $USER
Teardown
aws ec2 terminate-instances --instance-ids $INSTANCE_ID
aws ec2 wait instance-terminated --instance-ids $INSTANCE_ID
aws ec2 deregister-image --image-id $LEGACY_AMI_ID
aws ec2 delete-snapshot --snapshot-id $MY_SNAP_ID
aws ec2 delete-security-group --group-id $SG_ID

Logs

$ sudo ls /sys/firmware/efi
ls: cannot access '/sys/firmware/efi': No such file or directory

$ sudo dmesg | grep efi
[    0.023381] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    4.364426] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...

$ docker pull ghcr.io/edera-dev/edera-check:stable > /dev/null 2>&1
$ docker run --pull always --pid host --privileged ghcr.io/edera-dev/edera-check:stable preinstall
Collecting information about the current host as part of locally-generated preinstall report.
The information collected will remain on this host.
Running Group System Checks [Required] - System requirement checks
    • Supported Docker Runtime: Passed
    • Enough Memory: Passed
    • Enough Disk Space for /usr: Passed
    • Enough Disk Space for /var/lib: Passed
    • Enough Disk Space for /boot: Passed
    • 'nft' Binary Present: Passed
    • Package Manager Binary Present: Passed
    • 'grub-mkconfig' Binary Present: Passed
    • Service Manager Binary Present: Passed
    • Basic Linux Utility Binaries Present: Passed
[+] System Checks: Passed
Running Group Kernel Checks [Required] - Kernel requirement checks
    • Host Has Necessary Modules: Passed
[+] Kernel Checks: Passed
Running Group IOMMU Checks [Optional] - IOMMU capability checks
    • IOMMU Support: Failed: no hardware IOMMU detected
[!] PVH and some host device support not available on this system
[!] IOMMU Checks: Failed [Optional]
Running Group PVH Checks [Optional] - PVH capability checks
    • PVH Support: Failed: Hardware Virtualization Disabled
[!] PVH feature may not be available on this system
[!] PVH Checks: Failed [Optional]
Running Group NUMA Checks [Advisory] - NUMA capability checks
    • IOMMU Support: Passed
[+] NUMA Checks: Passed
Running Group System Info Recorder [Advisory] - Record system information for reporting purposes
    • Captured lspci -vvv: Passed
    • Captured dmidecode: Passed
    • Captured /proc/cpuinfo: Passed
    • Captured /proc/cmdline: Passed
    • Captured /boot/grub/grub.cfg: Passed
    • Captured boot/config-6.17.0-1019-aws: Passed
    • Record current host kernel loaded modules: Passed
    • Captured /proc/meminfo: Passed
    • Captured /proc/vmstat: Passed
    • Captured /proc/slabinfo: Passed
    • Captured /proc/mounts: Passed
    • Captured /proc/self/mountinfo: Passed
    • Captured nftables ruleset: Passed
    • Captured network links: Passed
    • Captured network routes: Passed
    • Captured network neighbours: Passed
[+] System Info Recorder: Passed
[*] All Done! Report saved: /tmp/edera-preinstall-report-ip-172-31-40-228-20260730-153318.tar.gz

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions