diff --git a/mxgrub/create_initramfs b/mxgrub/create_initramfs new file mode 100755 index 0000000..658b52e --- /dev/null +++ b/mxgrub/create_initramfs @@ -0,0 +1,41 @@ +#!/bin/sh + +set -x + +if [ -z "$1" ]; then + echo "You need to supply an initrd file name" + exit 1 +fi + +# Prepare microcode updates for AMD and Intel processors +DSTDIR=kernel/x86/microcode +INITRDNAME="$1" +INITRDPATH=/boot/grub/"$INITRDNAME".igz +INITRDDIR="$TMPDIR/$INITRDNAME" +mkdir -p "$INITRDDIR" +cd "$INITRDDIR" +mkdir -p "$DSTDIR" + +if [ -d /lib/firmware/amd-ucode ]; then + cat /lib/firmware/amd-ucode/microcode_amd*.bin > "$DSTDIR"/AuthenticAMD.bin +fi + +if [ -d /lib/firmware/intel-ucode ]; then + cat /lib/firmware/intel-ucode/* > "$DSTDIR"/GenuineIntel.bin +fi + +ls -ltr "$TMPDIR" +find . | cpio -o -H newc > "$TMPDIR"/ucode.cpio +ls -ltr "$TMPDIR" + +cd .. + +# Clean up +rm -rf "$INITRDDIR" + +cd /project/admin/initramfs +find .|cpio -H newc -o | gzip > "$TMPDIR/$INITRDNAME.igz" + +# +cat "$TMPDIR"/ucode.cpio "$TMPDIR/$INITRDNAME.igz" > /boot/grub/"$INITRDNAME.igz" +rm "$TMPDIR"/ucode.cpio "$TMPDIR"/"$INITRDNAME.igz" diff --git a/mxgrub/mxgrub b/mxgrub/mxgrub index 5c80f86..5fb288f 100755 --- a/mxgrub/mxgrub +++ b/mxgrub/mxgrub @@ -252,7 +252,7 @@ sub cmd_update { } sub cmd_initramfs { - sys('bash','-c','cd /project/admin/initramfs;find .|cpio -H newc -o | gzip > /boot/grub/initramfs.igz'); + sys('create_initramfs', 'initramfs'); } our ($opt_list,$opt_update,$opt_initramfs,$opt_test);