fix broken repo
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
for i in mksquashfs cpio gzip sed grep xorriso tar file; do
|
||||
if [ ! -x "$(command -v ${i})" ]; then
|
||||
case ${i} in
|
||||
mksquashfs) a="squashfs-tools";;
|
||||
readelf) a="binutils";;
|
||||
*) a="${i}"
|
||||
esac
|
||||
echo "Please install ${a} package to run this tool"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
exec > >(tee -i /tmp/mlb.log) 2>&1
|
||||
cd "$(dirname $(readlink -f ${0}))" || exit 1
|
||||
cp -f config .config
|
||||
|
||||
mapfile -t list < <(ls -A /boot | egrep "^bzImage*|*kernel*|^vmlinuz*" 2>/dev/null | grep -v "init")
|
||||
if [ ${#list[@]} -gt 1 ]; then
|
||||
n=0
|
||||
echo -e "Please choose your kernel to proceed:\nChoose number from ${n} to ${#list[@]}\n-----\n"
|
||||
for a in "${list[@]}"; do
|
||||
echo "[${n}] - ${a}"
|
||||
((n++))
|
||||
done
|
||||
echo "-----"
|
||||
read kernel
|
||||
kernel="/boot/${list[${kernel}]}"
|
||||
unset list n
|
||||
else
|
||||
kernel="/boot/${list[0]}"
|
||||
fi
|
||||
set -x
|
||||
time (
|
||||
echo "KERNEL=\"${kernel}\"" >>.config
|
||||
echo "LMK=\"/lib/modules/$(file -bL ${kernel} | grep -o 'version .*' | cut -d' ' -f2)\"" >>.config
|
||||
unset kernel
|
||||
top="$(pwd)"
|
||||
. .config
|
||||
workTmpDir="$(mktemp -d /tmp/Mlb_WorkDir_XXXXXXX)"
|
||||
DATA="${workTmpDir}/isoImage"
|
||||
INITRD="$(initrd/create)"
|
||||
ret="${?}"
|
||||
tmpRoot="${workTmpDir}/tmpRoot"
|
||||
trap "rm -rf ${workTmpDir} /tmp/MlbInitRd{,.img}&&exit 1" 2 6 15
|
||||
mkdir -p ${DATA}/changes ${DATA}/${DISTRO}/modules
|
||||
rsync --force -aAP $(for i in $(awk '{print $2}' /proc/mounts) /tmp; do echo "--exclude=${i}/*"; done) / ${tmpRoot}
|
||||
chmod +x -R inc2sys
|
||||
cp -rf inc2sys/* ${tmpRoot}
|
||||
mknod ${tmpRoot}/dev/console c 5 1
|
||||
mknod ${tmpRoot}/dev/null c 1 3
|
||||
mknod ${tmpRoot}/dev/ram0 b 1 0
|
||||
mknod ${tmpRoot}/dev/tty1 c 4 1
|
||||
mknod ${tmpRoot}/dev/tty2 c 4 2
|
||||
mknod ${tmpRoot}/dev/tty3 c 4 3
|
||||
mknod ${tmpRoot}/dev/tty4 c 4 4
|
||||
for i in zstd xz lzma bzip2 gzip; do
|
||||
mksquashfs ${tmpRoot} ${DATA}/${DISTRO}/system.sfs -comp ${i} -noappend
|
||||
[ -e ${DATA}/${DISTRO}/system.sfs ]&&break
|
||||
done
|
||||
mv -f ${INITRD} ${DATA}/initrd.img
|
||||
cp -rf bootfiles/* ${DATA}
|
||||
mv -f ${tmpRoot}/tmp/grub_efi.img ${DATA}/efi.img
|
||||
for i in ${DATA}/syslinux.cfg ${DATA}/boot/grub/grub.cfg; do
|
||||
sed -i -r "s/__DISTRO__/${DISTRO}/" ${i}
|
||||
done
|
||||
cp -f ${KERNEL} ${DATA}/vmlinuz
|
||||
cd ${DATA}
|
||||
utc="$(date +%s)"
|
||||
v="$(git rev-parse HEAD 2>/dev/null)"&&v="${v}:GIT"||v="INFINITY:LOCAL"
|
||||
cat <<eot >.MlbMeta
|
||||
# Built using Minimal-Linux-Booter.
|
||||
MLB_VERSION="${v}"
|
||||
MLB_NAME="${DISTRO}"
|
||||
MLB_UTC="${utc}"
|
||||
eot
|
||||
[[ ${ret} = 2 ]]&&echo "MLB_ELF_STATIC_INITRD=\"1\"" >>.MlbMeta||echo "MLB_ELF_STATIC_INITRD=\"0\"" >>.MlbMeta
|
||||
xorriso -as mkisofs -o /${DISTRO}-${utc}.iso -J -R -D -A ${DISTRO} -V ${DISTRO} -no-emul-boot -boot-info-table -boot-load-size 4 -b isolinux.bin -c isolinux.boot -eltorito-alt-boot -e /efi.img -no-emul-boot .
|
||||
isohybrid --version >/dev/null 2>&1&&isohybrid -u /${DISTRO}-${utc}.iso
|
||||
cd ${top}
|
||||
rm -rf ${workTmpDir}
|
||||
)
|
||||
Reference in New Issue
Block a user