Compare commits

..

No commits in common. "f40riscv" and "rawhide" have entirely different histories.

13 changed files with 174 additions and 20 deletions

View File

@ -1 +1,87 @@
sudo kiwi-ng --debug --type=oem --profile=Minimal --color-output system build --description ./ --target-dir ./outdir # Fedora Asahi Remix KIWI descriptions
This contains the KIWI descriptions for building the Fedora Asahi Remix.
This repository has multiple branches, one for each supported Fedora release. The default branch is `rawhide`, and is probably _not_ what you want.
## Spin variants
* Minimal (image type: `oem`, image profiles: `Minimal`)
* Server (image type: `oem`, image profiles: `Server`)
* Workstation GNOME (image type: `oem`, image profiles: `Workstation-GNOME`)
* Workstation KDE (image type: `oem`, image profiles: `Workstation-KDE`)
## Spin build quickstart
### Pre-requisites for non-AArch64 hosts
On non-AArch64 hosts, install `qemu-user-static` and restart the binfmt service:
```bash
$ sudo dnf --assumeyes install qemu-user-static
$ sudo systemctl restart systemd-binfmt.service
```
Note that building non-aarch64 is untested and likely to expose bugs.
### Podman
The instructions below will use the `podman` command. Only Podman is supported for this workflow.
First, pull down the container of the required environment (Fedora Linux 36 or higher works). We'll use Fedora Linux 37.
```bash
$ sudo podman pull registry.fedoraproject.org/fedora:37-aarch64
```
Assuming you're in the root directory of the Git checkout, set up the container:
```bash
$ sudo podman run --privileged --rm -it -v $PWD:/code:z -w /code registry.fedoraproject.org/fedora:37-aarch64 /bin/bash
```
Once in the container environment, set up your development environment and run the image build (substitute `<image_type>` and `<image_profile>` for the appropriate settings):
```bash
# Install kiwi
[]$ dnf --assumeyes install kiwi
# Run the image build
[]$ kiwi-ng --type=<image_type> --profile=<image_profile> --color-output system build --description ./ --target-dir ./outdir
```
For example, to build the --profile=Workstation-GNOME profile:
```bash
[]$ kiwi-ng --debug --type=oem --profile=Workstation-GNOME --color-output system build --description ./ --target-dir ./outdir
```
We also provide a script to generate an [Asahi Installer](https://github.com/AsahiLinux/asahi-installer) package from the raw image that kiwi produces:
```bash
# Install prerequsites
[]$ dnf --assumeyes install fatcat gawk p7zip-plugins rpmdistro-repoquery util-linux zip zstd
# Build the package
[]$ ./make-asahi-installer-package.sh outdir/Fedora-Asahi-Remix.aarch64-0.0.0.raw package.zip
```
## Contributing
Please default to submitting PRs against the `rawhide` branch. Release branches should generally merge from `rawhide` and only deviate where absolutely necessary.
This project is tested using the [Software Factory Zuul CI instance](https://fedora.softwarefactory-project.io/zuul/project/pagure.io/fedora-asahi/kiwi-descriptions)
using the [Test Management Tool](https://tmt.readthedocs.io/).
## Licensing
This is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, under version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -129,6 +129,9 @@ def kiwiBuild(profile):
def packageBuild(target): def packageBuild(target):
# TODO: rewrite in python instead of shelling out
runCommand(["./make-asahi-installer-package.sh"])
base = f"fedora-{RELEASE}-{target['id']}-{BUILDVER}" base = f"fedora-{RELEASE}-{target['id']}-{BUILDVER}"
os.rename(f"fedora-{RELEASE}-{BUILDVER}.zip", f"{base}.zip") os.rename(f"fedora-{RELEASE}-{BUILDVER}.zip", f"{base}.zip")
os.rename(f"fedora-{RELEASE}-{BUILDVER}.logs.zip", f"{base}.logs.zip") os.rename(f"fedora-{RELEASE}-{BUILDVER}.logs.zip", f"{base}.logs.zip")

View File

@ -5,15 +5,19 @@
<packages type="image" patternType="plusRecommended" profiles="Common"> <packages type="image" patternType="plusRecommended" profiles="Common">
<namedCollection name="core"/> <namedCollection name="core"/>
<namedCollection name="standard"/> <namedCollection name="standard"/>
<namedCollection name="hardware-support"/>
<package name="NetworkManager-wifi"/> <package name="NetworkManager-wifi"/>
<package name="chrony"/> <package name="chrony"/>
<package name="initial-setup"/>
<package name="glibc-all-langpacks"/> <package name="glibc-all-langpacks"/>
<package name="shadow-utils"/>
<ignore name="abrt-cli"/>
<ignore name="dracut-config-rescue"/> <ignore name="dracut-config-rescue"/>
<ignore name="generic-release*"/> <ignore name="generic-release*"/>
<ignore name="generic-logos*"/> <ignore name="generic-logos*"/>
<!-- Asahi packages -->
<package name="alsa-ucm-asahi"/>
<package name="asahi-platform-metapackage"/>
<package name="asahi-repos"/>
<package name="fedora-asahi-remix-scripts"/>
<package name="tiny-dfr"/>
</packages> </packages>
</image> </image>

View File

@ -3,13 +3,21 @@
<profile name="BootCore" description="Boot core packages"/> <profile name="BootCore" description="Boot core packages"/>
</profiles> </profiles>
<packages type="bootstrap" patternType="plusRecommended" profiles="BootCore"> <packages type="bootstrap" patternType="plusRecommended" profiles="BootCore">
<package name="sdubby"/> <package name="grubby"/>
</packages> </packages>
<packages type="image" patternType="plusRecommended" profiles="BootCore"> <packages type="image" patternType="plusRecommended" profiles="BootCore">
<package name="kernel"/> <package name="grub2-efi-aa64" arch="aarch64"/>
<package name="kernel-modules-extra"/> <package name="grub2-efi-aa64-modules" arch="aarch64"/>
<package name="systemd-boot-unsigned"/> <package name="shim-signed-aa64" arch="aarch64"/>
<package name="grub2-efi-aa64" arch="aarch64"/>
<package name="uboot-images-armv8" arch="aarch64"/>
<package name="kernel-16k"/>
<package name="kernel-16k-modules-extra"/>
<package name="systemd-oomd-defaults"/> <package name="systemd-oomd-defaults"/>
<package name="systemd-resolved"/> <package name="systemd-resolved"/>
<!-- Asahi packages -->
<package name="asahi-fwextract" arch="aarch64"/>
<package name="dracut-asahi" arch="aarch64"/>
<package name="update-m1n1" arch="aarch64"/>
</packages> </packages>
</image> </image>

View File

@ -1,6 +1,6 @@
<image> <image>
<users profiles="Azure,AWSEC2,OpenStack,LiveInstall"> <users profiles="Azure,AWSEC2,OpenStack,LiveInstall">
<user name="root" groups="root" home="/root" password="fedora_rocks!" pwdformat="plain" /> <!-- The password here does not matter, it will be erased in config.sh -->
<user name="riscv" groups="riscv,wheel" home="/home/riscv" password="fedora_rocks!" pwdformat="plain" /> <user name="root" groups="root" password="linux" home="/root" pwdformat="plain" />
</users> </users>
</image> </image>

View File

@ -33,6 +33,23 @@ echo 'uninitialized' > /etc/machine-id
## remove random seed, the newly installed instance should make its own ## remove random seed, the newly installed instance should make its own
rm -f /var/lib/systemd/random-seed rm -f /var/lib/systemd/random-seed
#======================================
# Configure grub correctly
#--------------------------------------
## Works around issues with grub-bls
## See: https://github.com/OSInside/kiwi/issues/2198
echo "GRUB_DEFAULT=saved" >> /etc/default/grub
## Disable submenus to match Fedora
echo "GRUB_DISABLE_SUBMENU=true" >> /etc/default/grub
## Disable recovery entries to match Fedora
echo "GRUB_DISABLE_RECOVERY=true" >> /etc/default/grub
#======================================
# Delete & lock the root user password
#--------------------------------------
passwd -d root
passwd -l root
#====================================== #======================================
# Setup default services # Setup default services
#-------------------------------------- #--------------------------------------
@ -40,6 +57,27 @@ rm -f /var/lib/systemd/random-seed
## Enable persistent journal ## Enable persistent journal
mkdir -p /var/log/journal mkdir -p /var/log/journal
#======================================
# Setup firstboot initial setup
#--------------------------------------
if [[ "$kiwi_profiles" == *"KDE"* ]]; then
## Enable calamares
systemctl enable calamares-firstboot.service
elif [[ "$kiwi_profiles" != *"GNOME"* ]] && [[ "$kiwi_profiles" != *"KDE"* ]]; then
## Enable initial-setup
systemctl enable initial-setup.service
## Enable reconfig mode
touch /etc/reconfigSys
fi
## Enable swap setup on firstboot
systemctl enable asahi-setup-swap-firstboot.service
## Enable extras install on firstboot; this will only run if the extras are
## actually present (and self disable afterwards)
systemctl enable asahi-extras-firstboot.service
#====================================== #======================================
# Setup default target # Setup default target
#-------------------------------------- #--------------------------------------
@ -61,4 +99,11 @@ rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn
# Note that running rpm recreates the rpm db files which aren't needed or wanted # Note that running rpm recreates the rpm db files which aren't needed or wanted
rm -f /var/lib/rpm/__db* rm -f /var/lib/rpm/__db*
#======================================
# Generate boot.bin
#======================================
mkdir -p /boot/efi/m1n1
update-m1n1 /boot/efi/m1n1/boot.bin
rm /boot/.builder
exit 0 exit 0

View File

@ -13,9 +13,10 @@
<keytable>us</keytable> <keytable>us</keytable>
<timezone>UTC</timezone> <timezone>UTC</timezone>
<rpm-check-signatures>true</rpm-check-signatures> <rpm-check-signatures>true</rpm-check-signatures>
<release-version>40</release-version> <release-version>rawhide</release-version>
</preferences> </preferences>
<include from="this://./repositories/core.xml"/> <include from="this://./repositories/core.xml"/>
<include from="this://./repositories/asahi.xml"/>
<include from="this://./components/boot.xml"/> <include from="this://./components/boot.xml"/>
<include from="this://./components/base.xml"/> <include from="this://./components/base.xml"/>
<include from="this://./components/desktop-environments.xml"/> <include from="this://./components/desktop-environments.xml"/>

View File

@ -7,7 +7,7 @@
</profiles> </profiles>
<preferences profiles="Minimal"> <preferences profiles="Minimal">
<type image="oem" filesystem="btrfs" kernelcmdline="" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1"> <type image="oem" filesystem="btrfs" kernelcmdline="" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1">
<bootloader name="systemd_boot"/> <bootloader name="grub2" console="none" timeout="5" timeout_style="menu"/>
<systemdisk name="fedora"> <systemdisk name="fedora">
<volume name="@root=root"/> <volume name="@root=root"/>
<volume name="home" parent="/"/> <volume name="home" parent="/"/>

View File

@ -7,7 +7,7 @@
</profiles> </profiles>
<preferences profiles="Server"> <preferences profiles="Server">
<type image="oem" filesystem="btrfs" kernelcmdline="" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1"> <type image="oem" filesystem="btrfs" kernelcmdline="" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1">
<bootloader name="systemd_boot"/> <bootloader name="grub2" console="none" timeout="5" timeout_style="menu"/>
<systemdisk name="fedora"> <systemdisk name="fedora">
<volume name="@root=root"/> <volume name="@root=root"/>
<volume name="home" parent="/"/> <volume name="home" parent="/"/>

View File

@ -15,7 +15,7 @@
</profiles> </profiles>
<preferences profiles="WorkstationCommon"> <preferences profiles="WorkstationCommon">
<type image="oem" filesystem="btrfs" kernelcmdline="rhgb quiet" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1"> <type image="oem" filesystem="btrfs" kernelcmdline="rhgb quiet" target_blocksize="4096" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="500" firmware="uefi" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" rootfs_label="fedora" fsmountoptions="x-systemd.growfs,compress=zstd:1">
<bootloader name="systemd_boot"/> <bootloader name="grub2" console="console" timeout="1" timeout_style="hidden"/>
<systemdisk name="fedora"> <systemdisk name="fedora">
<volume name="@root=root"/> <volume name="@root=root"/>
<volume name="home" parent="/"/> <volume name="home" parent="/"/>

View File

@ -1,5 +1,12 @@
<image> <image>
<repository type="rpm-md" alias="fedora" sourcetype="baseurl"> <repository type="rpm-md" alias="fedora" sourcetype="metalink">
<source path="http://fedora.riscv.rocks/repos-dist/f$releasever/latest/$basearch"></source> <source path="https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&amp;arch=$basearch">
<signing key="file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary"/>
</source>
</repository>
<repository type="rpm-md" alias="updates" sourcetype="metalink">
<source path="https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&amp;arch=$basearch">
<signing key="file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary"/>
</source>
</repository> </repository>
</image> </image>

View File

@ -1 +1 @@
core-nonrawhide.xml core-rawhide.xml

View File

@ -3,4 +3,4 @@
UPDATEDEFAULT=yes UPDATEDEFAULT=yes
# DEFAULTKERNEL specifies the default kernel package type # DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-core DEFAULTKERNEL=kernel-16k-core