]> git.pld-linux.org Git - packages/geninitrd.git/blobdiff - geninitrd-git.patch
- rel 5; add fixes from git
[packages/geninitrd.git] / geninitrd-git.patch
index 59fae927726639c5f9b6c6f325c06d747aaa5e4b..2287221318db329aa5305681c9dda2c5fc2e35c7 100644 (file)
-commit c6e700c36a25dd8c8438bbac6d53f5d558100d46
+commit 43d2f37d89034a2e409bb4f66cca1a64b12130b8
 Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
-Date:   Wed May 14 19:05:42 2014 +0200
+Date:   Mon Nov 25 20:15:24 2019 +0100
 
-    Install 95-dm-notify.rules. Fixes problems with using dmcrypt and errors (in debug mode) like 'Udev cookie 0xd4dc311 (semid 229380) waiting for zero'
+    Accept d/D symbols, too (ffffffff825ca52c D __initramfs_start) as noticed in recent 4.19.85-1 kernel.
+
+diff --git a/geninitrd b/geninitrd
+index 05e290a..052f553 100755
+--- a/geninitrd
++++ b/geninitrd
+@@ -1097,7 +1097,7 @@ sym_exists() {
+               return 1
+       fi
+-      awk -vc=1 -vsymbol="$symbol" '($2 == "T" || $2 == "t") && $3 == symbol {c = 0} END {exit c}' $mapfile
++      awk -vc=1 -vsymbol="$symbol" '(tolower($2) == "t" || tolower($2) == "d") && $3 == symbol {c = 0} END {exit c}' $mapfile
+ }
+ # find best compressor (or forced one) for initrd
+
+commit 04b32086569a126d5d6f9bd0ad1b0db9f142f50e
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Sun Jul 21 21:04:05 2019 +0200
+
+    Try to detect a need for nvme driver. If you know better method then share with us.
+
+diff --git a/geninitrd b/geninitrd
+index b5d405a..05e290a 100755
+--- a/geninitrd
++++ b/geninitrd
+@@ -673,6 +673,11 @@ find_modules_for_devpath() {
+               return
+       fi
++      if [[ "$devpath" == /dev/nvme* ]]; then
++              find_module "nvme"
++              return
++      fi
++
+       if [[ "$devpath" == /dev/bcache* ]]; then
+               find_modules_bcache "$devpath"
+               return
+
+commit 4de5a3333e772ad198381f157c014e452e42c129
+Author: Elan Ruusamäe <glen@pld-linux.org>
+Date:   Mon Jul 15 23:56:58 2019 +0300
+
+    fix indent
+
+diff --git a/mod-usbkbd.sh b/mod-usbkbd.sh
+index ff8f442..35543b7 100644
+--- a/mod-usbkbd.sh
++++ b/mod-usbkbd.sh
+@@ -10,22 +10,22 @@ find_modules_usbkbd() {
+       local modules i module bInterfaceClass bInterfaceProtocol
+-        for i in /sys/bus/usb/devices/*-*:*; do
+-                # standard usb keyboards
+-                if [ -f $i/bInterfaceClass -a -f $i/bInterfaceProtocol ]; then
+-                        bInterfaceClass=$(cat $i/bInterfaceClass)
+-                        bInterfaceProtocol=$(cat $i/bInterfaceProtocol)
+-                        if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
+-                                module=$(readlink $i/driver/module)
+-                                module=$(basename $module)
++      for i in /sys/bus/usb/devices/*-*:*; do
++              # standard usb keyboards
++              if [ -f $i/bInterfaceClass -a -f $i/bInterfaceProtocol ]; then
++                      bInterfaceClass=$(cat $i/bInterfaceClass)
++                      bInterfaceProtocol=$(cat $i/bInterfaceProtocol)
++                      if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
++                              module=$(readlink $i/driver/module)
++                              module=$(basename $module)
+-                                if [ -n "$module" ]; then
+-                                        verbose "Found USB Keyboard driver: $module"
+-                                        modules="$modules $module"
+-                                fi
+-                        fi
+-                fi
+-        done
++                              if [ -n "$module" ]; then
++                                      verbose "Found USB Keyboard driver: $module"
++                                      modules="$modules $module"
++                              fi
++                      fi
++              fi
++      done
+       for i in /sys/class/input/input*; do
+               # standard usb keyboards
+
+commit 662fd5a3adac2080640fa4eacd34d72504526175
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Mon Jul 15 19:59:46 2019 +0200
+
+    Another way for findings usb keyboard drivers that works on newer kernels.
+
+diff --git a/mod-usbkbd.sh b/mod-usbkbd.sh
+index 0dd0d20..ff8f442 100644
+--- a/mod-usbkbd.sh
++++ b/mod-usbkbd.sh
+@@ -10,6 +10,23 @@ find_modules_usbkbd() {
+       local modules i module bInterfaceClass bInterfaceProtocol
++        for i in /sys/bus/usb/devices/*-*:*; do
++                # standard usb keyboards
++                if [ -f $i/bInterfaceClass -a -f $i/bInterfaceProtocol ]; then
++                        bInterfaceClass=$(cat $i/bInterfaceClass)
++                        bInterfaceProtocol=$(cat $i/bInterfaceProtocol)
++                        if [ "$bInterfaceClass" = "03" -a "$bInterfaceProtocol" = "01" ]; then
++                                module=$(readlink $i/driver/module)
++                                module=$(basename $module)
++
++                                if [ -n "$module" ]; then
++                                        verbose "Found USB Keyboard driver: $module"
++                                        modules="$modules $module"
++                                fi
++                        fi
++                fi
++        done
++
+       for i in /sys/class/input/input*; do
+               # standard usb keyboards
+               if [ -f $i/device/bInterfaceClass -a -f $i/device/bInterfaceProtocol ]; then
+
+commit b565e95c147bea4e68e4ccf5ad19906d51d2375b
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Wed May 15 21:04:45 2019 +0200
+
+    Prepend cpu microcode to initrd image, so kernel will pick it up when LILO is in use.
+
+diff --git a/geninitrd b/geninitrd
+index 118333c..b5d405a 100755
+--- a/geninitrd
++++ b/geninitrd
+@@ -17,6 +17,7 @@ PROGRAM=${0##*/}
+ # list of geninitrd modules which need setup routine after commandline args parsing
+ GENINITRD_MODS=""
+ COMPRESS=yes
++LILO_MICROCODE=yes
+ STRIP=/usr/bin/strip
+ target=""
+ kernel=""
+@@ -1186,6 +1187,16 @@ compress_image() {
+       mv -f "$tmp" "$target"
+ }
++# prepend file to image
++prepend_file_to_image() {
++      local file="$1" target="$2" tmp
++      tmp=$(mktemp "$target".XXXXXX) || die "mktemp failed"
++
++      cat "$file" "$target" > "$tmp" || return $?
++
++      mv -f "$tmp" "$target"
++}
++
+ if [ -r /etc/sysconfig/geninitrd ]; then
+       . /etc/sysconfig/geninitrd
+ fi
+@@ -1801,6 +1812,14 @@ else
+       cp -a "$IMAGE" "$target"
+ fi
++# microcode support for lilo
++if ! is_no "$LILO_MICROCODE"; then
++      if [ -x /sbin/lilo -a -f "/boot/intel-ucode.img" ]; then
++              verbose "Prepending $target with microcode image /boot/intel-ucode.img for LILO"
++              prepend_file_to_image "/boot/intel-ucode.img" "$target"
++      fi
++fi
++
+ # XXX. check if bootsplash can output data to tmp dir not directly to initramfs image.
+ initrd_gen_bootsplash "$target"
+diff --git a/geninitrd.sysconfig b/geninitrd.sysconfig
+index ccf177c..1268324 100644
+--- a/geninitrd.sysconfig
++++ b/geninitrd.sysconfig
+@@ -18,6 +18,9 @@
+ # Default is to use initramfs for >= 2.5.0.
+ #INITRDFS=initramfs
++# Should we prepend cpu microcode when lilo is installed
++#LILO_MICROCODE=no
++
+ ## Use udev to create /dev?
+ USE_UDEV=yes
+
+commit ad5033d7e704edaf52f2be18d4aa98c378179ede
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Fri Jan 25 20:38:24 2019 +0100
+
+    Timeout here is not a good idea. rootfs cannot be mounted and kernel oopses due to that.
+
+diff --git a/mod-luks.sh b/mod-luks.sh
+index ff877f7..ffe87cb 100644
+--- a/mod-luks.sh
++++ b/mod-luks.sh
+@@ -162,7 +162,7 @@ luks_crypttab() {
+                       done
+                       IFS="$old_IFS"
+-                      verbose "+ cryptsetup --timeout=120 ${keyfile:+-d $keyfile} open $crypttab_opt '$src' '$dst'"
++                      verbose "+ cryptsetup ${keyfile:+-d $keyfile} open $crypttab_opt '$src' '$dst'"
+                       add_linuxrc <<-EOF
+                       debugshell
+@@ -189,7 +189,7 @@ luks_crypttab() {
+                               crypt_status=\$(cryptsetup \$cryptsetup_opt status '$dst')
+                               if [ "\${crypt_status%%is inactive*}" != "\$crypt_status" ]; then
+                                       # is inactive
+-                                      cryptsetup \$cryptsetup_opt ${keyfile:+-d $keyfile} --timeout 120 open $crypttab_opt "\$luksdev" '$dst' <&1
++                                      cryptsetup \$cryptsetup_opt ${keyfile:+-d $keyfile} open $crypttab_opt "\$luksdev" '$dst' <&1
+                               fi
+                       fi
+
+commit 21ad0f7980ce6a0135e4a3c37a94472ed4f1320c
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Tue Dec 18 14:43:20 2018 +0100
+
+    Use existing mechanism for installing udev apps but install regular variants, too if initrd-variants don't exist.
 
 diff --git a/mod-udev.sh b/mod-udev.sh
-index dbb7c53..6e3008d 100644
+index a2491ee..87f4b68 100644
 --- a/mod-udev.sh
 +++ b/mod-udev.sh
-@@ -47,7 +47,7 @@ initrd_gen_udev() {
+@@ -44,8 +44,6 @@ initrd_gen_udev() {
+       inst_d /sbin /etc/udev /lib/udev
+       inst_exec $udevd /sbin/udevd
+       inst_exec $udevadm /sbin/udevadm
+-      inst_exec /lib/udev/ata_id  /lib/udev/ata_id
+-      inst_exec /lib/udev/scsi_id /lib/udev/scsi_id
        inst /etc/udev/udev.conf /etc/udev/udev.conf
        # standard udev rules
        inst_rules 50-udev-default.rules 60-persistent-storage.rules 61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \
--              60-pcmcia.rules 50-firmware.rules 10-dm.rules 11-dm-lvm.rules 13-dm-disk.rules
-+              60-pcmcia.rules 50-firmware.rules 10-dm.rules 11-dm-lvm.rules 13-dm-disk.rules 95-dm-notify.rules
-       # initrd dedicated rules
-       inst_rules 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
+@@ -57,6 +55,8 @@ initrd_gen_udev() {
+       for e in ata_id cdrom_id collect firmware scsi_id v4l_id; do
+               if [ -e "$initrd_dir/udev/$e" ]; then
+                       inst_exec $initrd_dir/udev/$e /lib/udev/$e
++              elif [ -e "/lib/udev/$e" ]; then
++                      inst_exec /lib/udev/$e /lib/udev/$e
+               fi
+       done
  
-commit ff9aded51db8fa19316dde7864ec193f5fdf22b6
+
+commit 3d81f1cd0bc557ad9a1f157b403f0396866c648c
 Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
-Date:   Mon Jun 9 11:19:10 2014 +0200
+Date:   Tue Dec 18 14:38:55 2018 +0100
 
-    Load configured font and do it early.
+    udevd uses ata_id and scsi_id, so install these.
+
+diff --git a/mod-udev.sh b/mod-udev.sh
+index 422ef3e..a2491ee 100644
+--- a/mod-udev.sh
++++ b/mod-udev.sh
+@@ -41,9 +41,11 @@ setup_mod_udev() {
+ initrd_gen_udev() {
+       verbose "Setting up udev..."
+-      inst_d /sbin /etc/udev
++      inst_d /sbin /etc/udev /lib/udev
+       inst_exec $udevd /sbin/udevd
+       inst_exec $udevadm /sbin/udevadm
++      inst_exec /lib/udev/ata_id  /lib/udev/ata_id
++      inst_exec /lib/udev/scsi_id /lib/udev/scsi_id
+       inst /etc/udev/udev.conf /etc/udev/udev.conf
+       # standard udev rules
+       inst_rules 50-udev-default.rules 60-persistent-storage.rules 61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \
+
+commit dc5ca733ed6fe57dfa39d4598a6586069e41d0b0
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Tue Dec 18 14:34:38 2018 +0100
+
+    Install mdadm in /sbin because udevd expects it to be there.
+
+diff --git a/mod-md.sh b/mod-md.sh
+index 2b6f587..a358517 100644
+--- a/mod-md.sh
++++ b/mod-md.sh
+@@ -133,7 +133,7 @@ initrd_gen_md() {
+       fi
+       verbose "Setting up mdadm..."
+-      inst_exec $mdadm /bin/mdadm
++      inst_exec $mdadm /sbin/mdadm
+       echo "DEVICE partitions containers" >> "$DESTDIR/etc/mdadm.conf"
+@@ -181,7 +181,7 @@ initrd_gen_md() {
+       echo "wait_for_files $cr_dev_list" | add_linuxrc
+       add_linuxrc <<-'EOF'
+-      mdadm --assemble --scan
++      /sbin/mdadm --assemble --scan
+       if [ "$DEBUGINITRD" ]; then
+               [ -e /proc/mdstat ] && echo "/proc/mdstat contents:" && cat /proc/mdstat
+
+commit 33cc4751b8f80fc3b800928b9ad93866b2569915
+Author: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date:   Tue Dec 18 14:33:12 2018 +0100
+
+    Install blkid in /sbin because udevd expects it to be there.
 
 diff --git a/geninitrd b/geninitrd
-index 2478063..f31f00d 100755
+index a79b9c3..118333c 100755
 --- a/geninitrd
 +++ b/geninitrd
-@@ -202,6 +202,25 @@ mount_dev() {
-       EOF
- }
+@@ -1530,7 +1530,7 @@ chmod a+rx "$RCFILE"
+ ln -s linuxrc $DESTDIR/init
  
-+# load font
-+load_font() {
-+      local font
-+      [ ! -r /etc/sysconfig/console ] && return
-+      . /etc/sysconfig/console
-+      if [ -n "$CONSOLEFONT" ]; then
-+              font=$(ls -1 /lib/kbd/consolefonts/${CONSOLEFONT}*.gz 2> /dev/null)
-+              if [ -n "$font" ]; then
-+                      verbose "Loading font $font"
-+                      busybox_applet loadfont
-+                      inst_d "/lib/kbd/consolefonts"
-+                      cp -a "$font" "$DESTDIR/lib/kbd/consolefonts/"
-+                      gunzip ${DESTDIR}/lib/kbd/consolefonts/${CONSOLEFONT}*.gz
-+                      font=${font%.gz}
-+                      echo "loadfont < $font" | add_linuxrc
-+              fi
-+      fi
-+}
-+
- # generate code to mount /proc on initrd
- # can be called multiple times
- mount_proc() {
-@@ -1478,6 +1497,7 @@ add_linuxrc <<EOF
- # on $(LC_ALL=C date)
+ # create dirs that we really need
+-inst_d /{lib,bin,etc,dev{,/pts,/shm},loopfs,var,proc,run,sys,tmp}
++inst_d /{lib,bin,sbin,etc,dev{,/pts,/shm},loopfs,var,proc,run,sys,tmp}
+ modules_install "$MODULES"
  
- EOF
-+load_font
- mount_proc
+diff --git a/mod-blkid.sh b/mod-blkid.sh
+index 8ee2a48..92df9ae 100644
+--- a/mod-blkid.sh
++++ b/mod-blkid.sh
+@@ -22,12 +22,12 @@ initrd_gen_blkid() {
+       fi
+       verbose "Adding BLKID support to initrd"
  
- kmsg "geninitrd/$VERSION starting"
+-      inst_exec $blkid /bin/blkid
++      inst_exec $blkid /sbin/blkid
+       initrd_gen_devices
+       add_linuxrc <<-'EOF'
+               # if built with blkid change ROOT=LABEL=something into ROOT=/dev/device parsed by blkid
+               if [ "${ROOT##LABEL=}" != "${ROOT}" -o "${ROOT##UUID=}" != "${ROOT}" ]; then
+-                      blkid="$(/bin/blkid -t $ROOT -o device -l)"
++                      blkid="$(/sbin/blkid -t $ROOT -o device -l)"
+                       if [ -n "$blkid" ]; then
+                               ROOT=$blkid
+                       fi
This page took 0.134538 seconds and 4 git commands to generate.