Hex Artifact Content

Artifact 7557bdba838ab97b9198ef7a3697d3ff75782a61:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 62 61 73 68 0a 0a 73 65 74 20 2d 65 0a 0a 23 20  bash..set -e..# 
0020: 4e 6f 74 20 69 6e 63 6c 75 64 65 64 3a 0a 23 20  Not included:.# 
0030: 20 31 2e 20 44 6f 77 6e 6c 6f 61 64 69 6e 67 20   1. Downloading 
0040: 68 75 67 65 2e 73 20 66 72 6f 6d 20 53 6c 61 63  huge.s from Slac
0050: 6b 77 61 72 65 36 34 20 6b 65 72 6e 65 6c 73 20  kware64 kernels 
0060: 28 69 6e 74 6f 20 62 6f 6f 74 2f 29 0a 23 20 20  (into boot/).#  
0070: 32 2e 20 44 6f 77 6e 6c 6f 61 64 69 6e 67 20 6b  2. Downloading k
0080: 65 72 6e 65 6c 20 6d 6f 64 75 6c 65 73 20 70 61  ernel modules pa
0090: 63 6b 61 67 65 20 66 72 6f 6d 20 53 6c 61 63 6b  ckage from Slack
00a0: 77 61 72 65 36 34 20 28 69 6e 74 6f 20 72 6f 6f  ware64 (into roo
00b0: 74 2f 29 0a 23 20 20 33 2e 20 52 75 6e 6e 69 6e  t/).#  3. Runnin
00c0: 67 20 22 64 65 70 6d 6f 64 22 20 77 69 74 68 69  g "depmod" withi
00d0: 6e 20 74 68 65 20 63 68 72 6f 6f 74 20 72 6f 6f  n the chroot roo
00e0: 74 2f 0a 23 20 20 34 2e 20 44 6f 77 6e 6c 6f 61  t/.#  4. Downloa
00f0: 64 69 6e 67 20 61 20 73 74 61 74 69 63 20 54 63  ding a static Tc
0100: 6c 6b 69 74 20 77 69 74 68 20 54 55 41 50 49 0a  lkit with TUAPI.
0110: 23 20 20 35 2e 20 44 6f 77 6e 6c 6f 61 64 69 6e  #  5. Downloadin
0120: 67 20 61 20 73 74 61 74 69 63 20 41 70 70 46 53  g a static AppFS
0130: 0a 0a 69 6d 61 67 65 5f 66 69 6c 65 3d 22 24 28  ..image_file="$(
0140: 70 77 64 29 2f 61 70 70 66 73 2e 69 6d 67 22 0a  pwd)/appfs.img".
0150: 6f 6c 64 5f 6c 6f 6f 70 5f 64 65 76 3d 22 24 28  old_loop_dev="$(
0160: 6c 6f 73 65 74 75 70 20 2d 2d 6e 6f 68 65 61 64  losetup --nohead
0170: 69 6e 67 73 20 2d 2d 6f 75 74 70 75 74 20 6e 61  ings --output na
0180: 6d 65 20 2d 2d 61 73 73 6f 63 69 61 74 65 64 20  me --associated 
0190: 22 24 7b 69 6d 61 67 65 5f 66 69 6c 65 7d 22 29  "${image_file}")
01a0: 22 20 7c 7c 20 6f 6c 64 5f 6c 6f 6f 70 5f 64 65  " || old_loop_de
01b0: 76 3d 27 27 0a 65 78 74 6c 69 6e 75 78 5f 6d 62  v=''.extlinux_mb
01c0: 72 5f 62 69 6e 3d 27 2f 75 73 72 2f 6c 69 62 2f  r_bin='/usr/lib/
01d0: 45 58 54 4c 49 4e 55 58 2f 6d 62 72 2e 62 69 6e  EXTLINUX/mbr.bin
01e0: 27 0a 0a 6d 61 6b 65 20 69 6e 69 74 20 4c 44 46  '..make init LDF
01f0: 4c 41 47 53 3d 2d 73 74 61 74 69 63 0a 63 70 20  LAGS=-static.cp 
0200: 69 6e 69 74 20 72 6f 6f 74 2f 62 69 6e 0a 0a 72  init root/bin..r
0210: 6d 20 2d 66 20 62 6f 6f 74 2f 69 6e 69 74 72 64  m -f boot/initrd
0220: 0a 28 0a 09 63 64 20 72 6f 6f 74 20 7c 7c 20 65  .(..cd root || e
0230: 78 69 74 20 31 0a 09 66 69 6e 64 20 2e 20 21 20  xit 1..find . ! 
0240: 2d 6e 61 6d 65 20 27 2e 27 20 2d 70 72 69 6e 74  -name '.' -print
0250: 30 20 7c 20 73 6f 72 74 20 2d 2d 7a 65 72 6f 2d  0 | sort --zero-
0260: 74 65 72 6d 69 6e 61 74 65 64 20 2d 2d 64 69 63  terminated --dic
0270: 74 69 6f 6e 61 72 79 2d 6f 72 64 65 72 20 7c 20  tionary-order | 
0280: 63 70 69 6f 20 2d 6f 20 2d 30 20 2d 2d 6f 77 6e  cpio -o -0 --own
0290: 65 72 20 30 3a 30 20 2d 2d 64 6f 74 20 2d 48 20  er 0:0 --dot -H 
02a0: 6e 65 77 63 0a 29 20 7c 20 67 7a 69 70 20 2d 31  newc.) | gzip -1
02b0: 63 20 3e 20 62 6f 6f 74 2f 69 6e 69 74 72 64 0a  c > boot/initrd.
02c0: 0a 72 6d 20 2d 66 20 22 24 7b 69 6d 61 67 65 5f  .rm -f "${image_
02d0: 66 69 6c 65 7d 22 0a 74 72 75 6e 63 61 74 65 20  file}".truncate 
02e0: 2d 2d 73 69 7a 65 20 31 30 32 34 4d 20 22 24 7b  --size 1024M "${
02f0: 69 6d 61 67 65 5f 66 69 6c 65 7d 22 0a 73 66 64  image_file}".sfd
0300: 69 73 6b 20 2d 2d 6e 6f 2d 74 65 6c 6c 2d 6b 65  isk --no-tell-ke
0310: 72 6e 65 6c 20 2d 2d 6e 6f 2d 72 65 72 65 61 64  rnel --no-reread
0320: 20 22 24 7b 69 6d 61 67 65 5f 66 69 6c 65 7d 22   "${image_file}"
0330: 20 3c 3c 3c 27 6c 61 62 65 6c 3a 20 64 6f 73 0a   <<<'label: dos.
0340: 73 69 7a 65 3d 31 32 38 4d 20 74 79 70 65 3d 38  size=128M type=8
0350: 33 20 62 6f 6f 74 61 62 6c 65 0a 74 79 70 65 3d  3 bootable.type=
0360: 38 33 27 0a 0a 69 66 20 5b 20 2d 64 20 27 78 2d  83'..if [ -d 'x-
0370: 62 6f 6f 74 27 20 5d 3b 20 74 68 65 6e 0a 09 73  boot' ]; then..s
0380: 75 64 6f 20 75 6d 6f 75 6e 74 20 78 2d 62 6f 6f  udo umount x-boo
0390: 74 20 7c 7c 20 3a 0a 66 69 0a 69 66 20 5b 20 2d  t || :.fi.if [ -
03a0: 6e 20 22 24 7b 6f 6c 64 5f 6c 6f 6f 70 5f 64 65  n "${old_loop_de
03b0: 76 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 73 75 64  v}" ]; then..sud
03c0: 6f 20 6c 6f 73 65 74 75 70 20 2d 64 20 22 24 7b  o losetup -d "${
03d0: 6f 6c 64 5f 6c 6f 6f 70 5f 64 65 76 7d 22 20 7c  old_loop_dev}" |
03e0: 7c 20 3a 0a 66 69 0a 73 75 64 6f 20 6c 6f 73 65  | :.fi.sudo lose
03f0: 74 75 70 20 2d 2d 70 61 72 74 73 63 61 6e 20 2d  tup --partscan -
0400: 2d 66 69 6e 64 20 22 24 7b 69 6d 61 67 65 5f 66  -find "${image_f
0410: 69 6c 65 7d 22 0a 6c 6f 6f 70 5f 64 65 76 3d 22  ile}".loop_dev="
0420: 24 28 6c 6f 73 65 74 75 70 20 2d 2d 6e 6f 68 65  $(losetup --nohe
0430: 61 64 69 6e 67 73 20 2d 2d 6f 75 74 70 75 74 20  adings --output 
0440: 6e 61 6d 65 20 2d 2d 61 73 73 6f 63 69 61 74 65  name --associate
0450: 64 20 22 24 7b 69 6d 61 67 65 5f 66 69 6c 65 7d  d "${image_file}
0460: 22 29 22 0a 69 66 20 5b 20 2d 7a 20 22 24 7b 6c  ")".if [ -z "${l
0470: 6f 6f 70 5f 64 65 76 7d 22 20 5d 3b 20 74 68 65  oop_dev}" ]; the
0480: 6e 0a 09 65 63 68 6f 20 22 4e 6f 20 6c 6f 6f 70  n..echo "No loop
0490: 20 64 65 76 69 63 65 20 66 6f 75 6e 64 22 20 3e   device found" >
04a0: 26 32 0a 09 65 78 69 74 20 31 0a 66 69 0a 73 75  &2..exit 1.fi.su
04b0: 64 6f 20 63 68 6f 77 6e 20 22 24 28 69 64 20 2d  do chown "$(id -
04c0: 75 29 3a 24 28 69 64 20 2d 67 29 22 20 22 24 7b  u):$(id -g)" "${
04d0: 6c 6f 6f 70 5f 64 65 76 7d 22 20 22 24 7b 6c 6f  loop_dev}" "${lo
04e0: 6f 70 5f 64 65 76 7d 70 31 22 20 22 24 7b 6c 6f  op_dev}p1" "${lo
04f0: 6f 70 5f 64 65 76 7d 70 32 22 0a 0a 6d 6b 65 32  op_dev}p2"..mke2
0500: 66 73 20 5c 0a 20 20 2d 4c 20 27 42 4f 4f 54 27  fs \.  -L 'BOOT'
0510: 20 5c 0a 20 20 2d 4e 20 30 20 5c 0a 20 20 2d 4f   \.  -N 0 \.  -O
0520: 20 5e 36 34 62 69 74 20 5c 0a 20 20 2d 64 20 62   ^64bit \.  -d b
0530: 6f 6f 74 20 5c 0a 20 20 2d 6d 20 35 20 5c 0a 20  oot \.  -m 5 \. 
0540: 20 2d 72 20 31 20 5c 0a 20 20 2d 74 20 65 78 74   -r 1 \.  -t ext
0550: 34 20 5c 0a 20 20 22 24 7b 6c 6f 6f 70 5f 64 65  4 \.  "${loop_de
0560: 76 7d 70 31 22 0a 0a 6d 6b 65 32 66 73 20 5c 0a  v}p1"..mke2fs \.
0570: 20 20 2d 4c 20 27 44 41 54 41 27 20 5c 0a 20 20    -L 'DATA' \.  
0580: 2d 4e 20 30 20 5c 0a 20 20 2d 4f 20 5e 36 34 62  -N 0 \.  -O ^64b
0590: 69 74 20 5c 0a 20 20 2d 6d 20 35 20 5c 0a 20 20  it \.  -m 5 \.  
05a0: 2d 72 20 31 20 5c 0a 20 20 2d 74 20 65 78 74 34  -r 1 \.  -t ext4
05b0: 20 5c 0a 20 20 22 24 7b 6c 6f 6f 70 5f 64 65 76   \.  "${loop_dev
05c0: 7d 70 32 22 0a 0a 6d 6b 64 69 72 20 78 2d 62 6f  }p2"..mkdir x-bo
05d0: 6f 74 20 7c 7c 20 3a 0a 73 75 64 6f 20 6d 6f 75  ot || :.sudo mou
05e0: 6e 74 20 22 24 7b 6c 6f 6f 70 5f 64 65 76 7d 70  nt "${loop_dev}p
05f0: 31 22 20 78 2d 62 6f 6f 74 0a 73 75 64 6f 20 65  1" x-boot.sudo e
0600: 78 74 6c 69 6e 75 78 20 2d 2d 69 6e 73 74 61 6c  xtlinux --instal
0610: 6c 20 24 28 70 77 64 29 2f 78 2d 62 6f 6f 74 0a  l $(pwd)/x-boot.
0620: 73 75 64 6f 20 75 6d 6f 75 6e 74 20 78 2d 62 6f  sudo umount x-bo
0630: 6f 74 0a 64 64 20 69 66 3d 22 24 7b 65 78 74 6c  ot.dd if="${extl
0640: 69 6e 75 78 5f 6d 62 72 5f 62 69 6e 7d 22 20 6f  inux_mbr_bin}" o
0650: 66 3d 22 24 7b 69 6d 61 67 65 5f 66 69 6c 65 7d  f="${image_file}
0660: 22 20 63 6f 6e 76 3d 6e 6f 74 72 75 6e 63 0a 72  " conv=notrunc.r
0670: 6d 64 69 72 20 78 2d 62 6f 6f 74 0a 0a 6c 6f 73  mdir x-boot..los
0680: 65 74 75 70 20 2d 64 20 22 24 7b 6c 6f 6f 70 5f  etup -d "${loop_
0690: 64 65 76 7d 22 0a 0a 65 78 69 74 20 30 0a        dev}"..exit 0.