Skip to content

Commit

Permalink
Merge pull request #975 from NeroReflex/dracut
Browse files Browse the repository at this point in the history
Use dracut instead of mkinitcpio
  • Loading branch information
ruineka committed Jul 24, 2024
2 parents 1a9e616 + deda22b commit c231dee
Show file tree
Hide file tree
Showing 22 changed files with 173 additions and 45 deletions.
4 changes: 3 additions & 1 deletion build-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ sed -i '/CheckSpace/s/^/#/g' /etc/pacman.conf
# update package databases
pacman --noconfirm -Syy
# Avoid mkintcpio being auto-installed while installing the kernel (we want dracut)
pacman -S --noconfirm dracut
# install kernel package
if [ "$KERNEL_PACKAGE_ORIGIN" == "local" ] ; then
pacman --noconfirm -U --overwrite '*' \
Expand Down Expand Up @@ -201,7 +204,6 @@ cp -r /var/lib/pacman/local /usr/var/lib/pacman/
if [ ${KERNEL_PACKAGE} != 'linux' ] ; then
mv /boot/vmlinuz-${KERNEL_PACKAGE} /boot/vmlinuz-linux
mv /boot/initramfs-${KERNEL_PACKAGE}.img /boot/initramfs-linux.img
mv /boot/initramfs-${KERNEL_PACKAGE}-fallback.img /boot/initramfs-linux-fallback.img
fi
# clean up/remove unnecessary files
Expand Down
1 change: 0 additions & 1 deletion manifest
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ export USER_SERVICES="\
"

export FILES_TO_DELETE="\
/boot/initramfs-linux-fallback.img \
/usr/share/SFML \
/usr/share/doc \
/usr/share/gtk-doc \
Expand Down
4 changes: 4 additions & 0 deletions pkgs/chimeraos-dracut-cfg/00-chimeraos.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
early_microcode="yes"
compress="xz -9e --check=crc32 -v"

omit_dracutmodules+=" squash "
4 changes: 4 additions & 0 deletions pkgs/chimeraos-dracut-cfg/10-chimeraos_use-fstab.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
add_dracutmodules+=" rootfs-block "

# Use the fstab file in the initramfs
use_fstab="yes"
1 change: 1 addition & 0 deletions pkgs/chimeraos-dracut-cfg/20-chimeraos_plymouth.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
omit_dracutmodules+=" plymouth "
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
add_dracutmodules+=" overlayfs "
add_dracutmodules+=" btrfs "
add_drivers+=" nvme vfat "
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
omit_dracutmodules+=" systemd-pcrphase systemd-cryptsetup crypt tpm2-tss "
1 change: 1 addition & 0 deletions pkgs/chimeraos-dracut-cfg/50-chimeraos_exclude-mdraid.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
omit_dracutmodules+=" mdraid "
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
omit_dracutmodules+=" cifs "
omit_dracutmodules+=" nfs "
omit_dracutmodules+=" network "
omit_dracutmodules+=" network-manager "
omit_dracutmodules+=" connman "
omit_dracutmodules+=" network-legacy "
omit_dracutmodules+=" network-wicked "
10 changes: 10 additions & 0 deletions pkgs/chimeraos-dracut-cfg/60-dracut-remove.hook
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[Trigger]
Type = Path
Operation = Remove
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Removing linux initcpios...
When = PreTransaction
Exec = /usr/local/bin/dracut-remove.sh
NeedsTargets
1 change: 1 addition & 0 deletions pkgs/chimeraos-dracut-cfg/70-chimeraos_exclude-nvdimm.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
omit_dracutmodules+=" nvdimm "
3 changes: 3 additions & 0 deletions pkgs/chimeraos-dracut-cfg/80-chimeraos_exclude-qemu.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
omit_dracutmodules+=" qemu "
omit_dracutmodules+=" qemu-net "
omit_dracutmodules+=" virtiofs "
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
omit_dracutmodules+=" bluetooth "
12 changes: 12 additions & 0 deletions pkgs/chimeraos-dracut-cfg/90-dracut-install.hook
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Updating linux initcpios (with dracut!)...
When = PostTransaction
Exec = /usr/local/bin/dracut-install.sh
Depends = dracut
NeedsTargets
73 changes: 73 additions & 0 deletions pkgs/chimeraos-dracut-cfg/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Maintainer: Denis Benato <[email protected]>

pkgname=chimeraos-dracut-cfg
pkgver=0.0.1
pkgrel=1
pkgdesc="Dracut-specific configuration for chimeraos"
arch=('any')
url="https://github.com/ChimeraOS/chimeraos"
license=('MIT')
depends=(
'dracut' # regenerate the initramfs
#'plymouth' # support for boot animations
'binutils' # allow usage of --strip
)
source=(
"dracut-install.sh"
"dracut-remove.sh"
"00-chimeraos.conf"
"10-chimeraos_use-fstab.conf"
"20-chimeraos_plymouth.conf"
"30-chimeraos_include-filesystems.conf"
"40-chimeraos_exclude-encryption.conf"
"50-chimeraos_exclude-mdraid.conf"
"60-chimeraos_exclude-networking.conf"
"70-chimeraos_exclude-nvdimm.conf"
"80-chimeraos_exclude-qemu.conf"
"90-chimeraos_exclude-bluetooth.conf"
"60-dracut-remove.hook"
"90-dracut-install.hook"
)
sha256sums=(
'827d59e8fda5c16b3fc45eb89ce7cd5be6c40d35dd8fe9a8d5ea825a63d3a089' # dracut-install.sh
'daefb58a0bf6df48cceaf4f7a898c17ca1f24e18cd7981b19f5f2034499592ed' # dracut-remove.sh
'1f356cc895156064cec63f589ea49acc59a4faab94b7ebe99dc904893da85907' # 00-chimeraos.conf
'7886062a7293d2e6bd6e975c4a8aaae63342af366479db8adf1b75860081cf53' # 10-chimeraos_use-fstab.conf
'103cf3322954202c3f0f740cd9079546d059f919c8b1b07ac703ec6f94cf17fb' # 20-chimeraos_plymouth.conf
'676b4a216cd3787882edf2e5bdaebce4577a11dbae176f81bab1c1b72917fc09' # 30-chimeraos_include-filesystems.conf
'8b4247161bb9158bf382517bb061360c184315e71fea244420d8db99d2730129' # 40-chimeraos_exclude-encryption.conf
'84cccef9706590795b37b4d949c0a34e6ee7ba34ee7ff01a8c808a2fe3ff7f89' # 50-chimeraos_exclude-mdraid.conf
'e1f9caf3878e65ca28951642ad02c1b167eacba777b4ccc893f6b8702a6d474e' # 60-chimeraos_exclude-networking.conf
'5822aa5a698577937820ab2565a203492b6af81434bf1423664ef68bba8c1617' # 70-chimeraos_exclude-nvdimm.conf
'b126149ca9f79bb1deb7ec640f4452dd61f4214558f954b7bc9196c5e9ca6ef0' # 80-chimeraos_exclude-qemu.conf
'e983493fe3e7d9395dd8d1c8949150144c8d4318ff17ff2aca004235734c8299' # 90-chimeraos_exclude-bluetooth.conf
'41c996bf7ef90e6a81690c4a06cbef89167882a036699834fe22637a1a184982' # 60-dracut-remove.hook
'df94baaf97d110f65f1443dd7063fe0e8ec1f73b5baf142c6ff08c260e571fcb' # 90-dracut-install.hook
)

package() {
mkdir -p "$pkgdir/etc/dracut.conf.d/"
mkdir -p "$pkgdir/usr/local/bin/"
mkdir -p "$pkgdir/usr/share/libalpm/hooks"

install -m 755 "$srcdir/dracut-install.sh" "$pkgdir/usr/local/bin"
install -m 755 "$srcdir/dracut-remove.sh" "$pkgdir/usr/local/bin"

install -m 644 "$srcdir/60-dracut-remove.hook" "$pkgdir/usr/share/libalpm/hooks"
install -m 644 "$srcdir/90-dracut-install.hook" "$pkgdir/usr/share/libalpm/hooks"

install -m 644 "$srcdir/00-chimeraos.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/10-chimeraos_use-fstab.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/20-chimeraos_plymouth.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/30-chimeraos_include-filesystems.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/40-chimeraos_exclude-encryption.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/50-chimeraos_exclude-mdraid.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/60-chimeraos_exclude-networking.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/70-chimeraos_exclude-nvdimm.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/80-chimeraos_exclude-qemu.conf" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/90-chimeraos_exclude-bluetooth.conf" "$pkgdir/etc/dracut.conf.d"

install -m 644 "$srcdir/60-dracut-remove.hook" "$pkgdir/etc/dracut.conf.d"
install -m 644 "$srcdir/90-dracut-install.hook" "$pkgdir/etc/dracut.conf.d"
}

15 changes: 15 additions & 0 deletions pkgs/chimeraos-dracut-cfg/dracut-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

args=('--force' '--strip' '--aggressive-strip' '--reproducible')

while read -r line; do
if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
read -r pkgbase < "/${line}"
kver="${line#'usr/lib/modules/'}"
kver="${kver%'/pkgbase'}"

install -Dm0644 "/${line%'/pkgbase'}/vmlinuz" "/boot/vmlinuz-${pkgbase}"
dracut --no-hostonly --no-hostonly-cmdline "${args[@]}" "/boot/initramfs-${pkgbase}.img" --kver "$kver"
#dracut --no-hostonly "${args[@]}" "/boot/initramfs-${pkgbase}-fallback.img" --kver "$kver"
fi
done
10 changes: 10 additions & 0 deletions pkgs/chimeraos-dracut-cfg/dracut-remove.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env bash

while read -r line; do
if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
read -r pkgbase < "/${line}"
rm -f "/boot/vmlinuz-${pkgbase}"
rm -f "/boot/initramfs-${pkgbase}.img"
#rm -f "/boot/initramfs-${pkgbase}-fallback.img"
fi
done
18 changes: 18 additions & 0 deletions pkgs/chimeraos-fake-mkinitcpio/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
pkgname=chimeraos-fake-mkinitcpio
pkgver=39.2
pkgrel=2
pkgdesc="A stub implementation of mkinitcpio that does nothing except providing the executable that does nothing"
arch=('any')
url='https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio'
license=('GPL-2.0-only')
depends=()
provides=('initramfs')
conflicts=('mkinitcpio')
source=('mkinitcpio')
b2sums=('4b40ab2908ab1ad57e72e22f6f74f4d22d3bb09a42d64956a64c48cf0dadb645da4c4e3edb31fa3068c909a1f03c0fa9fd534cb7159d6d56526d5dbb3104b9b0')

package() {
mkdir -p "$pkgdir/usr/bin"
install -m 755 "$srcdir/mkinitcpio" "$pkgdir/usr/bin"
}

6 changes: 6 additions & 0 deletions pkgs/chimeraos-fake-mkinitcpio/mkinitcpio
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/sh

# The pre-refactor frzr will call the target image mkinitcpio.
# We want to avoid generating an error, yet we want this tool to do nothing as
# device-quirks is now installed in a deployment migration.
echo "[WARNING] Fake mkinitcpio called."
24 changes: 0 additions & 24 deletions rootfs/etc/initcpio/hooks/frzr-etc

This file was deleted.

11 changes: 0 additions & 11 deletions rootfs/etc/initcpio/install/frzr-etc

This file was deleted.

8 changes: 0 additions & 8 deletions rootfs/etc/mkinitcpio.conf

This file was deleted.

0 comments on commit c231dee

Please sign in to comment.