LANGUAGES = $(shell cd manpages/po && ls)
-SCRIPTS = bin/* initramfs-tools/hooks/* initramfs-tools/scripts/live initramfs-tools/scripts/*/* scripts/*.sh scripts/*/*
+SCRIPTS = bin/* backends/initramfs-tools/* scripts/*.sh scripts/*/*
all: build
cp bin/live-new-uuid bin/live-snapshot bin/live-swapfile $(DESTDIR)/sbin
mkdir -p $(DESTDIR)/usr/share/live-boot
- cp bin/live-preseed bin/live-reconfigure local/languagelist $(DESTDIR)/usr/share/live-boot
+ cp bin/live-preseed bin/live-reconfigure $(DESTDIR)/usr/share/live-boot
- mkdir -p $(DESTDIR)/usr/share/initramfs-tools
- cp -r initramfs-tools/* $(DESTDIR)/usr/share/initramfs-tools
+ mkdir -p $(DESTDIR)/usr/share/initramfs-tools/hooks
+ cp backends/initramfs-tools/live.hook $(DESTDIR)/usr/share/initramfs-tools/hooks/live
+ mkdir -p $(DESTDIR)/usr/share/initramfs-tools/scripts
+ cp backends/initramfs-tools/live.script $(DESTDIR)/usr/share/initramfs-tools/scripts/live
# Installing docs
mkdir -p $(DESTDIR)/usr/share/doc/live-boot
rm -rf $(DESTDIR)/usr/share/live-boot
rm -f $(DESTDIR)/usr/share/initramfs-tools/hooks/live
- rm -rf $(DESTDIR)/usr/share/initramfs-tools/scripts/live*
- rm -f $(DESTDIR)/usr/share/initramfs-tools/scripts/local-top/live
+ rm -f $(DESTDIR)/usr/share/initramfs-tools/scripts/live
rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools/hooks > /dev/null 2>&1 || true
- rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools/scripts/local-top > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools/scripts > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
mkdir -p "${DESTDIR}/lib/live"
cp -a /lib/live/boot.sh /lib/live/boot "${DESTDIR}/lib/live"
-# Configuration
-if [ -e /usr/share/live-boot/languagelist ]
-then
- mkdir -p "${DESTDIR}"/usr/share/live-boot
- cp /usr/share/live-boot/languagelist "${DESTDIR}"/usr/share/live-boot
-fi
-
# Directories
mkdir -p "${DESTDIR}"/lib/live-boot
fi
[ "${QUIET}" ] || echo -n " "utils
-# Program: md5sum
+
+# Feature: Verify Checksums
+copy_exec /usr/bin/sha256sum /bin
copy_exec /usr/bin/md5sum /bin
# Program: memdisk
FOUND=""
if [ -n "${ROOTSNAP}" ]; then
"${EXECUTABLE}" --resync-string="${ROOTSNAP}"
- FOUND="Yes"
+ FOUND="true"
fi
if [ -n "${HOMESNAP}" ]; then
"${EXECUTABLE}" --resync-string="${HOMESNAP}"
- FOUND="Yes"
+ FOUND="true"
fi
if [ -z "${FOUND}" ]
+++ /dev/null
-#!/bin/sh
-
-# Persistence enhancer script
-# This script saves precious time on slow persistence devices/image files
-# and writes on flash based device.
-# a tmpfs on $PERSTMP is mounted and directories listed in
-# /etc/live-persistence.binds will be copied there and then bind mounted back.
-
-#set -e
-
-# initramfs-tools header
-
-PREREQ=""
-
-prereqs()
-{
- echo "${PREREQ}"
-}
-
-case "${1}" in
- prereqs)
- prereqs
- exit 0
- ;;
-esac
-
-# live-boot header
-
-if [ -z "${PERSISTENCE}" ] || [ -n "${NOPERSISTENCE}" ] || [ -z "${PERSISTENCE_IS_ON}" ] || [ ! -f /root/etc/live-persistence.binds ]
-then
- exit 0
-fi
-
-# FIXME: stop hardcoding overloading of initramfs-tools functions
-. /scripts/functions
-. /lib/live/boot/initramfs-tools.sh
-
-# live-boot script
-
-dirs="$(sed -e '/^ *$/d' -e '/^#.*$/d' /root/etc/live-persistence.binds | tr '\n' '\0')"
-if [ -z "${dirs}" ]
-then
- exit 0
-fi
-
-log_begin_msg "Moving persistence bind mounts"
-
-PERSTMP="/root/live/persistence-binds"
-CPIO="/bin/cpio"
-
-if [ ! -d "${PERSTMP}" ]
-then
- mkdir -p "${PERSTMP}"
-fi
-
-mount -t tmpfs tmpfs "${PERSTMP}"
-
-for dir in $(echo "${dirs}" | tr '\0' '\n')
-do
- if [ ! -e "/root/${dir}" ] && [ ! -L "/root/${dir}" ]
- then
- # directory do not exists, create it
- mkdir -p "/root/${dir}"
- elif [ ! -d "/root/${dir}" ]
- then
- # it is not a directory, skip it
- break
- fi
-
- # Copy previous content if any
- cd "/root/${dir}"
- find . -print0 | ${CPIO} -pumd0 "${PERSTMP}/${dir}"
- cd "${OLDPWD}"
-
- # Bind mount it to origin
- mount -o bind "${PERSTMP}/${dir}" "/root/${dir}"
-done
-
-log_end_msg
+++ /dev/null
-#!/bin/sh
-
-# Error out in case a "wrong" file system was chosen.
-
-#set -e
-
-# initramfs-tools header
-
-PREREQ=""
-
-prereqs()
-{
- echo "${PREREQ}"
-}
-
-case "${1}" in
- prereqs)
- prereqs
- exit 0
- ;;
-esac
-
-# FIXME: stop hardcoding overloading of initramfs-tools functions
-. /scripts/functions
-. /lib/live/boot/initramfs-tools.sh
-
-if ! [ -d "/root/usr/share/live-boot" ]
-then
- panic "A wrong rootfs was mounted."
-fi
+++ /dev/null
-#!/bin/sh
-
-#set -e
-
-# initramfs-tools header
-
-PREREQ=""
-FSTAB=/root/etc/fstab
-
-prereqs()
-{
- echo "${PREREQ}"
-}
-
-case "${1}" in
- prereqs)
- prereqs
- exit 0
- ;;
-esac
-
-# live-boot header
-
-# FIXME: stop hardcoding overloading of initramfs-tools functions
-. /scripts/functions
-. /lib/live/boot/initramfs-tools.sh
-
-if [ -n "${NOFSTAB}" ]
-then
- exit 0
-fi
-
-log_begin_msg "Configuring fstab"
-
-# live-boot script
-
-if ! grep -qs "^${UNIONTYPE}" "${FSTAB}"
-then
- echo "${UNIONTYPE} / ${UNIONTYPE} rw 0 0" >> "${FSTAB}"
-fi
-
-if ! grep -qs "^tmpfs /tmp" "${FSTAB}"
-then
- echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> "${FSTAB}"
-fi
-
-if [ -n "${SWAPON}" ]
-then
- devices=""
-
- for device in /dev/[hs]d[a-z][0-9]*
- do
- if ! [ -b "${device}" ]
- then
- continue
- fi
-
- /sbin/blkid -o udev -p ${device%%[0-9]*} | grep -q "^ID_FS_USAGE=raid" && continue
-
- magic=$(/bin/dd if="${device}" bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null) || continue
-
- if [ "${magic}" = "SWAPSPACE2" -o "${magic}" = "SWAP-SPACE" ]
- then
- #log "Found ${device}"
- devices="${devices} ${device}"
- fi
- done
-
- # Remove all auto swap entries
- if grep -qs "swap swap" "${FSTAB}"
- then
- grep -v "swap swap" "${FSTAB}" > "${FSTAB}".tmp
- mv "${FSTAB}".tmp "${FSTAB}"
- fi
-
- # Add new swap entries
- for device in ${devices}
- do
- echo "${device} swap swap defaults 0 0" >> "${FSTAB}"
- done
-fi
-
-# disabled for now
-#rm -f /root/etc/rcS.d/S*checkroot.sh
-
-if [ "${NOFASTBOOT}" != "Yes" ]
-then
- touch root/fastboot
-fi
-
-log_end_msg
+++ /dev/null
-#!/bin/sh
-
-#set -e
-
-# initramfs-tools header
-
-PREREQ=""
-
-prereqs()
-{
- echo "${PREREQ}"
-}
-
-case "${1}" in
- prereqs)
- prereqs
- exit 0
- ;;
-esac
-
-# live-boot header
-
-if [ -n "${NONETWORKING}" ]
-then
- exit 0
-fi
-
-# FIXME: stop hardcoding overloading of initramfs-tools functions
-. /scripts/functions
-. /lib/live/boot/initramfs-tools.sh
-
-log_begin_msg "Preconfiguring networking"
-
-# live-boot script
-
-IFFILE="/root/etc/network/interfaces"
-
-if [ "${STATICIP}" = "frommedia" -a -e "${IFFILE}" ]
-then
- # will use existent /etc/network/interfaces
- log_end_msg
- exit 0
-fi
-
-cat > "${IFFILE}" << EOF
-auto lo
-iface lo inet loopback
-
-EOF
-
-udevadm trigger
-udevadm settle
-
-if [ -z "${NETBOOT}" -a -n "${STATICIP}" -a "${STATICIP}" != "frommedia" ]
-then
- parsed=$(echo "${STATICIP}" | sed -e 's/,/ /g')
-
- for ifline in ${parsed}
- do
- ifname="$(echo ${ifline} | cut -f1 -d ':')"
- ifaddress="$(echo ${ifline} | cut -f2 -d ':')"
- ifnetmask="$(echo ${ifline} | cut -f3 -d ':')"
- ifgateway="$(echo ${ifline} | cut -f4 -d ':')"
-
-cat >> "${IFFILE}" << EOF
-allow-hotplug ${ifname}
-iface ${ifname} inet static
- address ${ifaddress}
- netmask ${ifnetmask}
-EOF
-
-if [ -n "${ifgateway}" ]
-then
-
-cat >> "${IFFILE}" << EOF
- gateway ${ifgateway}
-
-EOF
-
-fi
-
- done
-else
- if [ -z "${NETBOOT}" ] || [ -n "${DHCP}" ]
- then
- # default, dhcp assigned
- method="dhcp"
- else
- # make sure that the preconfigured interface would not get reassigned by dhcp
- # on startup by ifup script - otherwise our root fs might be disconnected!
- method="manual"
- fi
-
- # iterate the physical interfaces and add them to the interfaces list and also add when ethdevice= called on cmdline
- if [ "${method}" != dhcp ] || ([ ! -x /root/usr/sbin/NetworkManager ] && [ ! -x /root/usr/sbin/wicd ]) || [ ! -z "${ETHDEVICE}" ]
- then
- for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*
- do
- [ -e ${interface} ] || continue
- i="$(basename ${interface})"
-
-cat >> "${IFFILE}" << EOF
-allow-hotplug ${i}
-iface ${i} inet ${method}
-
-EOF
-
- done
- fi
-
- if [ ! -f /root/etc/resolv.conf ] || [ -z "$(cat /root/etc/resolv.conf)" ]
- then
- if [ -f /netboot.config ]
- then
- # create a resolv.conf if it is not present or empty
- cp /netboot.config /root/var/log/netboot.config
-
- rc_search=$(cat netboot.config | awk '/domain/{print $3}')
- rc_server0=$(cat netboot.config | awk '/dns0/{print $5}')
- rc_server1=$(cat netboot.config | awk '/dns0/{print $8}')
- rc_server0="nameserver ${rc_server0}"
-
- if [ "${rc_server1}" = "0.0.0.0" ]
- then
- rc_server1=""
- else
- rc_server1="nameserver ${rc_server1}"
- fi
-
-cat > /root/etc/resolv.conf << EOF
-# /etc/resolv.conf
-# Autogenerated by live-boot
-search ${rc_search}
-domain ${rc_search}
-${rc_server0}
-${rc_server1}
-EOF
-
- cat /root/etc/resolv.conf >> /root/var/log/netboot.config
- fi
- fi
-fi
-
-#if [ ! -x /root/usr/sbin/NetworkManager ]
-#then
-# for i in eth0 eth1 eth2 ath0 wlan0
-# do
-# grep -q "iface ${i}" ${IFFILE} && continue
-#
-#cat >> "${IFFILE}" << EOF
-#allow-hotplug ${i}
-#iface ${i} inet dhcp
-#
-#EOF
-#
-# done
-#fi
-
-log_end_msg
+++ /dev/null
-#!/bin/sh
-
-# Original script by Andreas Teuchert <ant+dl@hsg-kl.de>
-# Modified by Frédéric Boiteux <fboiteux@calistel.com>
-
-PREREQ="blacklist udev"
-
-prereqs()
-{
- echo "$PREREQ"
-}
-
-case $1 in
-# get pre-requisites
-prereqs)
- prereqs
- exit 0
- ;;
-esac
-
-# Boot type in initramfs's config
-bootconf=$(egrep '^BOOT=' /conf/initramfs.conf | tail -1)
-
-# can be superseded by command line (used by Debian-Live's netboot for example)
-for ARGUMENT in $(cat /proc/cmdline); do
- case "${ARGUMENT}" in
- netboot=*)
- NETBOOT="${ARGUMENT#netboot=}"
- ;;
- esac
-done
-
-if [ "$bootconf" != "BOOT=nfs" ] &&
- [ "$NETBOOT" = "" ] &&
- [ "$FETCH" = "" ] &&
- [ "$FTPFS" = "" ] &&
- [ "$HTTPFS" = "" ]
-then
- # Not a net boot : nothing to do
- exit 0
-fi
-
-# we want to do some basic IP
-modprobe -q af_packet
-
-# Available Ethernet interfaces ?
-l_interfaces=""
-echo "Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel `uname -r`?"
-while [ -z "$l_interfaces" ]; do
- l_interfaces="$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)"
-done
-
-if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then
- # only one interface : no choice
- echo "DEVICE=$l_interfaces" >> /conf/param.conf
- exit 0
-fi
-
-# If user force to use specific device, write it
-for ARGUMENT in $(cat /proc/cmdline); do
- case "${ARGUMENT}" in
- live-netdev=*)
- NETDEV="${ARGUMENT#live-netdev=}"
- echo "DEVICE=$NETDEV" >> /conf/param.conf
- echo "Found live-netdev parameter in /proc/cmdline. Force to use network device $NETDEV."
- exit 0
- ;;
- esac
-done
-
-found_eth_dev=""
-while true; do
- echo -n "Looking for a connected Ethernet interface ..."
-
- for interface in $l_interfaces; do
- # ATTR{carrier} is not set if this is not done
- echo -n " $interface ?"
- ipconfig -c none -d $interface -t 1 >/dev/null 2>&1
- done
-
- echo ''
-
- for step in 1 2 3 4 5; do
- for interface in $l_interfaces; do
- carrier=$(cat /sys/class/net/$interface/carrier \
- 2>/dev/null)
- # link detected
- if [ "$carrier" = 1 ]; then
- echo "Connected $interface found"
- # inform initrd's init script :
- found_eth_dev="$found_eth_dev $interface"
- fi
- done
- if [ -n "$found_eth_dev" ]; then
- echo "DEVICE='$found_eth_dev'" >> /conf/param.conf
- exit 0
- else
- # wait a bit
- sleep 1
- fi
- done
-done
+++ /dev/null
-#
-# This is the complete list of languages (locales) to choose from.
-# langcode;language (en);language (orig);supported_environments;countrycode;fallbacklocale;langlist;console-setup
-sq;Albanian;Shqip;2;AL;sq_AL.UTF-8;;console-setup
-am;Amharic;አማርኛ;4;ET;am_ET;;
-ar;Arabic;عربي;3;EG;ar_EG.UTF-8;;console-setup
-ast;Asturian;Asturianu;2;ES;ast_ES.UTF-8;;console-setup
-eu;Basque;Euskara;1;ES;eu_ES.UTF-8;;console-setup
-be;Belarusian;Беларуская;2;BY;be_BY.UTF-8;;console-setup
-bn;Bengali;বাংলা;4;BD;bn_BD;;
-bs;Bosnian;Bosanski;2;BA;bs_BA.UTF-8;;console-setup
-#X br;Breton;Brezhoneg;2;FR;br_FR.UTF-8;;console-setup
-bg;Bulgarian;Български;2;BG;bg_BG.UTF-8;;console-setup
-# For C locale, set language to 'en' to make sure questions are "translated"
-# to English instead of showing codes.
-C;C;No localization;0;;C;en;
-ca;Catalan;Català;1;ES;ca_ES.UTF-8;;console-setup
-# Special case for Chinese as the two flavours share the same ISO 639 code
-# Both will trigger countrychooser. Each will be the backup for the other
-# one
-zh_CN;Chinese (Simplified);中文(简体);3;CN;zh_CN.UTF-8;zh_CN:zh;
-zh_TW;Chinese (Traditional);中文(繁體);3;TW;zh_TW.UTF-8;zh_TW:zh;
-hr;Croatian;Hrvatski;2;HR;hr_HR.UTF-8;;console-setup
-cs;Czech;Čeština;2;CZ;cs_CZ.UTF-8;;console-setup
-da;Danish;Dansk;1;DK;da_DK.UTF-8;;console-setup
-nl;Dutch;Nederlands;1;NL;nl_NL.UTF-8;;console-setup
-dz;Dzongkha;རྫོང་ཁ།;4;BT;dz_BT;;
-en;English;English;0;US;en_US.UTF-8;;console-setup
-# The Esperanto locale is eo.UTF-8
-# so no country on purpose. The default country is Antarctica because...
-# ...why not..:-)
-eo;Esperanto;Esperanto;2;AQ;eo.UTF-8;;console-setup
-et;Estonian;Eesti;2;EE;et_EE.UTF-8;;console-setup
-fi;Finnish;Suomi;1;FI;fi_FI.UTF-8;;console-setup
-fr;French;Français;1;FR;fr_FR.UTF-8;;console-setup
-gl;Galician;Galego;1;ES;gl_ES.UTF-8;;console-setup
-ka;Georgian;ქართული;4;GE;ka_GE.UTF-8;;console-setup
-de;German;Deutsch;1;DE;de_DE.UTF-8;;console-setup
-el;Greek;Ελληνικά;2;GR;el_GR.UTF-8;;console-setup
-gu;Gujarati;ગુજરાતી;4;IN;gu_IN;;
-he;Hebrew;עברית;3;IL;he_IL.UTF-8;;console-setup
-hi;Hindi;हिन्दी ;4;IN;hi_IN;;
-hu;Hungarian;Magyar;2;HU;hu_HU.UTF-8;;console-setup
-#X is;Icelandic;Íslenska;1;IS;is_IS.UTF-8;;console-setup
-id;Indonesian;Bahasa Indonesia;1;ID;id_ID.UTF-8;;console-setup
-ga;Irish;Gaeilge;1;IE;ga_IE.UTF-8;;console-setup
-it;Italian;Italiano;1;IT;it_IT.UTF-8;;console-setup
-ja;Japanese;日本語;3;JP;ja_JP.UTF-8;;
-#X kn;Kannada;ಕನ್ನಡ;4;IN;kn_IN;;
-#X ks;Kashmiri;कोशुर;4;IN;ks_IN;;
-kk;Kazakh;Қазақ;2;KZ;kk_KZ.UTF-8;;console-setup
-km;Khmer;ខ្មែរ;4;KH;km_KH;;
-kn;Kannada;ಕನ್ನಡ;4;IN;kn_IN;;
-ko;Korean;한국어;3;KR;ko_KR.UTF-8;;
-ku;Kurdish;Kurdî;2;TR;ku_TR.UTF-8;;console-setup
-#X ky;Kirghiz;Кыргызча;2;KG;ky_KG;;console-setup
-#X lo;Lao;ລາວ;4;LA;lo_LA;;console-setup
-lv;Latvian;Latviski;2;LV;lv_LV.UTF-8;;console-setup
-lt;Lithuanian;Lietuviškai;2;LT;lt_LT.UTF-8;;console-setup
-#X mg;Malagasy;Malagasy;1;MG;mg_MG.UTF-8;mg_MG:fr_FR:fr:en;console-setup
-#X ms;Malay;Bahasa Malaysia;1;MY;ms_MY.UTF-8;;console-setup
-ml;Malayalam;മലയാളം;4;IN;ml_IN;;
-mr;Marathi;मराठी;4;IN;mr_IN;;
-mk;Macedonian;Македонски;2;MK;mk_MK.UTF-8;;console-setup
-ne;Nepali;नेपाली ;4;NP;ne_NP;;
-# The Sami translation is really incomplete. We however keep Sami on request
-# of Skolelinux as a kind of reward to them..:-). They need to be able to
-# choose Sami as an option so that the Sami locale is set as default
-se_NO;Northern Sami;Sámegillii;1;NO;se_NO.UTF-8;se_NO:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en;console-setup
-nb_NO;Norwegian Bokmaal;Norsk bokmål;1;NO;nb_NO.UTF-8;nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en;console-setup
-nn_NO;Norwegian Nynorsk;Norsk nynorsk;1;NO;nn_NO.UTF-8;nn_NO:nn:no_NO:no:nb_NO:nb:da:sv:en;console-setup
-fa;Persian;فارسی;3;IR;fa_IR;;console-setup
-pl;Polish;Polski;2;PL;pl_PL.UTF-8;;console-setup
-pt;Portuguese;Português;1;PT;pt_PT.UTF-8;pt:pt_BR:en;console-setup
-pt_BR;Portuguese (Brazil);Português do Brasil;1;BR;pt_BR.UTF-8;pt_BR:pt:en;console-setup
-pa;Punjabi (Gurmukhi);ਪੰਜਾਬੀ;4;IN;pa_IN;;
-ro;Romanian;Română;2;RO;ro_RO.UTF-8;;console-setup
-ru;Russian;Русский;2;RU;ru_RU.UTF-8;;console-setup
-#X sa;Sanskrit;संस्कृत;4;IN;sa_IN;;
-#X si;Sinhala;සිංහල;4;IN;si_IN;;
-sr;Serbian (Cyrillic);Српски;2;RS;sr_RS;;console-setup
-sr@latin;Serbian (Latin);Srpski;2;RS;sr_RS@latin;;console-setup
-sk;Slovak;Slovenčina;2;SK;sk_SK.UTF-8;;console-setup
-sl;Slovenian;Slovenščina;2;SI;sl_SI.UTF-8;;console-setup
-es;Spanish;Español;1;ES;es_ES.UTF-8;;console-setup
-sv;Swedish;Svenska;1;SE;sv_SE.UTF-8;;console-setup
-tl;Tagalog;Tagalog;1;PH;tl_PH.UTF-8;;console-setup
-ta;Tamil;தமிழ்;4;IN;ta_IN;;
-te;Telugu;తెలుగు;4;IN;te_IN;;
-th;Thai;ภาษาไทย;3;TH;th_TH.UTF-8;;console-setup
-tr;Turkish;Türkçe;2;TR;tr_TR.UTF-8;;console-setup
-uk;Ukrainian;Українська;2;UA;uk_UA.UTF-8;;console-setup
-#X ur;Urdu;اردو;3;PK;ur_PK.UTF-8;;console-setup
-#X ca@valencia;Valencian-Catalan;Valencià-Català;1;ES;ca_ES.UTF-8@valencia;;console-setup
-vi;Vietnamese;Tiếng Việt;3;VN;vi_VN;;console-setup
-#X cy;Welsh;Cymraeg;2;GB;cy_GB.UTF-8;;console-setup
-#X wo;Wolof;Wolof;2;SN;wo_SN;wo:fr:en;
-#X xh;Xhosa;Xhosa;2;ZA;xh_ZA.UTF-8;;console-setup
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT 7 05.06.2012 3.0~a29\-1 "Debian Live Project"
+.TH LIVE\-BOOT 7 05.06.2012 3.0~a30\-1 "Debian Live Project"
.SH NAME
\fBlive\-boot\fP \- System Boot Scripts
Do not check that any UUID embedded in the initramfs matches the discovered
medium. live\-boot may be told to generate a UUID by setting
LIVE_GENERATE_UUID=1 when building the initramfs.
-.IP \fBintegrity\-check\fP 4
+.IP \fBverify\-checksums\fP 4
If specified, an MD5 sum is calculated on the live media during boot and
compared to the value found in md5sum.txt found in the root directory of the
live media.
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT conf 05.06.2012 3.0~a29\-1 "Debian Live Project"
+.TH LIVE\-BOOT conf 05.06.2012 3.0~a30\-1 "Debian Live Project"
.SH NAME
\fBlive\-persistence.conf\fP \- Configuration file for persistence media in
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT 1 05.06.2012 3.0~a29\-1 "Debian Live Project"
+.TH LIVE\-BOOT 1 05.06.2012 3.0~a30\-1 "Debian Live Project"
.SH NAME
\fBlive\-snapshot\fP \- simple script to ease persistence usage
-.TH LIVE\-BOOT 7 2012\-06\-05 3.0~a29-1 "Debian Live Project"
+.TH LIVE\-BOOT 7 2012\-06\-05 3.0~a30-1 "Debian Live Project"
.SH NAME
\fBlive\-boot\fR \- System Boot Scripts
Allows to use a filesystem from within an iso image that's available on live-media.
.IP "\fBignore_uuid\fR" 4
Do not check that any UUID embedded in the initramfs matches the discovered medium. live\-boot may be told to generate a UUID by setting LIVE_GENERATE_UUID=1 when building the initramfs.
-.IP "\fBintegrity\-check\fR" 4
+.IP "\fBverify\-checksums\fR" 4
If specified, an MD5 sum is calculated on the live media during boot and compared to the value found in md5sum.txt found in the root directory of the live media.
.IP "\fBip\fR=[\fIDEVICE\fR]:[\fICLIENT_IP\fR]:[\fISERVER_IP\fR]:[\fIGATEWAY_IP\fR]:[\fINETMASK\fR]:[\fIHOSTNAME\fR]:[\fIAUTOCONF\fR] [,[\fIDEVICE\fR]:[\fICLIENT_IP\fR]:[\fISERVER_IP\fR]:[\fIGATEWAY_IP\fR]:[\fINETMASK\fR]:[\fIHOSTNAME\fR]:[\fIAUTOCONF\fR]]" 4
Let you specify the name(s) and the options of the interface(s) that should be configured at boot time. Do not specify this if you want to use dhcp (default). It will be changed in a future release to mimick official kernel boot param specification (e.g. ip=10.0.0.1::10.0.0.254:255.255.255.0::eth0,:::::eth1:dhcp).
-.TH LIVE\-BOOT conf 2012\-06\-05 3.0~a29-1 "Debian Live Project"
+.TH LIVE\-BOOT conf 2012\-06\-05 3.0~a30-1 "Debian Live Project"
.SH NAME
\fBlive-persistence.conf\fR \- Configuration file for persistence media in
-.TH LIVE\-BOOT 1 2012\-06\-05 3.0~a29-1 "Debian Live Project"
+.TH LIVE\-BOOT 1 2012\-06\-05 3.0~a30-1 "Debian Live Project"
.SH NAME
\fBlive\-snapshot\fR \- simple script to ease persistence usage
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT 7 05.06.2012 3.0~a29\-1 "Proyecto Debian Live"
+.TH LIVE\-BOOT 7 05.06.2012 3.0~a30\-1 "Proyecto Debian Live"
.SH NOMBRE
\fBlive\-boot\fP \- Scripts de Arranque del Sistema
No comprobar que cualquier UUID integrado en el initramfs coincida con el
medio encontrado. Se puede especificar a live\-boot que genere un UUID
configurando LIVE_GENERATE_UUID=1 en el momento de crear el initramfs.
-.IP \fBintegrity\-check\fP 4
+.IP \fBverify\-checksums\fP 4
Si se especifica, se calcula una suma MD5 sobre los medios en vivo durante
el arranque y se compara con el valor md5sum.txt que se encuentra en el
directorio raíz de los medios en vivo.
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT conf 05.06.2012 3.0~a29\-1 "Proyecto Debian Live"
+.TH LIVE\-BOOT conf 05.06.2012 3.0~a30\-1 "Proyecto Debian Live"
.SH NOMBRE
\fBlive\-persistence.conf\fP \- Fichero para configurar medios de almacenamiento
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH LIVE\-BOOT 1 05.06.2012 3.0~a29\-1 "Proyecto Debian Live"
+.TH LIVE\-BOOT 1 05.06.2012 3.0~a30\-1 "Proyecto Debian Live"
.SH NOMBRE
\fBlive\-snapshot\fP \- sencillo script para facilitar el uso de la persistencia
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: 2012-04-08 22:48+0300\n"
"Last-Translator: Daniel Baumann <daniel@debian.org>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
#. type: IP
#: en/live-boot.7:75
#, no-wrap
-msgid "B<integrity-check>"
+msgid "B<verify-checksums>"
msgstr ""
#. type: Plain text
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: 2012-04-08 22:48+0300\n"
"Last-Translator: Daniel Baumann <daniel@debian.org>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: 2012-04-08 22:48+0300\n"
"Last-Translator: Daniel Baumann <daniel@debian.org>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: 2012-05-13 18:30+0100\n"
"Last-Translator: Carlos Zuferri «chals» <chals@altorricon.com>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, fuzzy, no-wrap
-#| msgid "3.0~a28-1"
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr "3.0~a28-1"
#. type: TH
#. type: IP
#: en/live-boot.7:75
-#, no-wrap
-msgid "B<integrity-check>"
+#, fuzzy, no-wrap
+#| msgid "B<integrity-check>"
+msgid "B<verify-checksums>"
msgstr "B<integrity-check>"
#. type: Plain text
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Carlos Zuferri «chals» <chals@altorricon.com>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, fuzzy, no-wrap
-#| msgid "3.0~a28-1"
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr "3.0~a28-1"
#. type: TH
msgid ""
msgstr ""
"Project-Id-Version: live-boot 3.0~a28-1\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: 2012-05-13 18:37+0100\n"
"Last-Translator: Carlos Zuferri «chals» <chals@altorricon.com>\n"
"Language-Team: none\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, fuzzy, no-wrap
-#| msgid "3.0~a28-1"
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr "3.0~a28-1"
#. type: TH
msgid ""
msgstr ""
"Project-Id-Version: live-boot VERSION\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
#. type: IP
#: en/live-boot.7:75
#, no-wrap
-msgid "B<integrity-check>"
+msgid "B<verify-checksums>"
msgstr ""
#. type: Plain text
msgid ""
msgstr ""
"Project-Id-Version: live-boot VERSION\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
msgid ""
msgstr ""
"Project-Id-Version: live-boot VERSION\n"
-"POT-Creation-Date: 2012-06-05 16:01+0300\n"
+"POT-Creation-Date: 2012-06-05 19:38+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#. type: TH
#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
#, no-wrap
-msgid "3.0~a29-1"
+msgid "3.0~a30-1"
msgstr ""
#. type: TH
return 1
}
-integrity_check ()
-{
- media_mountpoint="${1}"
-
- log_begin_msg "Checking media integrity"
-
- cd ${media_mountpoint}
- /bin/md5sum -c md5sum.txt < /dev/tty8 > /dev/tty8
- RC="${?}"
-
- log_end_msg
-
- if [ "${RC}" -eq 0 ]
- then
- log_success_msg "Everything ok, will reboot in 10 seconds."
- sleep 10
- cd /
- umount ${media_mountpoint}
- sync
- echo u > /proc/sysrq-trigger
- echo b > /proc/sysrq-trigger
- else
- panic "Not ok, a media defect is likely, switch to VT8 for details."
- fi
-}
-
mountroot ()
{
if [ -x /scripts/local-top/cryptroot ]; then
. /live.vars
- Arguments
+ _CMDLINE="$(cat /proc/cmdline)"
+ Cmdline
+
+ case "${LIVE_DEBUG}" in
+ true)
+ set -x
+ ;;
+ esac
- # make sure all harddisk devices are read-only
- # this is important for forensic investigations
- case "${READ_ONLY}" in
+ case "${LIVE_READ_ONLY}" in
true)
Read_only
;;
esac
- maybe_break live-premount
- log_begin_msg "Running /scripts/live-premount"
- run_scripts /scripts/live-premount
- log_end_msg
+ Select_eth_device
# Needed here too because some things (*cough* udev *cough*)
# changes the timeout
panic "Unable to find a medium containing a live file system"
fi
- if [ "${INTEGRITY_CHECK}" ]
- then
- integrity_check "${livefs_root}"
- fi
+ case "${LIVE_VERIFY_CHECKSUMS}" in
+ true)
+ Verify_checksums "${livefs_root}"
+ ;;
+ esac
if [ "${TORAM}" ]
then
log_end_msg
fi
- maybe_break live-bottom
- log_begin_msg "Running /scripts/live-bottom\n"
+ if ! [ -d "/root/usr/share/live-boot" ]
+ then
+ panic "A wrong rootfs was mounted."
+ fi
- run_scripts /scripts/live-bottom
- log_end_msg
+ persistence_exclude
+ fstab
+ Netbase
+
+ case "${LIVE_SWAPON}" in
+ true)
+ Swapon
+ ;;
+ esac
if [ "${UNIONFS}" = unionfs-fuse ]
then
#set -e
-Arguments ()
+Cmdline ()
{
- PRESEEDS=""
- LOCATIONS=""
-
- for ARGUMENT in $(cat /proc/cmdline)
+ for _PARAMETER in ${_CMDLINE}
do
- case "${ARGUMENT}" in
- read-only)
- READ_ONLY="true"
+ case "${_PARAMETER}" in
+ live-boot.read-only|read-only)
+ LIVE_READ_ONLY="true"
;;
- skipconfig)
- NOACCESSIBILITY="Yes"
- NOFASTBOOT="Yes"
- NOFSTAB="Yes"
- NONETWORKING="Yes"
+ live-boot.swapon)
+ LIVE_SWAPON="true"
+ ;;
- export NOACCESSIBILITY NOFASTBOOT NOFSTAB NONETWORKING
+ live-boot.verify-checksums|verify-checksums)
+ LIVE_VERIFY_CHECKSUMS="true"
;;
- access=*)
- ACCESS="${ARGUMENT#access=}"
- export ACCESS
+ # Special options
+ live-boot.debug|debug)
+ LIVE_DEBUG="true"
;;
- console=*)
- DEFCONSOLE="${ARGUMENT#*=}"
- export DEFCONSOLE
+
+ # parameters below need review (FIXME)
+ skipconfig)
+ NOFSTAB="true"
+ NONETWORKING="true"
+
+ export NOFSTAB NONETWORKING
;;
BOOTIF=*)
BOOTIF="${x#BOOTIF=}"
;;
- debug)
- DEBUG="Yes"
- export DEBUG
-
- set -x
- ;;
-
dhcp)
# Force dhcp even while netbooting
# Use for debugging in case somebody works on fixing dhclient
- DHCP="Force";
+ DHCP="true";
export DHCP
;;
nodhcp)
- unset DHCP
+ DHCP=""
+ export DHCP
;;
ethdevice=*)
export FINDISO
;;
- forcepersistencefsck)
- FORCEPERSISTENCEFSCK="Yes"
- export FORCEPERSISTENCEFSCK
- ;;
-
ftpfs=*)
FTPFS="${ARGUMENT#ftpfs=}"
export FTPFS
;;
ignore_uuid)
- IGNORE_UUID="Yes"
+ IGNORE_UUID="true"
export IGNORE_UUID
;;
- integrity-check)
- INTEGRITY_CHECK="Yes"
- export INTEGRITY_CHECK
- ;;
-
ip=*)
STATICIP="${ARGUMENT#ip=}"
export STATICIP
;;
- live-getty)
- LIVE_GETTY="1"
- export LIVE_GETTY
- ;;
-
live-media=*|bootfrom=*)
LIVE_MEDIA="${ARGUMENT#*=}"
export LIVE_MEDIA
export NFS_COW
;;
- noaccessibility)
- NOACCESSIBILITY="Yes"
- export NOACCESSIBILITY
- ;;
-
- nofastboot)
- NOFASTBOOT="Yes"
- export NOFASTBOOT
- ;;
-
nofstab)
- NOFSTAB="Yes"
+ NOFSTAB="true"
export NOFSTAB
;;
nonetworking)
- NONETWORKING="Yes"
+ NONETWORKING="true"
export NONETWORKING
;;
ramdisk_size="${ARGUMENT#ramdisk-size=}"
;;
- swapon)
- SWAPON="Yes"
- export SWAPON
- ;;
-
persistence)
- PERSISTENCE="Yes"
+ PERSISTENCE="true"
export PERSISTENCE
;;
export PERSISTENCE_PATH
;;
persistence-read-only)
- PERSISTENCE_READONLY="Yes"
+ PERSISTENCE_READONLY="true"
export PERSISTENCE_READONLY
;;
;;
nopersistence)
- NOPERSISTENCE="Yes"
+ NOPERSISTENCE="true"
export NOPERSISTENCE
;;
noprompt)
- NOPROMPT="Yes"
+ NOPROMPT="true"
export NOPROMPT
;;
;;
quickusbmodules)
- QUICKUSBMODULES="Yes"
+ QUICKUSBMODULES="true"
export QUICKUSBMODULES
;;
- preseed/file=*|file=*)
- LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}"
- export LOCATIONS
- ;;
-
- nopreseed)
- NOPRESEED="Yes"
- export NOPRESEED
- ;;
-
- */*=*)
- question="${ARGUMENT%%=*}"
- value="${ARGUMENT#*=}"
- PRESEEDS="${PRESEEDS}\"${question}=${value}\" "
- export PRESEEDS
- ;;
-
showmounts)
- SHOWMOUNTS="Yes"
+ SHOWMOUNTS="true"
export SHOWMOUNTS
;;
silent)
- SILENT="Yes"
+ SILENT="true"
export SILENT
;;
;;
toram)
- TORAM="Yes"
+ TORAM="true"
export TORAM
;;
toram=*)
- TORAM="Yes"
+ TORAM="true"
MODULETORAM="${ARGUMENT#toram=}"
export TORAM MODULETORAM
;;
exposedroot)
- EXPOSED_ROOT="Yes"
+ EXPOSED_ROOT="true"
export EXPOSED_ROOT
;;
plainroot)
- PLAIN_ROOT="Yes"
+ PLAIN_ROOT="true"
export PLAIN_ROOT
;;
skipunion)
- SKIP_UNION_MOUNTS="Yes"
+ SKIP_UNION_MOUNTS="true"
export SKIP_UNION_MOUNTS
;;
--- /dev/null
+#!/bin/sh
+
+#set -e
+
+Fstab ()
+{
+ # FIXME: stop hardcoding overloading of initramfs-tools functions
+ . /scripts/functions
+ . /lib/live/boot/initramfs-tools.sh
+
+ if [ -n "${NOFSTAB}" ]
+ then
+ return
+ fi
+
+ if [ -e /run ]
+ then
+ # wheezy
+ _FSTAB="/root/etc/fstab.d/live"
+ else
+ # squeeze
+ _FSTAB="/root/etc/fstab"
+ fi
+
+ log_begin_msg "Configuring fstab"
+
+ if ! grep -qs "^${UNIONTYPE}" "${_FSTAB}"
+ then
+ echo "${UNIONTYPE} / ${UNIONTYPE} rw 0 0" >> "${_FSTAB}"
+ fi
+
+ if ! grep -qs "^tmpfs /tmp" "${_FSTAB}"
+ then
+ echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> "${_FSTAB}"
+ fi
+
+ log_end_msg
+}
eval export "${STRING}"="${VALUE}"
}
-lang2locale() {
- langpart="${1%%_*}"
- if [ "$1" != "C" ]; then
- # Match the language code with 3rd field in languagelist
- line=$(grep -v "^#" /usr/share/live-boot/languagelist | cut -f1,3,6 -d\; | grep -v ';C$' | grep "^$langpart;")
- if [ -n "$line" ]; then
- if [ "$(echo "$line" | grep -c '')" -gt 1 ]; then
- # More than one match; try matching the
- # country as well.
- countrypart="${1#*_}"
- if [ "$countrypart" = "$1" ]; then
- countryline="$(echo "$line" | head -n1)"
- echo "${countryline##*;}"
- return
- fi
- countrypart="${countrypart%%[@.]*}"
- countryline="$(echo "$line" | grep ";$countrypart;" | head -n1 || true)"
- if [ "$countryline" ]; then
- echo "${countryline##*;}"
- return
- fi
- fi
- echo "${line##*;}"
- fi
- else
- echo "C"
- fi
-}
-
is_in_list_separator_helper () {
local sep=${1}
shift
then
if [ -z "${want_usb}" ]
then
- dev_ok="yes"
+ dev_ok="true"
else
if readlink ${sysblock} | grep -q usb
then
- dev_ok="yes"
+ dev_ok="true"
fi
fi
fi
- if [ "${dev_ok}" = "yes" ]
+ if [ "${dev_ok}" = "true" ]
then
case "${output_format}" in
sys)
opt_source=${opt#source=}
;;
link)
- opt_link="yes"
+ opt_link="true"
;;
union|bind)
;;
while read device source dest options # < ${custom_mounts}
do
- local opt_bind="yes"
+ local opt_bind="true"
local opt_link=""
local opt_union=""
for opt in $(echo ${options} | tr ',' ' ');
do
case "${opt}" in
bind)
- opt_bind="yes"
+ opt_bind="true"
unset opt_link opt_union
;;
link)
- opt_link="yes"
+ opt_link="true"
unset opt_bind opt_union
;;
union)
- opt_union="yes"
+ opt_union="true"
unset opt_bind opt_link
;;
esac
#modprobe ib_iser
modprobe iscsi_tcp
local debugopt=""
- [ "${DEBUG}" = "Yes" ] && debugopt="-d 8"
+ [ "${DEBUG}" = "true" ] && debugopt="-d 8"
#FIXME this name is supposed to be unique - some date + ifconfig hash?
ISCSI_INITIATORNAME="iqn.1993-08.org.debian.live:01:$(echo "${HWADDR}" | sed -e s/://g)"
export ISCSI_INITIATORNAME
--- /dev/null
+#!/bin/sh
+
+#set -e
+
+Netbase ()
+{
+ if [ -n "${NONETWORKING}" ]
+ then
+ return
+ fi
+
+ # FIXME: stop hardcoding overloading of initramfs-tools functions
+ . /scripts/functions
+ . /lib/live/boot/initramfs-tools.sh
+
+ log_begin_msg "Preconfiguring networking"
+
+ IFFILE="/root/etc/network/interfaces"
+
+ if [ "${STATICIP}" = "frommedia" -a -e "${IFFILE}" ]
+ then
+ # will use existent /etc/network/interfaces
+ log_end_msg
+ return
+ fi
+
+cat > "${IFFILE}" << EOF
+auto lo
+iface lo inet loopback
+
+EOF
+
+ udevadm trigger
+ udevadm settle
+
+ if [ -z "${NETBOOT}" -a -n "${STATICIP}" -a "${STATICIP}" != "frommedia" ]
+ then
+ parsed=$(echo "${STATICIP}" | sed -e 's/,/ /g')
+
+ for ifline in ${parsed}
+ do
+ ifname="$(echo ${ifline} | cut -f1 -d ':')"
+ ifaddress="$(echo ${ifline} | cut -f2 -d ':')"
+ ifnetmask="$(echo ${ifline} | cut -f3 -d ':')"
+ ifgateway="$(echo ${ifline} | cut -f4 -d ':')"
+
+cat >> "${IFFILE}" << EOF
+allow-hotplug ${ifname}
+iface ${ifname} inet static
+ address ${ifaddress}
+ netmask ${ifnetmask}
+EOF
+
+ if [ -n "${ifgateway}" ]
+ then
+
+cat >> "${IFFILE}" << EOF
+ gateway ${ifgateway}
+
+EOF
+
+ fi
+ done
+ else
+ if [ -z "${NETBOOT}" ] || [ -n "${DHCP}" ]
+ then
+ # default, dhcp assigned
+ method="dhcp"
+ else
+ # make sure that the preconfigured interface would not get reassigned by dhcp
+ # on startup by ifup script - otherwise our root fs might be disconnected!
+ method="manual"
+ fi
+
+ # iterate the physical interfaces and add them to the interfaces list and also add when ethdevice= called on cmdline
+ if [ "${method}" != dhcp ] || ([ ! -x /root/usr/sbin/NetworkManager ] && [ ! -x /root/usr/sbin/wicd ]) || [ ! -z "${ETHDEVICE}" ]
+ then
+ for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*
+ do
+ [ -e ${interface} ] || continue
+ i="$(basename ${interface})"
+
+cat >> "${IFFILE}" << EOF
+allow-hotplug ${i}
+iface ${i} inet ${method}
+
+EOF
+
+ done
+ fi
+
+ if [ ! -f /root/etc/resolv.conf ] || [ -z "$(cat /root/etc/resolv.conf)" ]
+ then
+ if [ -f /netboot.config ]
+ then
+ # create a resolv.conf if it is not present or empty
+ cp /netboot.config /root/var/log/netboot.config
+
+ rc_search=$(cat netboot.config | awk '/domain/{print $3}')
+ rc_server0=$(cat netboot.config | awk '/dns0/{print $5}')
+ rc_server1=$(cat netboot.config | awk '/dns0/{print $8}')
+ rc_server0="nameserver ${rc_server0}"
+
+ if [ "${rc_server1}" = "0.0.0.0" ]
+ then
+ rc_server1=""
+ else
+ rc_server1="nameserver ${rc_server1}"
+ fi
+
+cat > /root/etc/resolv.conf << EOF
+# /etc/resolv.conf
+# Autogenerated by live-boot
+search ${rc_search}
+domain ${rc_search}
+${rc_server0}
+${rc_server1}
+EOF
+
+ cat /root/etc/resolv.conf >> /root/var/log/netboot.config
+ fi
+ fi
+ fi
+
+ #if [ ! -x /root/usr/sbin/NetworkManager ]
+ #then
+ # for i in eth0 eth1 eth2 ath0 wlan0
+ # do
+ # grep -q "iface ${i}" ${IFFILE} && continue
+ #
+ #cat >> "${IFFILE}" << EOF
+ #allow-hotplug ${i}
+ #iface ${i} inet dhcp
+ #
+ #EOF
+ #
+ # done
+ #fi
+
+ log_end_msg
+}
--- /dev/null
+#!/bin/sh
+
+#set -e
+
+persistence_exclude ()
+{
+ # Persistence enhancer script
+ # This script saves precious time on slow persistence devices/image files
+ # and writes on flash based device.
+ # a tmpfs on $PERSTMP is mounted and directories listed in
+ # /etc/live-persistence.binds will be copied there and then bind mounted back.
+
+ if [ -z "${PERSISTENCE}" ] || [ -n "${NOPERSISTENCE}" ] || [ -z "${PERSISTENCE_IS_ON}" ] || [ ! -f /root/etc/live-persistence.binds ]
+ then
+ return
+ fi
+
+ # FIXME: stop hardcoding overloading of initramfs-tools functions
+ . /scripts/functions
+ . /lib/live/boot/initramfs-tools.sh
+
+ dirs="$(sed -e '/^ *$/d' -e '/^#.*$/d' /root/etc/live-persistence.binds | tr '\n' '\0')"
+ if [ -z "${dirs}" ]
+ then
+ return
+ fi
+
+ log_begin_msg "Moving persistence bind mounts"
+
+ PERSTMP="/root/live/persistence-binds"
+ CPIO="/bin/cpio"
+
+ if [ ! -d "${PERSTMP}" ]
+ then
+ mkdir -p "${PERSTMP}"
+ fi
+
+ mount -t tmpfs tmpfs "${PERSTMP}"
+
+ for dir in $(echo "${dirs}" | tr '\0' '\n')
+ do
+ if [ ! -e "/root/${dir}" ] && [ ! -L "/root/${dir}" ]
+ then
+ # directory do not exists, create it
+ mkdir -p "/root/${dir}"
+ elif [ ! -d "/root/${dir}" ]
+ then
+ # it is not a directory, skip it
+ break
+ fi
+
+ # Copy previous content if any
+ cd "/root/${dir}"
+ find . -print0 | ${CPIO} -pumd0 "${PERSTMP}/${dir}"
+ cd "${OLDPWD}"
+
+ # Bind mount it to origin
+ mount -o bind "${PERSTMP}/${dir}" "/root/${dir}"
+ done
+
+ log_end_msg
+}
Read_only ()
{
- # Marking the usual block devices for harddisks read-only
- for _DEVICE in /dev/sd* /dev/vd*
+ # Marking some block devices as read-only to ensure that nothing
+ # gets written as linux still writes to 'only' read-only mounted filesystems.
+ _DEVICES="/dev/sd* /dev/vd*"
+
+ for _DEVICE in ${_DEVICES}
do
- if [ -b "${_DEVICE}" ]
+ if [ ! -b "${_DEVICE}" ]
then
- printf "Setting device %-9s to read-only mode:" ${_DEVICE} > /dev/console
-
- blockdev --setro ${_DEVICE} && printf " done [ execute \"blockdev --setrw %-9s\" to unlock]\n" ${_DEVICE} > /dev/console || printf "failed\n" > /dev/console
+ continue
fi
+
+ echo -n "Setting ${_DEVICE} read-only..." > /dev/console
+
+ blockdev --setro ${_DEVICE}
+ _RETURN="${?}"
+
+ case "${_RETURN}" in
+ 0)
+ echo " done, use 'blockdev --setrw ${_DEVICE}' to set read-write." > /dev/console
+ ;;
+
+ *)
+ echo " failed." > /dev/console
+ ;;
+ esac
done
}
--- /dev/null
+#!/bin/sh
+
+Select_eth_device ()
+{
+ # Boot type in initramfs's config
+ bootconf=$(egrep '^BOOT=' /conf/initramfs.conf | tail -1)
+
+ # can be superseded by command line (used by Debian-Live's netboot for example)
+ for ARGUMENT in $(cat /proc/cmdline); do
+ case "${ARGUMENT}" in
+ netboot=*)
+ NETBOOT="${ARGUMENT#netboot=}"
+ ;;
+ esac
+ done
+
+ if [ "$bootconf" != "BOOT=nfs" ] &&
+ [ "$NETBOOT" = "" ] &&
+ [ "$FETCH" = "" ] &&
+ [ "$FTPFS" = "" ] &&
+ [ "$HTTPFS" = "" ]
+ then
+ # Not a net boot : nothing to do
+ return
+ fi
+
+ # we want to do some basic IP
+ modprobe -q af_packet
+
+ # Available Ethernet interfaces ?
+ l_interfaces=""
+ echo "Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel `uname -r`?"
+ while [ -z "$l_interfaces" ]; do
+ l_interfaces="$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)"
+ done
+
+ if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then
+ # only one interface : no choice
+ echo "DEVICE=$l_interfaces" >> /conf/param.conf
+ return
+ fi
+
+ # If user force to use specific device, write it
+ for ARGUMENT in $(cat /proc/cmdline); do
+ case "${ARGUMENT}" in
+ live-netdev=*)
+ NETDEV="${ARGUMENT#live-netdev=}"
+ echo "DEVICE=$NETDEV" >> /conf/param.conf
+ echo "Found live-netdev parameter in /proc/cmdline. Force to use network device $NETDEV."
+ return
+ ;;
+ esac
+ done
+
+ found_eth_dev=""
+ while true; do
+ echo -n "Looking for a connected Ethernet interface ..."
+
+ for interface in $l_interfaces; do
+ # ATTR{carrier} is not set if this is not done
+ echo -n " $interface ?"
+ ipconfig -c none -d $interface -t 1 >/dev/null 2>&1
+ done
+
+ echo ''
+
+ for step in 1 2 3 4 5; do
+ for interface in $l_interfaces; do
+ carrier=$(cat /sys/class/net/$interface/carrier \
+ 2>/dev/null)
+ # link detected
+ if [ "$carrier" = 1 ]; then
+ echo "Connected $interface found"
+ # inform initrd's init script :
+ found_eth_dev="$found_eth_dev $interface"
+ fi
+ done
+ if [ -n "$found_eth_dev" ]; then
+ echo "DEVICE='$found_eth_dev'" >> /conf/param.conf
+ return
+ else
+ # wait a bit
+ sleep 1
+ fi
+ done
+ done
+}
--- /dev/null
+#!/bin/sh
+
+#set -e
+
+Swapon ()
+{
+ _DEVICES="/dev/sd* /dev/vd*"
+
+ if [ -e /run ]
+ then
+ # wheezy
+ _FSTAB="/root/etc/fstab.d/swap"
+ else
+ # squeeze
+ _FSTAB="/root/etc/fstab"
+ fi
+
+ for _DEVICE in ${_DEVICES}
+ do
+ if [ ! -b "${_DEVICE}" ]
+ then
+ continue
+ fi
+
+ blkid -o udev -p ${_DEVICE%%[0-9]*} | grep -q "^ID_FS_USAGE=raid" && continue
+
+ _MAGIC="$(/bin/dd if=${_DEVICE} bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null)" || continue
+
+ case "${_MAGIC}" in
+ SWAPSPACE2|SWAP-SPACE)
+ _SWAP_DEVICES="${_SWAP_DEVICES} ${_DEVICE}"
+ ;;
+ esac
+ done
+
+ # Remove all auto swap entries
+ if grep -qs "swap swap" "${_FSTAB}"
+ then
+ grep -v "swap swap" "${_FSTAB}" > "${_FSTAB}".tmp
+ mv "${_FSTAB}".tmp "${_FSTAB}"
+ fi
+
+ # Add new swap entries
+ for _DEVICE in _SWAP_DEVICES
+ do
+ echo "${_DEVICE} swap swap defaults 0 0" >> "${_FSTAB}"
+ done
+}
--- /dev/null
+#!/bin/sh
+
+#set -e
+
+Verify_checksums ()
+{
+ _MOUNTPOINT="${1}"
+
+ _DIGESTS="sha512 sha384 sha256 sha224 sha1 md5"
+ _TTY="/dev/tty8"
+
+ log_begin_msg "Verifying checksums"
+
+ cd "${_MOUNTPOINT}"
+
+ for _DIGEST in ${_DIGESTS}
+ do
+ _CHECKSUMS="$(echo ${_DIGEST} | tr [a-z] [A-Z])SUMS"
+
+ if [ -e "${_CHECKSUMS}" ]
+ then
+ echo "Found ${_CHECKSUMS}..." > "${_TTY}"
+
+ if [ -e "/bin/${_DIGEST}sum" ]
+ then
+ echo "Checking ${_CHECKSUMS}..." > "${_TTY}"
+
+ # Verify checksums
+ /bin/${_DIGEST}sum -c "${_CHECKSUMS}" < "${_TTY}" > "${_TTY}"
+ _RETURN="${?}"
+
+ # Stop after first verification
+ break
+ else
+ echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}"
+ fi
+ fi
+ done
+
+ log_end_msg
+
+ case "${_RETURN}" in
+ 0)
+ log_success_msg "Verification successfull, rebooting in 10 seconds."
+ sleep 10
+
+ # Unmount live-media
+ cd /
+ umount -f ${_MOUNTPOINT} > /dev/null 2>&1
+ sync
+
+ # Attempt to remount all mounted filesystems read-only
+ echo u > /proc/sysrq-trigger
+
+ # Immediately reboot the system without syncing or unmounting filesystems
+ echo b > /proc/sysrq-trigger
+ ;;
+
+ *)
+ panic "Verification failed, $(basename ${_TTY}) for more information."
+ ;;
+ esac
+}