galeb

Једноставна статичка дистрибуција заснована на musl-у
git clone https://git.sr.ht/~strahinja/galeb
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

05-mkbootimage.sh (2058B)


      1 #!/bin/sh
      2 
      3 if [ ! -e ./lib/env.sh ] || [ ! -e ./lib/fun.sh ]; then
      4 	printf "Nonexistant lib/env.sh or lib/fun.sh!\n" >&2
      5 	exit 1
      6 fi
      7 
      8 . ./lib/env.sh
      9 . ./lib/fun.sh
     10 
     11 # Max threads for xz (compression)
     12 # To use max recommended value, uncomment next line and comment the one after:
     13 #T=$(echo $JN | sed 's,[^0-9]*\([0-9]\+\)[^0-9]*,\1,g')
     14 T=2
     15 
     16 if [ "$(id -u)" -ne 0 ]; then
     17 	msg err "You must run this script as root"
     18 	exit 1
     19 fi
     20 
     21 (
     22 ver=${G_VER}
     23 arch=x86_64
     24 timestamp=$(date +'%Y%m%d')
     25 diskimg=galeb-${ver}-${arch}-${timestamp}.raw
     26 
     27 rm "${diskimg}"
     28 
     29 truncate -s $(echo '(35 * 1024 * 1024 * 1024)/10' | bc) "${diskimg}" || exit 1
     30 
     31 printf "g\nn\n\n\n+500M\nt\n1\nn\n\n\n\nx\nn\n1\nGALBOOT\n"\
     32 "n\n2\nGalRoot\nr\nw\n" | fdisk "${diskimg}" || exit 1
     33 
     34 losetup -P -f "${diskimg}" || exit 1
     35 
     36 mkfs.ext4 -L GalRoot /dev/loop0p2 || exit 1
     37 mkfs.vfat -F 32 -n GALBOOT /dev/loop0p1 || exit 1
     38 
     39 mount -t ext4 /dev/loop0p2 /mnt || exit 1
     40 mkdir -p /mnt/boot || exit 1
     41 mount -t vfat /dev/loop0p1 /mnt/boot || exit 1
     42 
     43 BPUUID=$(lsblk -no PARTUUID /dev/loop0p1)
     44 RPUUID=$(lsblk -no PARTUUID /dev/loop0p2)
     45 
     46 msg info "Generating %s" "${GR}/etc/fstab"
     47 cat <<! >${GR}/etc/fstab
     48 PARTUUID=${RPUUID}	/	ext4	rw,relatime						0	1
     49 PARTUUID=${BPUUID}	/boot	vfat	rw,relatime,fmask=0133,dmask=0022,errors=remount-ro	0	2
     50 !
     51 
     52 msg info "Generating %s" "${GR}/boot/EFI/GALEB/BOOT.CSV"
     53 cat <<! >${GR}/boot/EFI/GALEB/BOOT-ASC.CSV
     54 vmlinuz,Galeb USB,initrd=\initramfs.img root=PARTUUID=${RPUUID} rw rootdelay=5,Boot entry for Galeb USB
     55 !
     56 
     57 iconv -f ASCII -t UCS-2LE <${GR}/boot/EFI/GALEB/BOOT-ASC.CSV \
     58 	>${GR}/boot/EFI/GALEB/BOOT.CSV
     59 
     60 msg info "Copying files"
     61 rsync -arv --numeric-ids \
     62 	--exclude='/cross-tools' \
     63 	--exclude='/src/*' \
     64 	--exclude='/tools' \
     65 	--exclude='/var/log/galeb' \
     66 	${GR}/* /mnt/ || exit 1
     67 
     68 msg info "Umounting /mnt"
     69 umount /mnt/boot || exit 1
     70 umount /mnt || exit 1
     71 
     72 e2fsck -p /dev/loop0p2 || exit 1
     73 fsck.fat -p /dev/loop0p1 || exit 1
     74 
     75 losetup -d /dev/loop0 || exit 1
     76 xz -T$T -9vvf "${diskimg}" || exit 1
     77 chown ${GUSER}:${GUSER} "${diskimg}".xz
     78 ) || msg err "Image generation failed"