diff --git a/mxgrub/create_initramfs b/mxgrub/create_initramfs new file mode 100644 index 0000000..4a761e0 --- /dev/null +++ b/mxgrub/create_initramfs @@ -0,0 +1,37 @@ +#!/bin/sh + +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 "$DSDDIR" + +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 + +find . | cpio -o -H newc > "$TMPDIR"/ucode.cpio + +cd .. + +# Clean up +rm -rf "$INITRDDIR" + +cd /project/admin/initramfs +find .|cpio -H newc -o | gzip > "$TMPDIR"/"$INITRDNAME" + +# +cat ucode.cpio $INITRDNAME > /boot/grub/"$INITRDNAME" +rm "$TMPDIR"/ucode.cpio "$TMPDIR"/"$INITRDNAME" diff --git a/mxgrub/mxgrub b/mxgrub/mxgrub index 5c80f86..c991e0f 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('/project/mxtools/mxgrub/create_initramfs', 'initramfs'); } our ($opt_list,$opt_update,$opt_initramfs,$opt_test);