mirror of
https://github.com/ivabus/asahi-opensuse
synced 2024-11-24 16:05:07 +03:00
Pushing project info
This commit is contained in:
parent
ba128bcbaa
commit
e1ac2116e8
26 changed files with 1115 additions and 17 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1,3 @@
|
||||||
*target*
|
*target*
|
||||||
|
scripts/build
|
||||||
|
*.DS_Store*
|
7
DOCS.md
Normal file
7
DOCS.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Docs
|
||||||
|
|
||||||
|
Build image with kiwi-ng
|
||||||
|
|
||||||
|
```
|
||||||
|
kiwi-ng -profile=<image_profile> --color-output system build --description ./ --target-dir ./outdir
|
||||||
|
```
|
22
README.md
22
README.md
|
@ -1,24 +1,12 @@
|
||||||
# Asahi openSUSE port
|
# asahi-opensuse
|
||||||
|
|
||||||
|
> Port of openSUSE for Apple Silicon
|
||||||
|
|
||||||
Currently I'm working on openSUSE port for Apple Silicon machines.
|
Currently I'm working on openSUSE port for Apple Silicon machines.
|
||||||
|
|
||||||
## TODO list
|
## Current progress
|
||||||
|
|
||||||
- [ ] Boot openSUSE from USB device with pre-built (by hands) image
|
Look at `dev` branch to see the progress. [TODO](./TODO.md)
|
||||||
- [x] Build image
|
|
||||||
- [ ] Test what works or not
|
|
||||||
- [ ] Prepare installer
|
|
||||||
- [ ] Prepare OBS repos (or just repos) with necessary packages (kernel, m1n1, u-boot, asahi-scripts, etc.)
|
|
||||||
- [ ] Prepare basic (cli only, DE) rootfs images (and scripts to build them)
|
|
||||||
- [ ] Build installer (for use like general Asahi installer, ex. `curl https://ivabus.dev/suse | sh`)
|
|
||||||
- [ ] Provide all types of openSUSE (Leap, Tumbleweed, Leap Micro, MicroOS) for installation.
|
|
||||||
- [ ] Test every type of installation
|
|
||||||
- [ ] Document things
|
|
||||||
- [ ] First release
|
|
||||||
- [ ] Integrate with YaST
|
|
||||||
- [ ] Make some scripts to let openSUSE be installed, using USB drive and on-device U-Boot
|
|
||||||
- [ ] Somehow tell YaST to not overwrite ESP volume
|
|
||||||
- [ ] Second release (with YaST installer)
|
|
||||||
|
|
||||||
## Contact me
|
## Contact me
|
||||||
|
|
||||||
|
|
15
TODO.md
Normal file
15
TODO.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
## TODO list
|
||||||
|
|
||||||
|
- [x] Integrate with yast2-firstboot
|
||||||
|
- [x] Build Tumbleweed image using kiwi-ng
|
||||||
|
- [x] Prepare repos with necessary packages (kernel, m1n1, u-boot, asahi-scripts, etc.)
|
||||||
|
- [x] Provide basic types of openSUSE (Leap, Tumbleweed) for installation.
|
||||||
|
------
|
||||||
|
- [ ] Prepare basic (cli only, DE) rootfs images
|
||||||
|
- [ ] Build installer (for use like general Asahi installer, ex. `curl https://ivabus.dev/suse | sh`)
|
||||||
|
- [ ] Test every type of installation
|
||||||
|
- [ ] Document things
|
||||||
|
- [ ] First release
|
||||||
|
------
|
||||||
|
- [ ] Provide Leap Micro and MicroOS for installation.
|
58
installer/bootstrap.sh
Executable file
58
installer/bootstrap.sh
Executable file
|
@ -0,0 +1,58 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export LC_ALL=en_US.UTF-8
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
export PATH="/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
|
||||||
|
|
||||||
|
export VERSION_FLAG=file:///Users/ivabus/storage.ivabus.dev/asahi-opensuse/installer/latest
|
||||||
|
export INSTALLER_BASE=file:///Users/ivabus/storage.ivabus.dev/asahi-opensuse/installer
|
||||||
|
export INSTALLER_DATA=file:///Users/ivabus/my/asahi-opensuse/installer/installer_data.json
|
||||||
|
export INSTALLER_DATA_ALT=https://ivabus.dev/installer_data.json
|
||||||
|
export REPO_BASE=/Users/ivabus/storage.ivabus.dev/asahi-opensuse
|
||||||
|
|
||||||
|
#TMP="$(mktemp -d)"
|
||||||
|
TMP=/tmp/asahi-install
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Bootstrapping installer:"
|
||||||
|
|
||||||
|
if [ -e "$TMP" ]; then
|
||||||
|
mv "$TMP" "$TMP-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$TMP"
|
||||||
|
cd "$TMP"
|
||||||
|
|
||||||
|
echo " Checking version..."
|
||||||
|
|
||||||
|
PKG_VER="$(curl --no-progress-meter -L "$VERSION_FLAG")"
|
||||||
|
echo " Version: $PKG_VER"
|
||||||
|
|
||||||
|
PKG="installer-$PKG_VER.tar.gz"
|
||||||
|
|
||||||
|
echo " Downloading..."
|
||||||
|
|
||||||
|
curl --no-progress-meter -L -o "$PKG" "$INSTALLER_BASE/$PKG"
|
||||||
|
if ! curl --no-progress-meter -L -O "$INSTALLER_DATA"; then
|
||||||
|
echo " Error downloading installer_data.json. GitHub might be blocked in your network."
|
||||||
|
echo " Please consider using a VPN if you experience issues."
|
||||||
|
echo " Trying workaround..."
|
||||||
|
curl --no-progress-meter -L -O "$INSTALLER_DATA_ALT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " Extracting..."
|
||||||
|
tar xf "$PKG"
|
||||||
|
|
||||||
|
echo " Initializing..."
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [ "$USER" != "root" ]; then
|
||||||
|
echo "The installer needs to run as root."
|
||||||
|
echo "Please enter your sudo password if prompted."
|
||||||
|
exec caffeinate -dis sudo -E ./install.sh "$@"
|
||||||
|
else
|
||||||
|
exec caffeinate -dis ./install.sh "$@"
|
||||||
|
fi
|
220
installer/installer_data-todo.json
Normal file
220
installer/installer_data-todo.json
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
{
|
||||||
|
"os_list": [
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed KDE",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed GNOME",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed XFCE",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed base",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Leap KDE",
|
||||||
|
"default_os_name": "openSUSE Leap",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Leap GNOME",
|
||||||
|
"default_os_name": "openSUSE Leap",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Leap XFCE",
|
||||||
|
"default_os_name": "openSUSE Leap",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openSUSE Leap base",
|
||||||
|
"default_os_name": "openSUSE Leap",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "asahi-plasma-20221122-4.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "500MB",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0x2abf9f91",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "12GB",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
37
installer/installer_data.json
Normal file
37
installer/installer_data.json
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"os_list": [
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "installer-suse.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "536870912B",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "0xa060cfc3",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Boot",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "1073741824B",
|
||||||
|
"image": "boot.img"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "2970595328B",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
0
kiwi/asahi.xml
Normal file
0
kiwi/asahi.xml
Normal file
0
kiwi/base.xml
Normal file
0
kiwi/base.xml
Normal file
59
kiwi/config.sh
Normal file
59
kiwi/config.sh
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euxo pipefail
|
||||||
|
|
||||||
|
test -f /.kconfig && . /.kconfig
|
||||||
|
test -f /.profile && . /.profile
|
||||||
|
|
||||||
|
echo "Configure image: [$kiwi_iname]-[$kiwi_profiles]..."
|
||||||
|
|
||||||
|
#======================================
|
||||||
|
# Clear machine specific configuration
|
||||||
|
#--------------------------------------
|
||||||
|
## Clear machine-id on pre generated images
|
||||||
|
rm -f /etc/machine-id
|
||||||
|
touch /etc/machine-id
|
||||||
|
## remove random seed, the newly installed instance should make its own
|
||||||
|
rm -f /var/lib/systemd/random-seed
|
||||||
|
|
||||||
|
#======================================
|
||||||
|
# Delete & lock the root user password
|
||||||
|
#--------------------------------------
|
||||||
|
passwd -d root
|
||||||
|
passwd -l root
|
||||||
|
|
||||||
|
#======================================
|
||||||
|
# Setup default services
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
## Enable NetworkManager
|
||||||
|
systemctl enable NetworkManager.service
|
||||||
|
## Enable chrony
|
||||||
|
systemctl enable chronyd.service
|
||||||
|
## Enable persistent journal
|
||||||
|
mkdir -p /var/log/journal
|
||||||
|
|
||||||
|
if [[ "$kiwi_profiles" == *"GNOME"* ]] || [[ "$kiwi_profiles" == *"KDE"* ]] || [[ "$kiwi_profiles" == *"XFCE"* ]]; then
|
||||||
|
systemctl set-default graphical.target
|
||||||
|
else
|
||||||
|
systemctl set-default multi-user.target
|
||||||
|
fi
|
||||||
|
|
||||||
|
#======================================
|
||||||
|
# Enable yast2-firstboot
|
||||||
|
#--------------------------------------
|
||||||
|
touch /var/lib/YaST2/reconfig_system
|
||||||
|
|
||||||
|
#======================================
|
||||||
|
# Generate boot.bin
|
||||||
|
#--------------------------------------
|
||||||
|
mkdir -p /boot/efi/m1n1
|
||||||
|
update-m1n1 /boot/efi/m1n1/boot.bin
|
||||||
|
rm -rf /boot/.builder
|
||||||
|
#======================================
|
||||||
|
# Regenerate initrds
|
||||||
|
#--------------------------------------
|
||||||
|
mkinitrd
|
||||||
|
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
|
|
||||||
|
exit 0
|
117
kiwi/config.xml
Normal file
117
kiwi/config.xml
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<image schemaversion="7.5" name="asahi-opensuse">
|
||||||
|
<description type="system">
|
||||||
|
<author>Ivan Bushchik</author>
|
||||||
|
<contact>ivabus@ivabus.dev</contact>
|
||||||
|
<specification>openSUSE for Apple Silicon</specification>
|
||||||
|
</description>
|
||||||
|
<preferences>
|
||||||
|
<version>0.0.1</version>
|
||||||
|
<packagemanager>zypper</packagemanager>
|
||||||
|
<bootsplash-theme>openSUSE</bootsplash-theme>
|
||||||
|
<bootloader-theme>openSUSE</bootloader-theme>
|
||||||
|
<locale>en_US</locale>
|
||||||
|
<keytable>us</keytable>
|
||||||
|
<timezone>UTC</timezone>
|
||||||
|
<rpm-check-signatures>true</rpm-check-signatures>
|
||||||
|
<type image="oem" filesystem="btrfs" firmware="uefi" bootpartition="true" bootpartsize="1024" bootfilesystem="ext4" efipartsize="512" target_blocksize="4096">
|
||||||
|
<bootloader name="grub2" console="gfxterm"/>
|
||||||
|
<oemconfig>
|
||||||
|
<oem-resize>false</oem-resize>
|
||||||
|
</oemconfig>
|
||||||
|
</type>
|
||||||
|
</preferences>
|
||||||
|
<users>
|
||||||
|
<user password="root" home="/root" name="root" groups="root"/>
|
||||||
|
</users>
|
||||||
|
<profiles>
|
||||||
|
<profile name="Tumbleweed" description="Tumbleweed base"/>
|
||||||
|
<profile name="Leap" description="Leap base"/>
|
||||||
|
<profile name="Leap-KDE" description="Leap with KDE desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
<profile name="Leap-GNOME" description="Leap with GNOME desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
<profile name="Leap-XFCE" description="Leap with XFCE desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
<profile name="Tumbleweed-KDE" description="Tumbleweed with KDE desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
<profile name="Tumbleweed-GNOME" description="Tumbleweed with GNOME desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
<profile name="Tumbleweed-XFCE" description="Tumbleweed with XFCE desktop">
|
||||||
|
<requires profile="Tumbleweed"/>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
<include from="this://./repos.xml"/>
|
||||||
|
<!-- Asahi repo -->
|
||||||
|
<repository type="rpm-md" alias="asahi" sourcetype="baseurl" priority="1" imageinclude="true">
|
||||||
|
<source path="https://storage.ivabus.dev/asahi-opensuse/repo/">
|
||||||
|
<signing key="https://ivabus.dev/key.asc"/>
|
||||||
|
</source>
|
||||||
|
</repository>
|
||||||
|
<include from="this://./desktop.xml"/>
|
||||||
|
<packages type="bootstrap" profiles="Tumbleweed,Leap" patternType="plusRecommended">
|
||||||
|
<package name="udev"/>
|
||||||
|
<package name="filesystem"/>
|
||||||
|
<package name="gawk"/>
|
||||||
|
<package name="grep"/>
|
||||||
|
<package name="gzip"/>
|
||||||
|
<package name="glibc-locale"/>
|
||||||
|
<package name="cracklib-dict-full"/>
|
||||||
|
<package name="ca-certificates"/>
|
||||||
|
<package name="openSUSE-release"/>
|
||||||
|
<package name="zypper"/>
|
||||||
|
<package name="xz"/>
|
||||||
|
</packages>
|
||||||
|
<packages type="image" profiles="Tumbleweed,Leap" patternType="plusRecommended">
|
||||||
|
<package name="patterns-base-base"/>
|
||||||
|
<package name="patterns-base-apparmor"/>
|
||||||
|
<package name="patterns-openSUSE-base"/>
|
||||||
|
<package name="acl"/>
|
||||||
|
<package name="btrfsprogs"/>
|
||||||
|
<package name="btrfsmaintenance"/>
|
||||||
|
<package name="cron"/>
|
||||||
|
<package name="chrony"/>
|
||||||
|
<package name="dracut"/>
|
||||||
|
<package name="fipscheck"/>
|
||||||
|
<package name="grub2-branding-openSUSE"/>
|
||||||
|
<package name="iputils"/>
|
||||||
|
<package name="zypper-lifecycle-plugin"/>
|
||||||
|
<package name="vim"/>
|
||||||
|
<package name="grub2"/>
|
||||||
|
<package name="grub2-arm64-efi" arch="aarch64"/>
|
||||||
|
<package name="haveged"/>
|
||||||
|
<package name="less"/>
|
||||||
|
<package name="tar"/>
|
||||||
|
<package name="parted"/>
|
||||||
|
<package name="rollback-helper"/>
|
||||||
|
<package name="snapper"/>
|
||||||
|
<package name="firewalld"/>
|
||||||
|
<package name="systemd"/>
|
||||||
|
<package name="timezone"/>
|
||||||
|
<package name="NetworkManager"/>
|
||||||
|
<package name="wpa_supplicant"/>
|
||||||
|
<package name="iproute2"/>
|
||||||
|
<package name="openssh"/>
|
||||||
|
<package name="rsync"/>
|
||||||
|
<package name="salt-minion"/>
|
||||||
|
<package name="dialog"/>
|
||||||
|
<package name="grub2-snapper-plugin"/>
|
||||||
|
<package name="snapper-zypp-plugin"/>
|
||||||
|
<package name="dracut-kiwi-oem-repart"/>
|
||||||
|
<package name="ntp"/>
|
||||||
|
<package name="ruby"/>
|
||||||
|
<package name="yast2-firstboot"/>
|
||||||
|
</packages>
|
||||||
|
<packages type="image">
|
||||||
|
<package name="kernel"/>
|
||||||
|
<package name="m1n1"/>
|
||||||
|
<package name="uboot-asahi"/>
|
||||||
|
<package name="asahi-scripts"/>
|
||||||
|
</packages>
|
||||||
|
</image>
|
18
kiwi/desktop.xml
Normal file
18
kiwi/desktop.xml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<image>
|
||||||
|
<packages type="image" profiles="leap-gnome,tumbleweed-gnome">
|
||||||
|
<package name="patterns-gnome-gnome"/>
|
||||||
|
<package name="patterns-gnome-gnome_basic"/>
|
||||||
|
<package name="patterns-gnome-gnome_basis"/>
|
||||||
|
<package name="patterns-gnome-gnome_internet"/>
|
||||||
|
<package name="patterns-gnome-gnome_x11"/>
|
||||||
|
</packages>
|
||||||
|
<packages type="image" profiles="leap-kde,tumbleweed-kde">
|
||||||
|
<package name="patterns-kde-kde"/>
|
||||||
|
<package name="patterns-kde-kde_plasma"/>
|
||||||
|
</packages>
|
||||||
|
<packages type="image" profiles="leap-xfce,tumbleweed-xfce">
|
||||||
|
<package name="patterns-xfce-xfce"/>
|
||||||
|
<package name="patterns-xfce-xfce_basic"/>
|
||||||
|
<package name="patterns-xfce-xfce_office"/>
|
||||||
|
</packages>
|
||||||
|
</image>
|
97
kiwi/make-installer.sh
Executable file
97
kiwi/make-installer.sh
Executable file
|
@ -0,0 +1,97 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo $* >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
requireCommands() {
|
||||||
|
for cmd in $*; do
|
||||||
|
if ! command -v $cmd &> /dev/null; then
|
||||||
|
fail "Cannot find required command: $cmd"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
date=$(date +%Y%m%d)
|
||||||
|
image="${1:-outdir/asahi-opensuse.aarch64-0.0.1.raw}"
|
||||||
|
package="installer-suse"
|
||||||
|
|
||||||
|
if [ ! -r "$image" ]; then
|
||||||
|
fail "$image does not exist or cannot be read!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "$package" ]; then
|
||||||
|
fail "$package already exists, aborting"
|
||||||
|
fi
|
||||||
|
|
||||||
|
requireCommands 7z awk cat cp dd fdisk file mkdir mv stat wget
|
||||||
|
|
||||||
|
workdir="$(mktemp -dp /var/tmp)"
|
||||||
|
|
||||||
|
basedir="$PWD"
|
||||||
|
imagename="$(basename "$image")"
|
||||||
|
imagedir="$(dirname "$image")"
|
||||||
|
|
||||||
|
# extract filesystems from disk image
|
||||||
|
pushd "$imagedir" > /dev/null
|
||||||
|
eval "$(fdisk -Lnever -lu -b 4096 "$imagename" | awk "/^${imagename}/ { printf \"dd if=${imagename} of=${workdir}/%s skip=%s count=%s bs=4096\\n\", \$1, \$2, \$4 }")"
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
# build package
|
||||||
|
mkdir -p "${workdir}/package/esp"
|
||||||
|
7z x -o"${workdir}/package/esp" "${workdir}/${imagename}1"
|
||||||
|
mv "${workdir}/${imagename}2" "${workdir}/package/boot.img"
|
||||||
|
mv "${workdir}/${imagename}3" "${workdir}/package/root.img"
|
||||||
|
|
||||||
|
esp_volume_id="$(file "${workdir}/${imagename}1" | awk -v 'RS=,' '/serial number/ { print $3 }')"
|
||||||
|
esp_size="$(stat -c %s "${workdir}/${imagename}1")"
|
||||||
|
boot_size="$(stat -c %s "${workdir}/package/boot.img")"
|
||||||
|
root_size="$(stat -c %s "${workdir}/package/root.img")"
|
||||||
|
|
||||||
|
pushd "${workdir}/package" > /dev/null
|
||||||
|
7z a -tzip -r "${basedir}/${package}" .
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
cat > installer_data.json <<EOF
|
||||||
|
{
|
||||||
|
"os_list": [
|
||||||
|
{
|
||||||
|
"name": "openSUSE Tumbleweed",
|
||||||
|
"default_os_name": "openSUSE Tumbleweed",
|
||||||
|
"boot_object": "m1n1.bin",
|
||||||
|
"next_object": "m1n1/boot.bin",
|
||||||
|
"package": "${package}.zip",
|
||||||
|
"supported_fw": ["12.3", "12.3.1", "12.4"],
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"name": "EFI",
|
||||||
|
"type": "EFI",
|
||||||
|
"size": "${esp_size}B",
|
||||||
|
"format": "fat",
|
||||||
|
"volume_id": "${esp_volume_id}",
|
||||||
|
"copy_firmware": true,
|
||||||
|
"copy_installer_data": true,
|
||||||
|
"source": "esp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Boot",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "${boot_size}B",
|
||||||
|
"image": "boot.img"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Root",
|
||||||
|
"type": "Linux",
|
||||||
|
"size": "${root_size}B",
|
||||||
|
"expand": true,
|
||||||
|
"image": "root.img"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
5
kiwi/post_bootstrap.sh
Normal file
5
kiwi/post_bootstrap.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Flag file to ensure update-m1n1 doesn't try to autodetect the ESP
|
||||||
|
touch /boot/.builder
|
||||||
|
|
||||||
|
exit 0
|
23
kiwi/repos.xml
Normal file
23
kiwi/repos.xml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<image>
|
||||||
|
<!-- Tumbleweed repositories -->
|
||||||
|
<repository type="rpm-md" alias="repo-oss" profiles="Tumbleweed" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/ports/aarch64/tumbleweed/repo/oss/"/>
|
||||||
|
</repository>
|
||||||
|
<repository type="rpm-md" alias="repo-debug" profiles="Tumbleweed" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/ports/aarch64/debug/tumbleweed/repo/oss/"/>
|
||||||
|
</repository>
|
||||||
|
<repository type="rpm-md" alias="repo-update" profiles="Tumbleweed" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/ports/aarch64/update/tumbleweed/"/>
|
||||||
|
</repository>
|
||||||
|
<repository type="rpm-md" alias="repo-src-oss" profiles="Tumbleweed" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/ports/aarch64/source/tumbleweed/repo/oss/"/>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<!-- Leap repositories -->
|
||||||
|
<repository type="rpm-md" alias="repo-oss" profiles="Leap" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/distribution/leap/15.3/repo/oss"/>
|
||||||
|
</repository>
|
||||||
|
<repository type="rpm-md" alias="repo-non-oss" profiles="Leap" imageinclude="true">
|
||||||
|
<source path="http://download.opensuse.org/distribution/leap/15.3/repo/non-oss/"/>
|
||||||
|
</repository>
|
||||||
|
</image>
|
6
kiwi/root/etc/zypp/repos.d/asahi.repo
Normal file
6
kiwi/root/etc/zypp/repos.d/asahi.repo
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[asahi]
|
||||||
|
name=asahi
|
||||||
|
baseurl=https://storage.ivabus.dev/asahi-opensuse/repo
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://ivabus.dev/key.asc
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
# called by dracut
|
||||||
|
check() {
|
||||||
|
if [ -n "$hostonly" ] && [ ! -e /proc/device-tree/chosen/asahi,efi-system-partition ]; then
|
||||||
|
return 0
|
||||||
|
elif [ -z "$hostonly" ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 255
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# called by dracut
|
||||||
|
depends() {
|
||||||
|
echo fs-lib
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# called by dracut
|
||||||
|
installkernel() {
|
||||||
|
instmods apple-mailbox nvme-apple
|
||||||
|
}
|
||||||
|
|
||||||
|
# called by dracut
|
||||||
|
install() {
|
||||||
|
inst_dir "/lib/firmware"
|
||||||
|
ln_r "/vendorfw" "/lib/firmware/vendor"
|
||||||
|
asahiscriptsdir="/usr/share/asahi-scripts"
|
||||||
|
inst_dir $asahiscriptsdir
|
||||||
|
$DRACUT_CP -R -L -t "${initdir}/${asahiscriptsdir}" "${dracutsysrootdir}${asahiscriptsdir}"/*
|
||||||
|
inst_multiple cpio cut dirname grep modprobe mount seq sleep umount
|
||||||
|
inst_hook pre-udev 10 "${moddir}/load-asahi-firmware.sh"
|
||||||
|
inst_hook cleanup 99 "${moddir}/install-asahi-firmware.sh"
|
||||||
|
}
|
8
scripts/00_build_repo.sh
Executable file
8
scripts/00_build_repo.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script clones & builds all RPMs that are used in repository.
|
||||||
|
|
||||||
|
# Build kernel
|
||||||
|
sh 01_build_kernel.sh
|
||||||
|
|
||||||
|
# sh 02_build_m1n1.sh
|
41
scripts/01_build_kernel.sh
Executable file
41
scripts/01_build_kernel.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script clones & builds all linux-asahi related packages.
|
||||||
|
|
||||||
|
_rcver=6.2
|
||||||
|
_rcrel=3
|
||||||
|
_asahirel=6
|
||||||
|
_commit_id=asahi-${_rcver}${_rcrel+-rc}${_rcrel}-${_asahirel}
|
||||||
|
makethreads=`nproc`
|
||||||
|
CC=gcc
|
||||||
|
CXX=g++
|
||||||
|
|
||||||
|
if [ ! -d build ]; then
|
||||||
|
mkdir build
|
||||||
|
fi
|
||||||
|
cd build
|
||||||
|
|
||||||
|
if [ ! -f ${_commit_id}.tar.gz ]; then
|
||||||
|
echo "Downloading linux-asahi sources"
|
||||||
|
curl -fSLO https://github.com/AsahiLinux/linux/archive/refs/tags/${_commit_id}.tar.gz
|
||||||
|
fi
|
||||||
|
if [ ! -d linux-${_commit_id} ]; then
|
||||||
|
echo "Unpacking linux-asahi"
|
||||||
|
tar xpf ${_commit_id}.tar.gz
|
||||||
|
fi
|
||||||
|
curl -o config -fsSL https://raw.githubusercontent.com/AsahiLinux/PKGBUILDs/main/linux-asahi/config
|
||||||
|
sed -i -e s/-ARCH/-suse/ config
|
||||||
|
|
||||||
|
cd linux-${_commit_id}
|
||||||
|
echo "Building main kernel"
|
||||||
|
cp ../config .config
|
||||||
|
make olddefconfig prepare
|
||||||
|
diff -u ../config .config || :
|
||||||
|
make -j$makethreads CC=$CC CXX=$CXX rpm-pkg
|
||||||
|
|
||||||
|
# Making source package for asahi-dtbs
|
||||||
|
|
||||||
|
make dtbs
|
||||||
|
make INSTALL_PATH=. dtbs_install
|
||||||
|
tar cf dtbs-${_rcver}${_rcrel+_rc}${_rcrel}_${_asahirel}.tar dtbs/
|
||||||
|
cp dtbs-${_rcver}${_rcrel+_rc}${_rcrel}_${_asahirel}.tar ~/rpmbuild/SOURCES/
|
17
scripts/02_build_rpms.sh
Executable file
17
scripts/02_build_rpms.sh
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script clones & builds all packages using .spec files.
|
||||||
|
|
||||||
|
SPECTOOL=$(curl https://pagure.io/spectool/raw/master/f/spectool)
|
||||||
|
|
||||||
|
for i in `ls ../specs/*.spec`
|
||||||
|
do
|
||||||
|
# Using spectool to download source tarball
|
||||||
|
python3 -c "$SPECTOOL" -g $i
|
||||||
|
done
|
||||||
|
mv *.tar.gz `rpm --eval "%{_sourcedir}"`
|
||||||
|
for i in `ls ../specs/*.spec`
|
||||||
|
do
|
||||||
|
# Building
|
||||||
|
rpmbuild -ba $i
|
||||||
|
done
|
29
specs/asahi-dtbs.spec
Normal file
29
specs/asahi-dtbs.spec
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
Name: asahi-dtbs
|
||||||
|
Version: 6.2_rc3_6
|
||||||
|
# From _commit_id in 01_build_kernel.sh
|
||||||
|
Release: 1
|
||||||
|
Summary: Device Trees (dtb) for Apple Silicon machines
|
||||||
|
|
||||||
|
License: GPLv2+
|
||||||
|
URL: https://github.com/AsahiLinux/linux
|
||||||
|
BuildArch: aarch64
|
||||||
|
|
||||||
|
Source0: dtbs-%{version}.tar
|
||||||
|
# Generated by 01_build_kernel.sh
|
||||||
|
|
||||||
|
%description
|
||||||
|
Device Trees (dtb) for Apple Silicon machines
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -n dtbs
|
||||||
|
|
||||||
|
%install
|
||||||
|
install -Dpm 755 -t %{buildroot}/lib/modules/$(cat release)-ARCH/dtbs/ $(find . -type f)
|
||||||
|
|
||||||
|
%files
|
||||||
|
/lib/modules/*-ARCH/dtbs/
|
||||||
|
|
||||||
|
%posttrans
|
||||||
|
update-m1n1
|
||||||
|
|
||||||
|
%changelog
|
50
specs/asahi-scripts.spec
Normal file
50
specs/asahi-scripts.spec
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
Name: asahi-scripts
|
||||||
|
Version: 20221220
|
||||||
|
Release: 4
|
||||||
|
Summary: Miscellaneous scripts for Asahi Linux
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
URL: https://github.com/AsahiLinux/asahi-scripts
|
||||||
|
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
BuildRequires: systemd-rpm-macros
|
||||||
|
|
||||||
|
Requires: bash
|
||||||
|
Requires: growpart
|
||||||
|
Requires: coreutils
|
||||||
|
Requires: diffutils
|
||||||
|
Requires: dosfstools
|
||||||
|
Requires: kernel-firmware-all
|
||||||
|
Requires: sed
|
||||||
|
Requires: tar
|
||||||
|
Requires: asahi-dtbs
|
||||||
|
Requires: m1n1
|
||||||
|
Requires: uboot-asahi
|
||||||
|
|
||||||
|
BuildArch: aarch64
|
||||||
|
|
||||||
|
%description
|
||||||
|
This package contains miscellaneous admin scripts for the Asahi Linux reference
|
||||||
|
distro.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -n asahi-scripts-%{version}
|
||||||
|
|
||||||
|
%install
|
||||||
|
make DESTDIR=%{buildroot} PREFIX=/usr install
|
||||||
|
make DESTDIR=%{buildroot} PREFIX=/usr DRACUT_CONF_DIR=/etc/dracut.conf.d install-dracut
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license LICENSE
|
||||||
|
/etc/m1n1.conf
|
||||||
|
/etc/dracut.conf.d/10-asahi.conf
|
||||||
|
/usr/bin/update-m1n1
|
||||||
|
/usr/bin/asahi-fwextract
|
||||||
|
/usr/bin/asahi-diagnose
|
||||||
|
/usr/share/asahi-scripts/functions.sh
|
||||||
|
/usr/lib/dracut/modules.d/99asahi-firmware/module-setup.sh
|
||||||
|
/usr/lib/dracut/modules.d/99asahi-firmware/install-asahi-firmware.sh
|
||||||
|
/usr/lib/dracut/modules.d/99asahi-firmware/load-asahi-firmware.sh
|
||||||
|
|
||||||
|
#%%changelog
|
||||||
|
#%%autochangelog
|
153
specs/kernel.sh
Executable file
153
specs/kernel.sh
Executable file
|
@ -0,0 +1,153 @@
|
||||||
|
#!/bin/bash
|
||||||
|
cd=$(pwd)
|
||||||
|
_rcver=6.2
|
||||||
|
_rcrel=3
|
||||||
|
_asahirel=7
|
||||||
|
_commit_id=asahi-${_rcver}${_rcrel+-rc}${_rcrel}-${_asahirel}
|
||||||
|
|
||||||
|
rpmbuildsources=$(rpm --eval %{_sourcedir})
|
||||||
|
|
||||||
|
curl -fSLo $rpmbuildsources/${_commit_id}.tar.gz https://github.com/AsahiLinux/linux/archive/refs/tags/${_commit_id}.tar.gz
|
||||||
|
echo
|
||||||
|
curl -fSLo $rpmbuildsources/config-${_commit_id} https://raw.githubusercontent.com/AsahiLinux/PKGBUILDs/main/linux-asahi/config
|
||||||
|
tmpdir=$(mktemp -dp /var/tmp)
|
||||||
|
cd $tmpdir
|
||||||
|
tar xpvf $rpmbuildsources/${_commit_id}.tar.gz
|
||||||
|
cd linux-${_commit_id}
|
||||||
|
ver=$(make kernelversion)
|
||||||
|
cd $cd
|
||||||
|
rm -rf $tmpdir
|
||||||
|
cat > kernel.spec << EOF
|
||||||
|
%define _rcver ${_rcver}
|
||||||
|
%define _rcrel ${_rcrel}
|
||||||
|
%define _asahirel ${_asahirel}
|
||||||
|
%define _commit_id asahi-%{_rcver}%(if [ ! %_rcrel == "0" ]; then echo -rc%{_rcrel}; fi)-%{_asahirel}
|
||||||
|
%define _rpm_ver %{_rcver}%(if [ ! %_rcrel == "0" ]; then echo _rc%{_rcrel}; fi)_%{_asahirel}_asahi_suse
|
||||||
|
%define ver ${ver}-asahi-suse
|
||||||
|
Name: kernel
|
||||||
|
Summary: The Linux Kernel
|
||||||
|
Version: %{_rpm_ver}
|
||||||
|
Release: 1
|
||||||
|
License: GPL
|
||||||
|
Group: System Environment/Kernel
|
||||||
|
Vendor: The Linux Community
|
||||||
|
URL: https://www.kernel.org
|
||||||
|
Source0: https://github.com/AsahiLinux/linux/archive/refs/tags/%{_commit_id}.tar.gz
|
||||||
|
Source1: config-%{_commit_id}
|
||||||
|
Provides: kernel-drm kernel-%{_rpm_ver} kernel-default kernel kernel-asahi
|
||||||
|
BuildRequires: bc binutils bison dwarves
|
||||||
|
BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||||
|
BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
|
||||||
|
# aarch64 as a fallback of _arch in case
|
||||||
|
# /usr/lib/rpm/platform/*/macros was not included.
|
||||||
|
%define _arch %{?_arch:aarch64}
|
||||||
|
%define __spec_install_post /usr/lib/rpm/brp-compress || :
|
||||||
|
%define debug_package %{nil}
|
||||||
|
|
||||||
|
%description
|
||||||
|
The Linux Kernel, the operating system core itself
|
||||||
|
|
||||||
|
%package headers
|
||||||
|
Summary: Header files for the Linux kernel for use by glibc
|
||||||
|
Group: Development/System
|
||||||
|
Obsoletes: kernel-headers
|
||||||
|
Provides: kernel-headers = %{version}
|
||||||
|
%description headers
|
||||||
|
Kernel-headers includes the C header files that specify the interface
|
||||||
|
between the Linux kernel and userspace libraries and programs. The
|
||||||
|
header files define structures and constants that are needed for
|
||||||
|
building most standard programs and are also needed for rebuilding the
|
||||||
|
glibc package.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development package for building kernel modules to match the %{_rpm_ver} kernel
|
||||||
|
Group: System Environment/Kernel
|
||||||
|
AutoReqProv: no
|
||||||
|
%description -n kernel-devel
|
||||||
|
This package provides kernel headers and makefiles sufficient to build modules
|
||||||
|
against the %{_rpm_ver} kernel package.
|
||||||
|
|
||||||
|
%package dtbs
|
||||||
|
Summary: Device Tree binaries (dtbs) for Apple Silicon machines
|
||||||
|
Group: System Environment/Kernel
|
||||||
|
Provides: asahi-dtbs kernel-asahi-dtbs
|
||||||
|
%description dtbs
|
||||||
|
Device Tree binaries (dtbs) for Apple Silicon machines
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -n linux-%{_commit_id} -q
|
||||||
|
sed -i -e s/-ARCH/-suse/ %{_sourcedir}/config-%{_commit_id}
|
||||||
|
cp %{_sourcedir}/config-%{_commit_id} .config
|
||||||
|
make olddefconfig prepare
|
||||||
|
diff -u %{_sourcedir}/config-%{_commit_id} .config || :
|
||||||
|
rm -f scripts/basic/fixdep scripts/kconfig/conf
|
||||||
|
rm -f tools/objtool/{fixdep,objtool}
|
||||||
|
|
||||||
|
%build
|
||||||
|
make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} vmlinux modules dtbs Image
|
||||||
|
|
||||||
|
%install
|
||||||
|
mkdir -p %{buildroot}/boot
|
||||||
|
cp arch/arm64/boot/Image %{buildroot}/boot/Image-%{ver}
|
||||||
|
make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
|
||||||
|
make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
|
||||||
|
cp System.map %{buildroot}/boot/System.map-%{ver}
|
||||||
|
cp .config %{buildroot}/boot/config-%{ver}
|
||||||
|
rm -f %{buildroot}/lib/modules/%{ver}/build
|
||||||
|
rm -f %{buildroot}/lib/modules/%{ver}/source
|
||||||
|
mkdir -p %{buildroot}/usr/src/kernels/%{ver}
|
||||||
|
make INSTALL_PATH=. dtbs_install
|
||||||
|
install -Dpm 755 -t %{buildroot}/lib/modules/%{ver}-ARCH/dtbs/ \$(find dtbs/ -type f)
|
||||||
|
tar cf - --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git --exclude=*vmlinux* --exclude=*.mod --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s . | tar xf - -C %{buildroot}/usr/src/kernels/%{ver}
|
||||||
|
cd %{buildroot}/lib/modules/%{ver}
|
||||||
|
ln -sf /usr/src/kernels/%{ver} build
|
||||||
|
ln -sf /usr/src/kernels/%{ver} source
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
|
%post
|
||||||
|
if [ -x /sbin/installkernel -a -r /boot/Image-%{ver} -a -r /boot/System.map-%{ver} ]; then
|
||||||
|
cp /boot/Image-%{ver} /boot/.Image-%{ver}-rpm
|
||||||
|
cp /boot/System.map-%{ver} /boot/.System.map-%{ver}-rpm
|
||||||
|
rm -f /boot/Image-%{ver} /boot/System.map-%{ver}
|
||||||
|
/sbin/installkernel %{ver} /boot/.Image-%{ver}-rpm /boot/.System.map-%{ver}-rpm
|
||||||
|
rm -f /boot/.Image-%{ver}-rpm /boot/.System.map-%{ver}-rpm
|
||||||
|
fi
|
||||||
|
|
||||||
|
%preun
|
||||||
|
if [ -x /sbin/new-kernel-pkg ]; then
|
||||||
|
new-kernel-pkg --remove %{ver} --rminitrd --initrdfile=/boot/initramfs-%{ver}.img
|
||||||
|
elif [ -x /usr/bin/kernel-install ]; then
|
||||||
|
kernel-install remove %{ver}
|
||||||
|
fi
|
||||||
|
|
||||||
|
%postun
|
||||||
|
if [ -x /sbin/update-bootloader ]; then
|
||||||
|
/sbin/update-bootloader --remove %{ver}
|
||||||
|
fi
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr (-, root, root)
|
||||||
|
/lib/modules/%{ver}
|
||||||
|
%exclude /lib/modules/%{ver}/build
|
||||||
|
%exclude /lib/modules/%{ver}/source
|
||||||
|
/boot/*
|
||||||
|
|
||||||
|
%files headers
|
||||||
|
%defattr (-, root, root)
|
||||||
|
/usr/include
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr (-, root, root)
|
||||||
|
/usr/src/kernels/%{ver}
|
||||||
|
/lib/modules/%{ver}/build
|
||||||
|
/lib/modules/%{ver}/source
|
||||||
|
|
||||||
|
%files dtbs
|
||||||
|
%defattr (-, root, root)
|
||||||
|
/lib/modules/*-ARCH/dtbs/
|
||||||
|
EOF
|
||||||
|
echo "Prepared kernel.spec for $ver"
|
65
specs/m1n1.spec
Normal file
65
specs/m1n1.spec
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
Name: m1n1
|
||||||
|
Version: 1.2.4
|
||||||
|
Release: 1
|
||||||
|
Summary: Bootloader and experimentation playground for Apple Silicon
|
||||||
|
|
||||||
|
# m1n1 proper is MIT licensed, but it relies on a number of vendored projects
|
||||||
|
# See the "License" section in README.md for the breakdown
|
||||||
|
License: MIT and CC0 and BSD and OFL and zlib
|
||||||
|
URL: https://github.com/AsahiLinux/m1n1
|
||||||
|
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
%ifarch aarch64
|
||||||
|
# On aarch64 do a native build
|
||||||
|
BuildRequires: gcc
|
||||||
|
%global buildflags RELEASE=1 ARCH=
|
||||||
|
%else
|
||||||
|
# By default m1n1 does a cross build
|
||||||
|
BuildRequires: gcc-aarch64-linux-gnu
|
||||||
|
%global buildflags RELEASE=1
|
||||||
|
%endif
|
||||||
|
BuildRequires: make
|
||||||
|
|
||||||
|
BuildRequires: ImageMagick
|
||||||
|
BuildRequires: zopfli
|
||||||
|
|
||||||
|
# For the udev rule
|
||||||
|
BuildRequires: systemd-rpm-macros
|
||||||
|
|
||||||
|
# These are bundled, modified and statically linked into m1n1
|
||||||
|
Provides: bundled(arm-trusted-firmware)
|
||||||
|
Provides: bundled(dwc3)
|
||||||
|
Provides: bundled(dlmalloc)
|
||||||
|
Provides: bundled(PDCLib)
|
||||||
|
Provides: bundled(libfdt)
|
||||||
|
Provides: bundled(minilzlib)
|
||||||
|
Provides: bundled(tinf)
|
||||||
|
|
||||||
|
%description
|
||||||
|
m1n1 is the bootloader developed by the Asahi Linux project to bridge the Apple
|
||||||
|
(XNU) boot ecosystem to the Linux boot ecosystem.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
tar xpvf %{_sourcedir}/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
%build
|
||||||
|
cd %{name}-%{version}
|
||||||
|
%make_build %{buildflags}
|
||||||
|
|
||||||
|
%install
|
||||||
|
install -Dpm0644 -t %{buildroot}/usr/lib/asahi-boot %{name}-%{version}/build/%{name}.bin
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license %{name}-%{version}/LICENSE %{name}-%{version}/3rdparty_licenses/LICENSE.*
|
||||||
|
%doc %{name}-%{version}/README.md
|
||||||
|
/usr/lib/asahi-boot/m1n1.bin
|
||||||
|
|
||||||
|
%posttrans
|
||||||
|
update-m1n1
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Jan 24 2023 Ivan Bushchik <ivabus@ivabus.dev> 1.2.4-1
|
||||||
|
- Update to 1.2.4; Fix installation
|
||||||
|
|
||||||
|
* Sun Jan 22 2023 Ivan Bushchik <ivabus@ivabus.dev> 1.2.3-1
|
||||||
|
- Initial version
|
47
specs/uboot-asahi.spec
Normal file
47
specs/uboot-asahi.spec
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
Name: uboot-asahi
|
||||||
|
Version: 2022.10
|
||||||
|
Release: 2
|
||||||
|
Summary: U-Boot for Apple Silicon Macs
|
||||||
|
License: GPLv3+
|
||||||
|
URL: https://github.com/AsahiLinux
|
||||||
|
BuildArch: aarch64
|
||||||
|
%define debug_package %{nil}
|
||||||
|
%define uboot_commit_id asahi-v%{version}-1
|
||||||
|
|
||||||
|
# to download the sources
|
||||||
|
# spectool -g uboot-asahi.spec
|
||||||
|
|
||||||
|
Source0: https://github.com/AsahiLinux/u-boot/archive/%{uboot_commit_id}.tar.gz
|
||||||
|
|
||||||
|
BuildRequires: bison
|
||||||
|
BuildRequires: flex
|
||||||
|
BuildRequires: gcc
|
||||||
|
BuildRequires: ImageMagick
|
||||||
|
BuildRequires: make
|
||||||
|
BuildRequires: openssl-devel
|
||||||
|
|
||||||
|
|
||||||
|
Provides: /usr/lib/asahi-boot/u-boot-nodtb.bin
|
||||||
|
|
||||||
|
%description
|
||||||
|
U-Boot for Apple Silicon Macs
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -b 0 -n u-boot-%{uboot_commit_id}
|
||||||
|
make %{_builddir}/u-boot-%{uboot_commit_id} apple_m1_defconfig
|
||||||
|
|
||||||
|
%build
|
||||||
|
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE=""
|
||||||
|
|
||||||
|
%install
|
||||||
|
install -Dpm0644 -t %{buildroot}/usr/lib/asahi-boot %{_builddir}/u-boot-%{uboot_commit_id}/u-boot-nodtb.bin
|
||||||
|
|
||||||
|
%posttrans
|
||||||
|
update-m1n1
|
||||||
|
|
||||||
|
%files
|
||||||
|
/usr/lib/asahi-boot/u-boot-nodtb.bin
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Jan 24 2023 Ivan Bushchik <ivabus@ivabus.dev> 2022.10-2
|
||||||
|
- Initial version
|
Loading…
Reference in a new issue