archlinux-s390x/scripts/test-qemu-systemd.sh
Josephine Pfeiffer 7b50875291
systemd mvp
2025-06-02 22:58:34 +02:00

100 lines
No EOL
2.7 KiB
Bash
Executable file

#!/bin/bash
# Test s390x Arch Linux with systemd as init
# Get script directory and project root
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "🚀 Starting Arch Linux s390x - Systemd Test"
echo "This will boot with systemd as PID 1"
echo "Press Ctrl-A X to exit"
echo ""
cd "$PROJECT_ROOT"
# Check if systemd is available
if [ ! -d "output/systemd-root" ]; then
echo "Error: Systemd not found. Run 'make systemd' first"
exit 1
fi
# Create systemd-enabled root filesystem directly
echo "Preparing systemd-enabled root filesystem..."
ROOTFS_IMG="boot/rootfs-s390x.img"
# Force recreation of root filesystem
rm -f "$ROOTFS_IMG"
# Create 150MB root filesystem image (for systemd)
dd if=/dev/zero of="$ROOTFS_IMG" bs=1M count=150
# Format as ext4
mkfs.ext4 -F "$ROOTFS_IMG"
# Mount and populate
mkdir -p /tmp/rootfs-mount
sudo mount -o loop "$ROOTFS_IMG" /tmp/rootfs-mount
# Create basic directory structure
sudo mkdir -p /tmp/rootfs-mount/{bin,sbin,etc,proc,sys,dev,tmp,var,usr/{bin,sbin},lib,lib64}
# Copy busybox as fallback
sudo cp boot/busybox-s390x-static /tmp/rootfs-mount/bin/busybox
sudo chroot /tmp/rootfs-mount /bin/busybox --install -s
# Install systemd
echo "Installing systemd to root filesystem..."
sudo cp -r output/systemd-root/* /tmp/rootfs-mount/
# Create systemd directories
sudo mkdir -p /tmp/rootfs-mount/run/systemd
sudo mkdir -p /tmp/rootfs-mount/var/log/journal
sudo mkdir -p /tmp/rootfs-mount/etc/systemd/system
# Create device nodes
sudo mknod /tmp/rootfs-mount/dev/console c 5 1 2>/dev/null || true
sudo mknod /tmp/rootfs-mount/dev/tty c 5 0 2>/dev/null || true
sudo mknod /tmp/rootfs-mount/dev/tty1 c 4 1 2>/dev/null || true
# Create basic files
sudo tee /tmp/rootfs-mount/etc/passwd > /dev/null << 'EOF'
root:x:0:0:root:/root:/bin/sh
EOF
sudo tee /tmp/rootfs-mount/etc/group > /dev/null << 'EOF'
root:x:0:
EOF
sudo tee /tmp/rootfs-mount/etc/os-release > /dev/null << 'EOF'
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
EOF
sudo tee /tmp/rootfs-mount/etc/hostname > /dev/null << 'EOF'
archlinux-s390x
EOF
# Unmount
sudo umount /tmp/rootfs-mount
rmdir /tmp/rootfs-mount
echo "✓ Root filesystem with systemd prepared"
# Run QEMU with systemd as init
echo "Booting with systemd..."
qemu-system-s390x \
-M s390-ccw-virtio \
-cpu qemu \
-m 2G \
-smp 1 \
-kernel boot/vmlinuz-linux \
-initrd boot/initramfs-linux.img \
-append "console=ttyS0 root=/dev/vda rw init=/usr/lib/systemd/systemd systemd.log_level=debug" \
-drive file=boot/rootfs-s390x.img,format=raw,if=virtio \
-netdev user,id=network0 \
-device virtio-net,netdev=network0 \
-nographic \
-serial mon:stdio