-
Notifications
You must be signed in to change notification settings - Fork 81
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
podvm-mkosi: build s390x fedora image
Package system with mkosi and generate bootloader with zipl Signed-off-by: Lei Li <[email protected]> Signed-off-by: Lei Li <[email protected]>
- Loading branch information
Lei Li
authored and
Qi Feng Huo
committed
Mar 21, 2024
1 parent
e82aee5
commit 91f8d73
Showing
10 changed files
with
172 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
#!/bin/bash | ||
|
||
set -euo pipefail | ||
|
||
pushd ../podvm-mkosi/build | ||
|
||
workdir=. | ||
tmp_img_path="${workdir}/tmp.qcow2" | ||
tmp_nbd=/dev/nbd1 | ||
dst_mnt=./dst_mnt | ||
disksize=100G | ||
|
||
qemu-img create -f qcow2 "${tmp_img_path}" "${disksize}" | ||
|
||
modprobe nbd | ||
qemu-nbd --connect="${tmp_nbd}" "${tmp_img_path}" | ||
|
||
# Partition and format | ||
parted -a optimal "${tmp_nbd}" mklabel gpt \ | ||
mkpart boot ext4 1MiB 256MiB \ | ||
mkpart system 256MiB "${disksize}" \ | ||
set 1 boot on | ||
|
||
echo "Waiting for the two nbd partitions to show up" | ||
while true; do | ||
sleep 1 | ||
[[ -e "${tmp_nbd}"p2 ]] && break | ||
done | ||
|
||
mke2fs -t ext4 -L boot "${tmp_nbd}"p1 | ||
boot_uuid=$(blkid "${tmp_nbd}"p1 -s PARTUUID -o value) | ||
|
||
mke2fs -t ext4 -L system "${tmp_nbd}"p2 | ||
system_uuid=$(blkid "${tmp_nbd}"p2 -s PARTUUID -o value) | ||
|
||
# Copy files | ||
mkdir -p "${dst_mnt}" | ||
mount "${tmp_nbd}p2" "${dst_mnt}" | ||
|
||
mkdir -p "${dst_mnt}"/boot | ||
mount -o norecovery "${tmp_nbd}"p1 "${dst_mnt}"/boot | ||
|
||
cp initrd.cpio.zst "${dst_mnt}"/boot/initrd.img | ||
cp system.vmlinuz "${dst_mnt}"/boot/vmlinuz | ||
|
||
src_mnt=system | ||
tar_opts=(--numeric-owner --preserve-permissions --acl --selinux --xattrs --xattrs-include='*' --sparse) | ||
tar -cf - "${tar_opts[@]}" --sort=none -C "${src_mnt}" . | tar -xf - "${tar_opts[@]}" --preserve-order -C "${dst_mnt}" | ||
|
||
cat <<END > "${dst_mnt}/etc/fstab" | ||
#This file was auto-generated | ||
PARTUUID=${system_uuid} / ext4 defaults 1 1 | ||
PARTUUID=${boot_uuid} /boot ext4 norecovery 1 2 | ||
END | ||
|
||
mount -t sysfs sysfs "${dst_mnt}/sys" | ||
mount -t proc proc "${dst_mnt}/proc" | ||
mount --bind /dev "${dst_mnt}/dev" | ||
|
||
# generate bootloader | ||
chroot "${dst_mnt}" zipl -V --targetbase "${tmp_nbd}" \ | ||
--targettype scsi \ | ||
--targetblocksize 512 \ | ||
--targetoffset 2048 \ | ||
--target /boot \ | ||
--image /boot/vmlinuz \ | ||
--ramdisk /boot/initrd.img \ | ||
--parameters "root=LABEL=system selinux=0 enforcing=0 audit=0 systemd.firstboot=off" | ||
|
||
umount "${dst_mnt}/dev" | ||
umount "${dst_mnt}/proc" | ||
umount "${dst_mnt}/sys" | ||
|
||
umount "${dst_mnt}/boot" | ||
umount "${dst_mnt}" | ||
|
||
qemu-nbd --disconnect "${tmp_nbd}" | ||
|
||
output_img_name="podvm-s390x.qcow2" | ||
qemu-img convert -O qcow2 -c "${tmp_img_path}" "${output_img_name}" | ||
|
||
output_img_path=$(realpath "${output_img_name}") | ||
echo "podvm image is generated: ${output_img_path}" | ||
|
||
popd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
podvm-mkosi/mkosi.presets/initrd/mkosi.conf.d/fedora-s390x.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
[Match] | ||
Distribution=fedora | ||
|
||
Architecture=s390x | ||
|
||
[Content] | ||
Packages=kernel-core | ||
|
||
[Host] | ||
ToolsTree=default |
7 changes: 7 additions & 0 deletions
7
podvm-mkosi/mkosi.presets/system/mkosi.conf.d/fedora-bootable.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[Match] | ||
Distribution=fedora | ||
|
||
Architecture=!s390x | ||
|
||
[Content] | ||
Packages=systemd-boot |
18 changes: 18 additions & 0 deletions
18
podvm-mkosi/mkosi.presets/system/mkosi.conf.d/fedora-s390x.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
[Match] | ||
Distribution=fedora | ||
|
||
Architecture=s390x | ||
|
||
[Content] | ||
Bootable=no | ||
Packages=s390utils | ||
dhclient | ||
NetworkManager | ||
cloud-init | ||
cloud-utils-growpart | ||
|
||
[Output] | ||
Format=directory | ||
|
||
[Host] | ||
ToolsTree=default |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,7 +15,6 @@ Packages= | |
udev | ||
util-linux | ||
systemd | ||
systemd-boot | ||
systemd-networkd | ||
systemd-resolved | ||
dbus | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -euxo pipefail | ||
|
||
if [[ "${ARCHITECTURE}" == "s390x" ]]; then | ||
# enable cloud-init services | ||
systemctl enable cloud-init-local.service | ||
systemctl enable cloud-init.service | ||
systemctl enable cloud-config.service | ||
systemctl enable cloud-final.service | ||
|
||
# disable this service since we already have "NetworkManager-wait-online.service" | ||
systemctl disable systemd-networkd-wait-online.service | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[Content] | ||
Environment=VARIANT_ID=debug |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[Content] | ||
Environment=VARIANT_ID=production |