#!/bin/bash
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
#
|
|
# Filename: lib/misc/iso2stick.sh
|
|
# Copyright (C) 2008 The OpenSDE Project
|
|
# Copyright (C) 2006 The T2 SDE Project
|
|
#
|
|
# More information can be found in the files COPYING and README.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; version 2 of the License. A copy of the
|
|
# GNU General Public License can be found in the file COPYING.
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
set -e
|
|
|
|
usage()
|
|
{
|
|
echo "Usage iso2stick [ -fs file-system ] iso-image stick-device [ files ]"
|
|
exit
|
|
}
|
|
|
|
fs="vfat -F 32"
|
|
|
|
while [ "$1" ]; do
|
|
case "$1" in
|
|
-fs) fs="$2" ; shift ;;
|
|
-*) usage ;;
|
|
*) break ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "$1" -o -z "$2" ]; then
|
|
usage
|
|
fi
|
|
|
|
file="$1" ; shift
|
|
dev="$1" ; shift
|
|
|
|
# # ceate fresh image
|
|
# size=`du --block-size=1000000 $1 | cut -f 1`
|
|
# size=$(( size + 20 )) # just to be sure
|
|
#
|
|
# dd if=/dev/zero of=hd.img bs=1000000 count=$size
|
|
|
|
# loop=`losetup -f`
|
|
# losetup $loop hd.img
|
|
|
|
case "$fs" in
|
|
vfat*) ptype=b ;;
|
|
*) ptype=83 ;;
|
|
esac
|
|
|
|
sfdisk $dev << EOT
|
|
,,$ptype
|
|
EOT
|
|
|
|
# losetup -d $loop
|
|
|
|
mkfs.$fs ${dev}1
|
|
|
|
# losetup /dev/loop0 -o 512 hd.img
|
|
|
|
mkdir -p /mnt/source /mnt/target
|
|
mount -o loop $file /mnt/source
|
|
mount ${dev}1 /mnt/target
|
|
|
|
rsync -arvH --inplace --exclude TRANS.TBL /mnt/source/ /mnt/target/
|
|
# copy additional content specified in arguments
|
|
for x ; do
|
|
cp -arv $x /mnt/target/
|
|
done
|
|
|
|
sed -i 's/(cd)/(hd0,0)/g' /mnt/target/boot/grub/menu.lst
|
|
|
|
umount /mnt/source
|
|
umount /mnt/target
|
|
|
|
echo -e "(hd0) /dev/sda" > device.map
|
|
echo -e "root (hd0,0)\ninstall /boot/grub/stage1 (hd0) (hd0,0)/boot/grub/stage2 (hd0,0)/boot/grub/menu.lst\nquit" | grub --batch --device-map=./device.map
|
|
|
|
rm ./device.map
|
|
|