Skip to content

create-boot-image.sh fails on Linux: macOS-only tools + invalid dd usage #58

@hemanthshashidhar

Description

@hemanthshashidhar

create-boot-image.sh fails on Linux due to invalid dd usage and macOS-only tooling

I attempted to build Vib-OS on Parrot OS (Linux) and found that the image creation step fails.

Environment:

  • OS: Parrot OS (Linux)
  • Target: ARM64
  • Kernel builds successfully
  • Failure occurs during: make image

Observed issues:

  1. Invalid dd block size on Linux

The script uses:
dd if=/dev/zero of="$IMAGE_PATH" bs=1m count=1024

On my system:
dd if=/dev/zero of=test2.img bs=1m count=10
→ dd: invalid number: '1m'

But:
dd if=/dev/zero of=big.img bs=1M count=1024

works correctly and creates a 1GB file.

So bs=1m is invalid on my system, while bs=1M works as expected.
Because the script uses set -e and suppresses output, it exits silently at this step.

  1. macOS-only tools in image script

The script uses macOS-specific tools and paths:

  • hdiutil
  • diskutil
  • /Volumes/EFI
  • /dev/diskX

These are not available on Linux, so the script cannot proceed after the image is created.

  1. Silent failure during image creation
  • Errors from dd are redirected to /dev/null
  • The Makefile hides the underlying error
  • This makes it difficult to understand why make image fails on Linux

What works:

The kernel builds successfully and boots in QEMU using:
qemu-system-aarch64 -M virt -cpu cortex-a57 -kernel build/kernel/unixos.elf -nographic

Suggestions:

  • Replace bs=1m with bs=1M
  • Improve error visibility in the image creation script
  • Clarify OS support for image creation (Linux/macOS)
  • Optionally add Linux-compatible image creation logic

I’m happy to help improve Linux compatibility if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions