adding checksum files to git repos
[fsf-member-card-builder.git] / live-usb-loader.sh
1 #!/bin/bash
2 #
3 # Copyright (C) 2012-2020 Ruben Rodriguez <ruben@trisquel.info>
4 # Copyright (C) 2020 Andrew Engelbrecht <andrew@fsf.org>
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 #
20
21 set -e
22
23 usage(){
24 echo You need to run this script as root
25 echo Usage: sudo $0 distro.iso /dev/sdX
26 echo Example: sudo $0 foobar_5.0_i386.iso /dev/sdb
27 echo
28 echo WARNING!: this script will delete all data on the whole disk you pass as the second parameter. Make sure it is your USB drive and not your internal hard drive!
29 echo ANOTHER WARNING!: This script can bite your dog. Use it with care, backup your data.
30 exit 1
31 }
32
33 [ $(id -u) != 0 ] && usage
34 [ $# != 2 ] && usage
35
36 ISO=$1
37 DEV=$2
38 PERSISTENCESIZE=4096 # Size of the persistence file, in MB
39
40 ISOTMP=$(mktemp -d)
41 DEVTMP=$(mktemp -d)
42
43 umount $DEV* || true
44 mount -o loop $ISO $ISOTMP
45
46 # Create FAT32 LBA partition taking all disk
47 echo 'start=2048, type=c' | sfdisk $DEV
48 mkfs.vfat -I -F32 ${DEV}1 -n FSF-LIVE
49
50 # Copy the data
51 mount ${DEV}1 $DEVTMP
52 cp -vr $ISOTMP/* $ISOTMP/.disk $DEVTMP || true
53
54 cp -vr $DEVTMP/isolinux $DEVTMP/syslinux
55 mv $DEVTMP/syslinux/isolinux.cfg $DEVTMP/syslinux/syslinux.cfg
56
57 # Create persistency file
58 # dd if=/dev/zero of=$DEVTMP/casper-rw bs=1M count=$PERSISTENCESIZE oflag=sync status=progress
59 # mkfs.ext4 -L casper-rw -F $DEVTMP/casper-rw
60 # sed -i 's/noprompt --/noprompt persistent --/' $DEVTMP/syslinux/txt.cfg $DEVTMP/isolinux/txt.cfg
61
62 umount $DEVTMP
63 umount $ISOTMP
64
65 rmdir $DEVTMP
66 rmdir $ISOTMP
67
68 # Set up bootloader, requires syslinux 4x
69 # https://mirror.fsf.org/trisquel/pool/main/s/syslinux/syslinux-common_4.05+dfsg-6+deb8u1_all.deb
70 # https://mirror.fsf.org/trisquel/pool/main/s/syslinux/syslinux_4.05+dfsg-6+deb8u1_amd64.deb
71 syslinux ${DEV}1
72 dd conv=notrunc if=/usr/lib/syslinux/mbr.bin bs=440 count=1 of=$DEV
73 parted $DEV set 1 boot on
74
75 eject $DEV
76 sync
77