284 lines
4.5 KiB
HTML
284 lines
4.5 KiB
HTML
|
<HTML
|
||
|
><HEAD
|
||
|
><TITLE
|
||
|
>Clone script</TITLE
|
||
|
><META
|
||
|
NAME="GENERATOR"
|
||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||
|
"><LINK
|
||
|
REL="HOME"
|
||
|
TITLE="HOWTO Clone Disk Images on Linux Booted from a Network"
|
||
|
HREF="index.html"><LINK
|
||
|
REL="PREVIOUS"
|
||
|
TITLE="List of files on initrd"
|
||
|
HREF="initrdfiles.html"><LINK
|
||
|
REL="NEXT"
|
||
|
TITLE="References"
|
||
|
HREF="references.html"></HEAD
|
||
|
><BODY
|
||
|
CLASS="APPENDIX"
|
||
|
BGCOLOR="#FFFFFF"
|
||
|
TEXT="#000000"
|
||
|
LINK="#0000FF"
|
||
|
VLINK="#840084"
|
||
|
ALINK="#0000FF"
|
||
|
><DIV
|
||
|
CLASS="NAVHEADER"
|
||
|
><TABLE
|
||
|
SUMMARY="Header navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TH
|
||
|
COLSPAN="3"
|
||
|
ALIGN="center"
|
||
|
>HOWTO Clone Disk Images on Linux Booted from a Network</TH
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="initrdfiles.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="80%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="bottom"
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="references.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"></DIV
|
||
|
><DIV
|
||
|
CLASS="APPENDIX"
|
||
|
><H1
|
||
|
CLASS="APPENDIX"
|
||
|
><A
|
||
|
NAME="CLONESCRIPT">B. Clone script</H1
|
||
|
><TABLE
|
||
|
BORDER="0"
|
||
|
BGCOLOR="#E0E0E0"
|
||
|
WIDTH="100%"
|
||
|
><TR
|
||
|
><TD
|
||
|
><FONT
|
||
|
COLOR="#000000"
|
||
|
><PRE
|
||
|
CLASS="PROGRAMLISTING"
|
||
|
>#!/bin/bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
export PATH=/sbin:/bin
|
||
|
|
||
|
tftp_server=10.0.0.1
|
||
|
nic_module=3c59x.o
|
||
|
major_a=(2 3 22)
|
||
|
family_a=(fd hda hdc)
|
||
|
image_a=(img0001 img0002 img0003 img0004)
|
||
|
|
||
|
operation_a=( "Copy from network to device" \
|
||
|
"Copy from device to network" \
|
||
|
"Run fdisk")
|
||
|
|
||
|
mount -t proc proc /proc
|
||
|
insmod /lib/${nic_module}
|
||
|
/sbin/dhcpcd
|
||
|
|
||
|
while true; do \
|
||
|
[ ! -z "${image}" ] && unset image
|
||
|
echo
|
||
|
echo "Clone Menu"
|
||
|
echo
|
||
|
echo "Operation"
|
||
|
echo
|
||
|
PS3="Choose operation (1-${#operation_a[*]}): "
|
||
|
select operation in "${operation_a[@]}"; do \
|
||
|
[ -z "${operation}" ] && continue
|
||
|
echo
|
||
|
echo $REPLY - $operation
|
||
|
echo
|
||
|
break
|
||
|
done
|
||
|
|
||
|
echo "Device Family"
|
||
|
echo
|
||
|
PS3="Choose device family (1-${#family_a[*]}): "
|
||
|
select family in "${family_a[@]}"; do \
|
||
|
[ -z "${family}" ] && continue
|
||
|
echo
|
||
|
echo $REPLY - $family
|
||
|
echo
|
||
|
break
|
||
|
done
|
||
|
|
||
|
major_i=$[REPLY-1]
|
||
|
major=${major_a[$major_i]}
|
||
|
|
||
|
echo "Minor Number"
|
||
|
echo
|
||
|
PS3="Choose minor number (0-255): "
|
||
|
echo -n "$PS3" >&2
|
||
|
read minor
|
||
|
minor=$[minor%256]
|
||
|
echo
|
||
|
echo $minor
|
||
|
echo
|
||
|
|
||
|
if [ "${operation}" != "${operation_a[2]}" ]; then \
|
||
|
echo "Image"
|
||
|
echo
|
||
|
PS3="Choose image (1-${#image_a[*]}): "
|
||
|
select image in "${image_a[@]}"; do \
|
||
|
[ -z "${image}" ] && continue
|
||
|
echo
|
||
|
echo $REPLY - $image
|
||
|
echo
|
||
|
break
|
||
|
done
|
||
|
image_i=$[REPLY-1]
|
||
|
image=${image_a[${image_i}]}
|
||
|
fi
|
||
|
|
||
|
echo
|
||
|
echo -e "Operation:\t$operation"
|
||
|
device_name=/dev/${family_a[${major_i}]}${minor}
|
||
|
echo -e "Device:\t\t${device_name} ($major, $minor)"
|
||
|
[ ! -z "${image}" ] && echo -e "Image:\t\t${image}"
|
||
|
echo
|
||
|
|
||
|
echo "Confirmation"
|
||
|
echo
|
||
|
PS3="Ok/Cancel (1-2): "
|
||
|
select ok in Ok Cancel; do \
|
||
|
[ -z "${ok}" ] && continue
|
||
|
echo
|
||
|
echo $REPLY - $ok
|
||
|
echo
|
||
|
break
|
||
|
done
|
||
|
if [ "${ok}" = "Ok" ]; then \
|
||
|
if [ ! -b ${device_name} ]; then \
|
||
|
echo "Creating ${device_name}"
|
||
|
mknod ${device_name} b ${major} ${minor}
|
||
|
fi
|
||
|
if [ ! -z "${image}" ]; then \
|
||
|
if [ ! -p ${image} ]; then \
|
||
|
echo "Creating pipe"
|
||
|
mknod ${image} p
|
||
|
fi
|
||
|
fi
|
||
|
if [ "${operation}" = "${operation_a[0]}" ]; then \
|
||
|
tftp ${tftp_server} <<-EOT &
|
||
|
binary
|
||
|
get ${image}
|
||
|
EOT
|
||
|
gzip -c -d < ${image} | dd of=${device_name}
|
||
|
elif [ "${operation}" = "${operation_a[1]}" ]; then \
|
||
|
tftp ${tftp_server} <<-EOT &
|
||
|
binary
|
||
|
put ${image}
|
||
|
EOT
|
||
|
dd if=${device_name} | gzip -c > ${image}
|
||
|
elif [ "${operation}" = "${operation_a[2]}" ]; then \
|
||
|
fdisk ${device_name}
|
||
|
fi
|
||
|
echo
|
||
|
fi
|
||
|
|
||
|
echo "Continuation"
|
||
|
echo
|
||
|
PS3="Continue/Exit (1-2): "
|
||
|
select new in Continue Exit; do \
|
||
|
[ -z "${new}" ] && continue
|
||
|
echo
|
||
|
echo $REPLY - $new
|
||
|
echo
|
||
|
break
|
||
|
done
|
||
|
[ "${new}" = "Exit" ] && break
|
||
|
done
|
||
|
exit 0
|
||
|
</PRE
|
||
|
></FONT
|
||
|
></TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="NAVFOOTER"
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"><TABLE
|
||
|
SUMMARY="Footer navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="initrdfiles.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
ACCESSKEY="H"
|
||
|
>Home</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="references.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
>List of files on initrd</TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
> </TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
>References</TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
></DIV
|
||
|
></BODY
|
||
|
></HTML
|
||
|
>
|