diff options
Diffstat (limited to 'rescue/tree')
31 files changed, 692 insertions, 1381 deletions
diff --git a/rescue/tree/bin/insmod b/rescue/tree/bin/insmod deleted file mode 100755 index 49b298142..000000000 --- a/rescue/tree/bin/insmod +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "Use modprobe instead" diff --git a/rescue/tree/etc/hostname b/rescue/tree/etc/hostname new file mode 100644 index 000000000..344f71bc8 --- /dev/null +++ b/rescue/tree/etc/hostname @@ -0,0 +1 @@ +rescue diff --git a/rescue/tree/etc/hosts b/rescue/tree/etc/hosts index a9bbdee7f..d02c36416 100644 --- a/rescue/tree/etc/hosts +++ b/rescue/tree/etc/hosts @@ -1 +1 @@ -127.0.0.1 mandrake-rescue +127.0.0.1 mageia-rescue diff --git a/rescue/tree/etc/inittab b/rescue/tree/etc/inittab deleted file mode 100644 index 771d7c0d4..000000000 --- a/rescue/tree/etc/inittab +++ /dev/null @@ -1,14 +0,0 @@ -#Inittab for Mandrake Rescue Disk -#Author: Daouda Lo <daouda@mandrakesoft.com> -id:3:initdefault: - -si::sysinit:/etc/rc.sysinit -re:6:wait:/etc/rc.reboot -ca:12345:ctrlaltdel:/sbin/fakeshutdown - -1:12345:respawn:/sbin/mingetty --autologin root tty1 -2:23:respawn:/sbin/mingetty tty2 -3:23:respawn:/sbin/mingetty tty3 -4:23:respawn:/sbin/mingetty tty4 -5:23:respawn:/sbin/mingetty tty5 -6:23:respawn:/sbin/mingetty tty6 diff --git a/rescue/tree/etc/issue b/rescue/tree/etc/issue index 2bbd2b38a..11f9f3102 100644 --- a/rescue/tree/etc/issue +++ b/rescue/tree/etc/issue @@ -11,7 +11,7 @@ [1;30;44m [40m [47m [40m [44m [40m[2[1;37;4[0m [1;30;44m [40m [47m [40m [30;44m [40m[2C[1;37;40m[0m [1;30;44m [40m [47m [40m [2C[1;37;40m[0m -[1;30;44m [40m [47m [40m [2C[1;37;40mMandriva Linux Rescue Disk[0m +[1;30;44m [40m [47m [40m [2C[1;37;40mMageia Linux Rescue Disk[0m [1;30;44m [43m [30;47m [43m [40m [2C[1;37;40m[0m [1;30;44m [43m [47m [43m [40m [2C [1;30;44m [43m [47m [43m [40m[2C @@ -24,5 +24,7 @@ Use [1;33;40mloadkeys[0m to change your keyboard layout (eg: loadkeys fr) Use [1;33;40mmodprobe[0m to load modules (eg: modprobe snd-card-fm801) Use [1;33;40mdrvinst[0m to install drivers according to detected devices Use [1;33;40mlsparts[0m to list your partitions with types +Use [1;33;40mstartssh[0m to start an ssh daemon Use [1;33;40mrescue-gui[0m to go back to the rescue menu +Use [1;33;40mgrabjournallogs[0m to grab the last 24 hours of journal logs diff --git a/rescue/tree/etc/passwd b/rescue/tree/etc/passwd index 568451e4e..c0274a116 100644 --- a/rescue/tree/etc/passwd +++ b/rescue/tree/etc/passwd @@ -1,3 +1,2 @@ -root::0:0::/:/bin/bash -shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown -halt:*:7:0:halt:/sbin:/sbin/halt +root::0:0::/root:/bin/bash +messagebus:x:1:1::/:/sbin/nologin diff --git a/rescue/tree/etc/profile b/rescue/tree/etc/profile index 3b5ac21cc..17f0700dc 100644 --- a/rescue/tree/etc/profile +++ b/rescue/tree/etc/profile @@ -1,12 +1,12 @@ # /etc/profile -# (c) Mandrakesoft, Chmouel Boudjnah <chmouel@mandrakesoft.com> +# (c) Mandrakesoft, Chmouel Boudjnah <chmouel> # System wide environment and startup programs # Functions and aliases go in /etc/bashrc PROFILE_LOADED=1 -export PATH=/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin +PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sbin:/mnt/bin:/mnt/usr/sbin:/mnt/usr/bin PS1="[root@rescue \w]\\$ " ls () { /bin/ls --color=auto -F "$@";} diff --git a/rescue/tree/etc/rc.reboot b/rescue/tree/etc/rc.reboot deleted file mode 100755 index 0b67416f1..000000000 --- a/rescue/tree/etc/rc.reboot +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -sleep 1 -/sbin/killall5 -9 - -umount -a -f -t noproc - -reboot -i -d diff --git a/rescue/tree/etc/rc.sysinit b/rescue/tree/etc/rc.sysinit deleted file mode 100755 index e6da12ea0..000000000 --- a/rescue/tree/etc/rc.sysinit +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh - -action() { echo $1; shift; $*; } - -export PATH=/bin:/sbin:/usr/bin:/usr/sbin - -echo -e "\t\t\tWelcome to \\033[1;36mMandriva\\033[0;39m Linux" - -action "Remounting root filesystem in read-write mode" mount -n -o remount,rw / - -ln -s /tmp/stage2/etc/* /etc 2>/dev/null - -rm -f /dev ; cp -a /tmp/stage2/dev /dev - -mkdir -p /mnt /var/log - ->/etc/mtab -mount -f / -mount -f /proc - -# Set the hostname. -action "Setting hostname rescue" hostname rescue -echo rescue > /etc/HOSTNAME - -# Loads common modules ( no kerneld :( ) -echo "Loading additional modules..." -load() { modprobe $* 2>/dev/null; } -load ide-mod -load ide-probe -load ide-disk -load ide-cd -load floppy -load af_packet -load isofs -load vfat -load ext3 -load reiserfs -load xfs -load jfs -load loop -load sd_mod -load sr_mod - -/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0 -/sbin/route add 127.0.0.1 lo - -# disable the weird echoprt in cooked mode for user interaction: -stty sane - -#LANGUAGE (filled by make_rescue_img) - -grep -q noauto /proc/cmdline || drvinst SERIAL_USB - -if grep ka /proc/cmdline; then - echo Welcome to Ka rescue - drvinst - cd /ka - ./install.sh -fi - -if ! grep -q expert /proc/cmdline; then - rescue-gui -fi diff --git a/rescue/tree/ka/gen_modules_conf.pl b/rescue/tree/ka/gen_modules_conf.pl deleted file mode 100644 index ae6c5bec6..000000000 --- a/rescue/tree/ka/gen_modules_conf.pl +++ /dev/null @@ -1,191 +0,0 @@ -$kinds2all_modules = { - 'usb' => [ - 'usb-uhci', - 'usb-ohci', - 'ehci-hcd' - ], - 'network' => [ - '3c501', - '3c503', - '3c505', - '3c507', - '3c509', - '3c515', - '3c90x', - '82596', - 'abyss', - 'ac3200', - 'acenic', - 'aironet4500_card', - 'at1700', - 'atp', - 'com20020-pci', - 'cs89x0', - 'de600', - 'de620', - 'defxx', - 'depca', - 'dgrs', - 'dmfe', - 'e100', - 'e2100', - 'eepro', - 'eepro100', - 'eexpress', - 'epic100', - 'eth16i', - 'ewrk3', - 'hamachi', - 'hp', - 'hp-plus', - 'hp100', - 'ibmtr', - 'lance', - 'natsemi', - 'ne', - 'ne2k-pci', - 'ni5010', - 'ni52', - 'ni65', - 'nvnet', - 'olympic', - 'pcnet32', - 'plip', - 'rcpci', - 'sb1000', - 'sis900', - 'smc-ultra', - 'smc9194', - 'starfire', - 'tlan', - 'tmspci', - 'tulip', - 'via-rhine', - 'wd', - 'winbond-840', - 'forcedeth', - 'fealnx', - '3c990', - '3c990fx', - 'b44', - 'bcm4400', - 'skfp', - 'tc35815', - 'lanstreamer', - 'farsync', - 'sdladrv', - 'prism2_plx', - 'iph5526', - '3c59x', - '8139too', - '8139cp', - 'sundance', - 'catc', - 'CDCEther', - 'kaweth', - 'pegasus', - 'rtl8150', - 'usbnet', - 'dl2k', - 'myri_sbus', - 'yellowfin', - 'ns83820', - 'r8169', - 'tg3', - 'e1000', - 'sk98lin', - 'bcm5820', - 'bcm5700' - ], - 'scsi' => [ - '3w-xxxx', - 'AM53C974', - 'BusLogic', - 'NCR53c406a', - 'a100u2w', - 'advansys', - 'aha152x', - 'aha1542', - 'aha1740', - 'atp870u', - 'dc395x_trm', - 'dtc', - 'g_NCR5380', - 'in2000', - 'initio', - 'pas16', - 'pci2220i', - 'psi240i', - 'fdomain', - 'qla1280', - 'qla2x00', - 'qlogicfas', - 'qlogicfc', - 'seagate', - 'wd7000', - 'sim710', - 'sym53c416', - 't128', - 'tmscsim', - 'u14-34f', - 'ultrastor', - 'eata', - 'eata_pio', - 'eata_dma', - 'mptscsih', - 'nsp32', - 'ata_piix', - 'sata_promise', - 'sata_svw', - 'sata_via', - '53c7,8xx', - 'aic7xxx', - 'aic7xxx_old', - 'aic79xx', - 'pci2000', - 'qlogicisp', - 'sym53c8xx', - 'lpfcdd', - 'DAC960', - 'dpt_i2o', - 'megaraid', - 'aacraid', - 'cciss', - 'cpqarray', - 'gdth', - 'i2o_block', - 'cpqfc', - 'qla2200', - 'qla2300', - 'pdc-ultra', - 'ips', - 'ppa', - 'imm' - ] - }; -my @l = map { /^(\S+)\s*:/ ? $1 : () } `lspcidrake`; - -my %kinds2modules = map { - $_ => [ intersection(\@l, $kinds2all_modules->{$_}) ]; -} qw(usb scsi); - -$kinds2modules{network} = [ - grep { - my $l = $_; - scalar grep { $_ eq $l } @{ $kinds2all_modules->{network} } - } @l -]; - -if (my @scsi = @{$kinds2modules{scsi}}) { - print "probeall scsi_hostadapter ", join(" ", @scsi), "\n"; -} -if (my @usb = @{$kinds2modules{usb}}) { - print "probeall usb-interface ", join(" ", @usb), "\n"; -} -my $eth = 0; -foreach (@{$kinds2modules{network}}) { - print "alias eth$eth $_\n"; - $eth++; -} - -sub intersection { my (%l, @m); @l{@{shift @_}} = (); foreach (@_) { @m = grep { exists $l{$_} } @$_; %l = (); @l{@m} = () } keys %l } diff --git a/rescue/tree/ka/hostnames b/rescue/tree/ka/hostnames deleted file mode 100644 index e30fac24a..000000000 --- a/rescue/tree/ka/hostnames +++ /dev/null @@ -1,225 +0,0 @@ -icluster1 129.88.96.1 -icluster2 129.88.96.2 -icluster3 129.88.96.3 -icluster4 129.88.96.4 -icluster5 129.88.96.51 -icluster6 129.88.96.6 -icluster7 129.88.96.7 -icluster8 129.88.96.8 -icluster9 129.88.96.9 -icluster10 129.88.96.10 -icluster11 129.88.96.11 -icluster12 129.88.96.12 -icluster13 129.88.96.13 -icluster14 129.88.96.14 -icluster15 129.88.96.15 -icluster16 129.88.96.16 -icluster17 129.88.96.17 -icluster18 129.88.96.18 -icluster19 129.88.96.19 -icluster20 129.88.96.20 -icluster21 129.88.96.21 -icluster22 129.88.96.22 -icluster23 129.88.96.23 -icluster24 129.88.96.24 -icluster25 129.88.96.25 -icluster26 129.88.96.26 -icluster27 129.88.96.27 -icluster28 129.88.96.28 -icluster29 129.88.96.29 -icluster30 129.88.96.30 -icluster31 129.88.96.31 -icluster32 129.88.96.32 -icluster33 129.88.96.33 -icluster34 129.88.96.34 -icluster35 129.88.96.35 -icluster36 129.88.96.36 -icluster37 129.88.96.37 -icluster38 129.88.96.38 -icluster39 129.88.96.39 -icluster40 129.88.96.40 -icluster41 129.88.96.41 -icluster42 129.88.96.42 -icluster43 129.88.96.43 -icluster44 129.88.96.44 -icluster45 129.88.96.45 -icluster46 129.88.96.46 -icluster47 129.88.96.47 -icluster48 129.88.96.48 -icluster49 129.88.96.49 -icluster50 129.88.96.50 -icluster51 129.88.96.51 -icluster52 129.88.96.52 -icluster53 129.88.96.53 -icluster54 129.88.96.54 -icluster55 129.88.96.55 -icluster56 129.88.96.56 -icluster57 129.88.96.57 -icluster58 129.88.96.58 -icluster59 129.88.96.59 -icluster60 129.88.96.60 -icluster61 129.88.96.61 -icluster62 129.88.96.62 -icluster63 129.88.96.63 -icluster64 129.88.96.64 -icluster65 129.88.96.65 -icluster66 129.88.96.66 -icluster67 129.88.96.67 -icluster68 129.88.96.68 -icluster69 129.88.96.69 -icluster70 129.88.96.70 -icluster71 129.88.96.71 -icluster72 129.88.96.72 -icluster73 129.88.96.73 -icluster74 129.88.96.74 -icluster75 129.88.96.75 -icluster76 129.88.96.76 -icluster77 129.88.96.77 -icluster78 129.88.96.78 -icluster79 129.88.96.79 -icluster80 129.88.96.80 -icluster81 129.88.96.81 -icluster82 129.88.96.82 -icluster83 129.88.96.83 -icluster84 129.88.96.84 -icluster85 129.88.96.85 -icluster86 129.88.96.86 -icluster87 129.88.96.87 -icluster88 129.88.96.88 -icluster89 129.88.96.89 -icluster90 129.88.96.90 -icluster91 129.88.96.91 -icluster92 129.88.96.92 -icluster93 129.88.96.93 -icluster94 129.88.96.94 -icluster95 129.88.96.95 -icluster96 129.88.96.96 -icluster97 129.88.96.97 -icluster98 129.88.96.98 -icluster99 129.88.96.99 -icluster100 129.88.96.100 -icluster101 129.88.96.101 -icluster102 129.88.96.102 -icluster103 129.88.96.103 -icluster104 129.88.96.104 -icluster105 129.88.96.105 -icluster106 129.88.96.106 -icluster107 129.88.96.107 -icluster108 129.88.96.108 -icluster109 129.88.96.109 -icluster110 129.88.96.110 -icluster111 129.88.96.111 -icluster112 129.88.96.112 -icluster113 129.88.96.113 -icluster114 129.88.96.114 -icluster115 129.88.96.115 -icluster116 129.88.96.116 -icluster117 129.88.96.117 -icluster118 129.88.96.118 -icluster119 129.88.96.119 -icluster120 129.88.96.120 -icluster121 129.88.96.121 -icluster122 129.88.96.122 -icluster123 129.88.96.123 -icluster124 129.88.96.124 -icluster125 129.88.96.125 -icluster126 129.88.96.126 -icluster127 129.88.96.127 -icluster128 129.88.96.128 -icluster129 129.88.96.129 -icluster130 129.88.96.130 -icluster131 129.88.96.131 -icluster132 129.88.96.132 -icluster133 129.88.96.133 -icluster134 129.88.96.134 -icluster135 129.88.96.135 -icluster136 129.88.96.136 -icluster137 129.88.96.137 -icluster138 129.88.96.138 -icluster139 129.88.96.139 -icluster140 129.88.96.140 -icluster141 129.88.96.141 -icluster142 129.88.96.142 -icluster143 129.88.96.143 -icluster144 129.88.96.144 -icluster145 129.88.96.145 -icluster146 129.88.96.146 -icluster147 129.88.96.147 -icluster148 129.88.96.148 -icluster149 129.88.96.149 -icluster150 129.88.96.150 -icluster151 129.88.96.151 -icluster152 129.88.96.152 -icluster153 129.88.96.153 -icluster154 129.88.96.154 -icluster155 129.88.96.155 -icluster156 129.88.96.156 -icluster157 129.88.96.157 -icluster158 129.88.96.158 -icluster159 129.88.96.159 -icluster160 129.88.96.160 -icluster161 129.88.96.161 -icluster162 129.88.96.162 -icluster163 129.88.96.163 -icluster164 129.88.96.164 -icluster165 129.88.96.165 -icluster166 129.88.96.166 -icluster167 129.88.96.167 -icluster168 129.88.96.168 -icluster169 129.88.96.169 -icluster170 129.88.96.170 -icluster171 129.88.96.171 -icluster172 129.88.96.172 -icluster173 129.88.96.173 -icluster174 129.88.96.174 -icluster175 129.88.96.175 -icluster176 129.88.96.176 -icluster177 129.88.96.177 -icluster178 129.88.96.178 -icluster179 129.88.96.179 -icluster180 129.88.96.180 -icluster181 129.88.96.181 -icluster182 129.88.96.182 -icluster183 129.88.96.183 -icluster184 129.88.96.184 -icluster185 129.88.96.185 -icluster186 129.88.96.186 -icluster187 129.88.96.187 -icluster188 129.88.96.188 -icluster189 129.88.96.189 -icluster190 129.88.96.190 -icluster191 129.88.96.191 -icluster192 129.88.96.192 -icluster193 129.88.96.193 -icluster194 129.88.96.194 -icluster195 129.88.96.195 -icluster196 129.88.96.196 -icluster197 129.88.96.197 -icluster198 129.88.96.198 -icluster199 129.88.96.199 -icluster200 129.88.96.200 -icluster201 129.88.96.201 -icluster202 129.88.96.202 -icluster203 129.88.96.203 -icluster204 129.88.96.204 -icluster205 129.88.96.205 -icluster206 129.88.96.206 -icluster207 129.88.96.207 -icluster208 129.88.96.208 -icluster209 129.88.96.209 -icluster210 129.88.96.210 -icluster211 129.88.96.211 -icluster212 129.88.96.212 -icluster213 129.88.96.213 -icluster214 129.88.96.214 -icluster215 129.88.96.215 -icluster216 129.88.96.216 -icluster217 129.88.96.217 -icluster218 129.88.96.218 -icluster219 129.88.96.219 -icluster220 129.88.96.220 -icluster221 129.88.96.221 -icluster222 129.88.96.222 -icluster223 129.88.96.223 -icluster224 129.88.96.224 -icluster225 129.88.96.225 diff --git a/rescue/tree/ka/install.sh b/rescue/tree/ka/install.sh deleted file mode 100755 index ee93c1e19..000000000 --- a/rescue/tree/ka/install.sh +++ /dev/null @@ -1,641 +0,0 @@ -#!/bin/bash - -# this script is run by at startup on the nfs_root system, and runs the ka-deploy client -# it also updates the 'step file' on the tftp server - -# $Revision$ -# $Author$ -# $Date$ -# $Header$ -# $Id$ -# $Log$ -# Revision 1.4 2005/08/28 21:38:32 oblin -# ka support (initially from Antoine Ginies and Erwan Velu) -# -# Revision 1.1.2.5 2003/06/17 06:34:33 erwan -# Removing remaining dchp cache for KA -# -# Revision 1.1.2.4 2003/06/11 18:04:28 erwan -# Fixing mkreiserfs call -# -# Revision 1.1.2.3 2002/11/07 15:10:52 erwan -# SCSI support now activated -# -# Revision 1.1.2.2 2002/11/05 15:49:13 erwan -# added some files -# -# Revision 1.1.2.1 2002/11/05 11:16:54 erwan -# added ka tools in rescue -# -# Revision 1.6 2001/12/03 16:28:02 sderr -# Completely new install script -# -# Revision 1.5 2001/10/10 13:55:04 sderr -# Updates in documentation -# -# Revision 1.4 2001/06/29 09:31:45 sderr -# *** empty log message *** -# -# Revision 1.3 2001/05/31 08:51:43 sderr -# scripts/doc update to match new command-line syntax -# -# Revision 1.2 2001/05/03 12:34:41 sderr -# Added CVS Keywords to most files. Mostly useless. -# -# $State$ - -# This script is provided as an exmaple and should probably not be run as is - - -unset LANG -unset LANGUAGE - -# needed for some for i in foo* loops -shopt -s nullglob - -bash < /dev/tty2 >/dev/tty2 2>&1 & - -# IDEA : maybe this option could be overriden by a kaopt= in the kernel command line ? -KA_SESSION_BASE="-s kainstall" - -ka_call_num=0 - -inc_ka_session() -{ - (( ka_call_num++ )) - cur_ka_session=$KA_SESSION_BASE$ka_call_num -} - - -# testing ? -- NOT FULLY IMPLEMENTED !!!!!!!!!!!!!!!!!!!! -#DONTWRITE=yes -DONTWRITE=no - -# Let's find out what our IP is -ip=`/sbin/ifconfig | grep -v 127.0.0.1 | grep "inet addr" | sed 's/^.*inet addr:\([^ ]*\) .*$/\1/g' | head -n 1` - -# the file tftpserver should contain the name of the .. tftpserver -server=`cat tftpserver` - - -# reverse a file -tac() -{ - awk '{ x[NR] = $0 } END { for (i = NR; i >= 1; i--) print x[i] }' -} - -# run a command, hide its output and print OK if it suceeds, print FAILED and show the output otherwise. -runcom() -{ - echo -n "$1..." 1>&2 - shift; - out=`"$@" 2>&1` - ret=$? - if [ $ret -eq 0 ]; then - echo $C_S"OK"$C_N 1>&2 - else - echo $C_F"Failed"$C_N 1>&2 - echo $C_W"$out"$C_N 1>&2 - fi - return $ret - -} - -# 5 4 3 2 1 zero ignition -countdown() -{ - t=$1 - while [ "$t" -ne 0 ]; do - echo -n "$t " - sleep 1 - # move the cursor back - # I use now tr instead of sed because busybox's sed adds a non-wanted carriage return - # busybox's tr does not seem to know about the [: :] stuff (?) - echo -n "$t " | tr " 0-9" $'\x08' - (( t-- )) - done - # backspace only moves the cursor back, so at this point there's still a "1" to erase - if [ "$1" -ne 0 ] ;then - echo -n " "$'\x08\x08' - fi -} - - -int_shell() -{ - echo $C_H"starting an interactive shell"$C_N - exec /bin/bash -} - -fail() -{ - echo $* - echo $C_F"--- The installation program FAILED ---"$C_N - echo "Check your configuration -- try to read previous error messages" - echo "This machine is going to reboot (Ctrl-S to block it) (Ctrl-C for an interactive shell)" - trap int_shell SIGINT - countdown 30 - do_reboot -} - -do_reboot() -{ - reboot - sleep 1234567 # do not continue the install script (/sbin/reboot does not block) -} - - - -# ahem this LILO function should be fixed someday -# right now this function assumes there is a properly configured lilo on the duplicated linux system -do_lilo() -{ - - -chroot /mnt/disk << EOF -lilo -EOF - - -} - - -run_chroot_command() -{ - - /usr/sbin/chroot /mnt/disk $* - -} - - -log() -{ - echo $* 1>&2 - echo $* >> /tmp/ginstlog -} - -# version for the standard tftp client -std_tftp_put_file() -{ - remotef=$2 - localf=$1 - err=`echo put $localf $remotef | tftp $server 2>&1` - err=`echo $err | grep Sent` - if [ -z "$err" ]; then - log tftp error: could not get/put file - return 1 - fi - return 0 -} - -# version for the tftp client built in busybox -busybox_tftp_put_file() -{ - remotef=$2 - localf=$1 - err=`tftp -p -l $localf -r $remotef $server 2>&1` - if [ $? -ne 0 ]; then - log tftp error: could not get/put file $err - return 1 - fi - return 0 -} - - -busybox_tftp_get_file() -{ - remotef=$1 - localf=$2 - err=`tftp -g -l $localf -r $remotef $server 2>&1` - if [ $? -ne 0 ]; then - log tftp error: could not get/put file $err - return 1 - fi - return 0 -} - - -std_tftp_get_file() -{ - remotef=$1 - localf=$2 - err=`echo get $remotef $localf | tftp $server 2>&1` - err=`echo $err | grep Received` - if [ -z "$err" ]; then - echo tftp error: could not get/put file - return 1 - fi - return 0 -} - -tftp_get_file() -{ - busybox_tftp_get_file "$@" -} - -tftp_put_file() -{ - busybox_tftp_put_file "$@" -} - -# write a string ($2) in a remote file ($1) -tftp_put_in() -{ - echo "$2" > $temp - err=`echo put $temp "$1" | tftp $server 2>&1` - rm -f $temp - err=`echo $err | grep Sent` - if [ -z "$err" ]; then - log tftp error: could not get/put file - return 1 - fi - return 0 -} - -get_var_bis() -{ - while read a; do - echo "$a" | grep -s -q "^ *#.*" - if [ $? -eq 0 ]; then - continue - fi - val=`echo "$a" | sed 's/[^"]*"\(.*[^\\]\)".*/\1/'` - var=`echo "$a" | sed 's/[^"]*".*[^\\]" *\$\([^ ]*\)/\1/'` - if [ "$var" = "$1" ]; then - echo $val - return 0 - fi - done - return 1 -} - -# fetch variable $2 from file $1 -get_var() -{ - (cat $1; echo) | get_var_bis $2 -} - -# find the current step in the kernel command line -get_step() -{ - step=install -# step=`cat /proc/cmdline | sed 's/.*kastep=\([^ ]*\).*/\1/'` - if [ "$step" ]; then - echo $step > /tmp/step - return 0 - fi - return 1 -} - - -# write a new file on the tftp server -# this file is a pxelinux config file -# do this by getting the 'template file' and adding a DEFAULT at the beginning -set_step() -{ - step=$1 - - - runcom "Getting template file" tftp_get_file "ka/pxelinux.cfg/template" /tmp/template || return 1 - - echo DEFAULT $step > /tmp/newcfg - cat /tmp/template >> /tmp/newcfg - - runcom "Sending back new pxelinux config file" tftp_put_file /tmp/newcfg "ka/pxelinux.cfg/IP/$ip" || return 1 - - return 0 -} - - - -# the mount_partition calls must be done in the same shell (NOT a subshell) because the global variable below has to be updated -# idea : maybe use a file instead of this variable (and since the tac function now exists, why not ?) -mounted_fs="" - -# mount a partition UNDER /disk !!! (/disk is prepended to $2) -mount_partition() -{ - dev=$1 - point=$2 - - echo -n "Mounting $C_H$1$C_N as /mnt/disk$C_H$point$C_N" - mkdir -p /mnt/disk$point - test -d /mnt/disk$point || return 1 - runcom "..." mount $dev /mnt/disk/$point || return 1 - mounted_fs="$dev $mounted_fs" - return 0 -} - -# umount all mounted partitions under /disk, in the reverse order -umount_partitions() -{ - for dev in $mounted_fs; do - retries=0 - while ! runcom "Umounting $dev" umount $dev ; do - sleep 3 - (( retries++ )) - if [ $retries -gt 3 ]; then - echo Failed too many times. giving up. - break - fi - done - done -} - - -# recreate excluded directories -# read stdin like this : u=rwx g=rwx o=rwx uid gid filename -recreate_dirs() -{ - while read line; do - declare -a fields - fields=( $line ) - file=/mnt/disk/${fields[5]} -# echo $file -# note : it is possible that the directory exists already, if it was a mount point -# we need to set the permissions/users anyway - mkdir -p $file -# echo chmod ${fields[0]},${fields[1]},${fields[2]} $file - chmod ${fields[0]},${fields[1]},${fields[2]} $file - # argl !! chmod o+t does not work with busybox's chmod ! - # we have to handle it alone - if echo ${fields[2]} | grep -q t; then - chmod +t $file - fi - chown ${fields[3]}.${fields[4]} $file - done -} - -make_partitions() -{ - # we must be in the partfiles directory - for file in partition_tab*; do - drive=`echo $file | sed 's/partition_tab//'` - cat $file | runcom "Writing partition table for $drive using sfdisk" /sbin/sfdisk /dev/$drive -uS --force || fail "error with sfdisk" - done - - for file in fdisk_commands*; do - drive=`echo $file | sed 's/fdisk_commands//'` - runcom "Cleaning hard drive" dd if=/dev/zero of=/dev/$drive bs=1M count=5 || fail "Can t clean drive$drive" - cat $file | runcom "Writing partition table for $drive using fdisk" fdisk /dev/$drive || fail "error with fdisk" - done - -} -checkDevEntries() -{ - if ! test -r /mnt/disk/dev/hda ; then - (cd /dev && tar c *) | (cd /mnt/disk/dev && tar x) - fi -} - -write_MBRs() -{ -# we must be in the partfiles directory also - for file in MBR*; do - drive=`echo $file | sed 's/MBR//'` - runcom "Writing new MBR for $drive" dd if=$file of=/dev/$drive bs=1 count=446 - done -} - - -# Colors -# Success -C_S=$'\033[1;32m' -# Failure -C_F=$'\033[1;31m' -# Warning -C_W=$'\033[1;33m' -# Normal -C_N=$'\033[0;39m' -# Hilight -C_H=$'\033[1;39m' - - -# Clear screen, fancy startup message. -echo $'\033'[2J$'\033'[H -echo "------| $C_H"Ka"$C_N |---- Install starting..." - -temp=/tmp/ginst - -# activate dma ? -- obsolete stuff I think -# runcom "Setting HD optimizations" hdparm -c1 -d1 -K1 $HD - -delay=0 - -if ! runcom "Getting step name" get_step; then - echo "Error: Could not get current step " - fail -else - step=`cat /tmp/step` -fi - -echo Next Server is `cat /ka/tftpserver` - -echo Current step for $ip is : \"$C_H$step$C_N\" - -echo -n "Finding install type : " -case $step in - shell) - echo No install, but interactive shell - ## drop the user to an interactive shell - exec /bin/bash - ;; - install) - install_type=install - nextstep=ready - echo Install Linux - ;; - test_install) - install_type=test_install - nextstep=ready - echo TEST TEST TEST - countdown 10 - echo Install Linux TEST - ;; -esac - - -if [ -z "$install_type" ]; then - echo FATAL : Could not recognize this step name - echo "Aborting... " - fail -fi - - - -# receive the partition table, fstab, etc from the source node -mkdir /tmp/partfiles -inc_ka_session -echo Current session is $cur_ka_session -runcom "Receiving partitions information" /ka/ka-d-client -w $cur_ka_session -e "( cd /tmp/partfiles && tar xvf - )" || fail - - - - -cd /tmp/partfiles -make_partitions - - -test -f /tmp/partfiles/streams || fail "Missing streams file" -first_stream=`cat /tmp/partfiles/streams | head -n 1` - -if [ "$first_stream" = linux ]; then - rcv_linux=yes -else - rcv_linux=no -fi - - - -#if we must receive a linux system, we need to format and mount the partitions -if [ $rcv_linux = yes ]; then - # format partitions - format_partitions() - { - while read line; do - declare -a fields - fields=( $line ) - - case ${fields[2]} in - reiserfs ) - runcom "Formatting ${fields[0]} as reiserfs" mkreiserfs -f ${fields[0]} || fail - ;; - jfs ) - runcom "Formatting ${fields[0]} as jfs" mkfs.jfs ${fields[0]} || fail - ;; - - xfs ) - runcom "Formatting ${fields[0]} as xfs" mkfs.xfs -f ${fields[0]} || fail - ;; - ext3 ) - runcom "Formatting ${fields[0]} as ext3" mkfs.ext2 -j ${fields[0]} || fail - ;; - ext2 ) - runcom "Formatting ${fields[0]} as ext2" mkfs.ext2 ${fields[0]} || fail - ;; - swap ) - runcom "Formatting ${fields[0]} as swap" mkswap ${fields[0]} || fail - ;; - esac - done - } - - format_partitions < /tmp/partfiles/pfstab - - - # mount the partitions - - mount_partitions() - { - while read line; do - declare -a fields - fields=( $line ) - - case ${fields[2]} in - reiserfs ) - mount_partition ${fields[0]} ${fields[1]} || fail - ;; - xfs ) - mount_partition ${fields[0]} ${fields[1]} || fail - ;; - jfs ) - mount_partition ${fields[0]} ${fields[1]} || fail - ;; - ext3 ) - mount_partition ${fields[0]} ${fields[1]} || fail - ;; - ext2 ) - mount_partition ${fields[0]} ${fields[1]} || fail - ;; - esac - done - } - - # NOTE - # I replaced cat truc | mount_partitions by mount_partitions < truc - # because in the former case mount_partitions runs in a subshell and the $mounted_fs value is lost - mount_partitions < /tmp/partfiles/pfstab - - echo ++++++++++++++++++++++++++ - mount - echo ++++++++++++++++++++++++++ - - delay=0 -else - delay=10 -fi - -if [ $DONTWRITE != yes ]; then - for stream in `cat /tmp/partfiles/streams`; do - if [ "$stream" = "linux" ]; then - # partitions already formatted/mounted, just copy now - # untar data from the master 'on the fly' - echo -n "Linux copy is about to start " - countdown $delay - echo - inc_ka_session - /ka/ka-d-client -w $cur_ka_session -e "(cd /mnt/disk; tar --extract --read-full-records --same-permissions --numeric-owner --sparse --file - ) 2>/dev/null" || fail - - runcom "Syncing disks" sync - echo Linux copy done. - echo Creating excluded directories - cat /tmp/partfiles/excluded | recreate_dirs - #echo Setting up networking - #/ka/setup_network.sh - #delay=10 - else - # maybe receive some raw partition dumps - echo Raw copy of $stream is about to start - countdown $delay - inc_ka_session - /ka/ka-d-client -w $cur_ka_session -e "dd of=$stream bs=65536" || fail - delay=10 - fi - done - - echo "Removing computing interfaces" - rm -f /mnt/disk/etc/sysconfig/network-scripts/ifcfg-eth1 >/dev/null 2>&1 - - echo "Removing duplicated dhcp cache" - rm -f /mnt/disk/etc/dhcpc/* >/dev/null 2>&1 - - echo "Writing modules.conf" - /usr/bin/perl /ka/gen_modules_conf.pl >/mnt/disk/etc/modules.conf - - echo "Writing modprobe.conf" - chroot /mnt/disk/ /sbin/generate-modprobe.conf >/mnt/disk/etc/modprobe.conf - - echo "Running mkinitrd" - /ka/make_initrd - - cd /tmp/partfiles - write_MBRs - - - if test -f /tmp/partfiles/command; then - checkDevEntries - command_to_run=`cat /tmp/partfiles/command` - runcom "Running $command_to_run" run_chroot_command "$command_to_run" - fi - -else - echo " I would run ka-deploy(s) and then lilo/mbr " - sleep 1 -fi - -# maybe there is a last dummy ka-deploy for synchronization -if test -f /tmp/partfiles/delay; then - sleep 1 - inc_ka_session - runcom "Waiting source node signal to end installation" /ka/ka-d-client -w $cur_ka_session -e "cat" || fail -fi - -umount_partitions - - -# Update the step file on the tftp server -#runcom 'Sending back new $step' set_step $nextstep || fail - -echo -n Rebooting... -countdown 3 -do_reboot diff --git a/rescue/tree/ka/ka-d-client b/rescue/tree/ka/ka-d-client Binary files differdeleted file mode 100755 index 1ae4fa703..000000000 --- a/rescue/tree/ka/ka-d-client +++ /dev/null diff --git a/rescue/tree/ka/make_initrd b/rescue/tree/ka/make_initrd deleted file mode 100755 index 8f8a0492d..000000000 --- a/rescue/tree/ka/make_initrd +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -echo Looking for default kernel -CHROOT=/mnt/disk -IMG=`cat $CHROOT/etc/lilo.conf | grep default | cut -d "=" -f 2 | sed -e 's/\"//g'` -KERN="x" -INITRD="" -LABEL="x" - -modprobe loop - -for i in `cat $CHROOT/etc/lilo.conf`; do - - if echo $i | grep image >/dev/null; then - KERN=$CHROOT`echo $i | cut -d "=" -f 2` - INITRD="" - LABEL="x" - fi - if echo $i | grep label >/dev/null; then - LABEL=`echo $i | cut -d "=" -f 2 | sed -e 's/\"//g'` - fi - if echo $i | grep initrd >/dev/null; then - INITRD=`echo $i | cut -d "=" -f 2` - fi - if [ ${LABEL} == ${IMG} ] && [ ! -z ${INITRD} ]; then - echo "Kernel name is $KERN" - echo "Initrd name is $INITRD" - KERN_VERSION=`/usr/bin/strings $KERN | grep "^2\.[2.6]"| cut -d " " -f 1` - if [ -z $KERN_VERSION ]; then - echo "No kernel version found !" - fi - chroot $CHROOT mount /proc - mount /dev/ $CHROOT/dev -o bind -# chroot $CHROOT MAKEDEV loop -# chroot $CHROOT MAKEDEV fd -# chroot $CHROOT MAKEDEV hd -# chroot $CHROOT MAKEDEV sd -# chroot $CHROOT MAKEDEV md -# chroot $CHROOT MAKEDEV zero - chroot $CHROOT /sbin/mkinitrd -f $INITRD $KERN_VERSION - umount $CHROOT/dev - chroot $CHROOT umount /proc - exit - fi -done diff --git a/rescue/tree/ka/setup_network.sh b/rescue/tree/ka/setup_network.sh deleted file mode 100755 index 9ef6992bd..000000000 --- a/rescue/tree/ka/setup_network.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -# this script setups the network on the cloned system -# puts a correct hostname -# changes the IP if static -- for only ONE device (dunno what will happen with multiple NICs) -# needs the file /ka/hostnames - - -curdir=`pwd` - - -ip=`/sbin/ifconfig | /bin/grep -v 127.0.0.1 | /bin/grep "inet addr" | /bin/sed 's/^.*inet addr:\([^ ]*\) .*$/\1/g'` -oldip=$ip -ip=`echo $ip | sed -e 's/\./_/g'` -echo -n "Setting hostname: " -/bin/hostname $ip - - -# current hostname has been set up in rc.sysinit -ip=$oldip -echo My IP is $ip -cd /ka - -# the sed command will remove unwanted spaces -########################## -# HOSTNMAE already set on NODE -############################ -#if test -f hostnames ; then -# myname=`/bin/cat hostnames | /bin/sed -e 's/ / /g' -e 's/ *$//' | /bin/grep " $ip\$" | /bin/cut -d ' ' -f 1` -# nbfound=`echo "$myname" |/usr/bin/wc -l` -#fi## -# -#if [ $nbfound -ne 1 ] || [ -z "$myname" ]; then -# # try DNS -# echo IP not found in /ka/hostnames, Trying DNS -# myname=`/usr/bin/host $ip | /bin/grep "domain name" | /bin/cut -d " " -f 5 | /bin/sed 's/\.$//g' ` -# myname=`nslookup $ip | grep ^Name: | tail -n +2 | head -n 1 | sed 's/Name: *//'` -#fi -# -#if [ -z "$myname" ]; then -# myname=`/bin/hostname` -# echo WARNING:HOSTNAME NOT FOUND -#fi -# -#echo My hostname is $myname - -# change hostname in the network file -#old=/mnt/disk/etc/sysconfig/network.beforeka -#new=/mnt/disk/etc/sysconfig/network - -#rm -f "$old" -#mv "$new" "$old" -#/bin/cat "$old" | /bin/grep -v ^HOSTNAME= > "$new" -#echo "HOSTNAME=$myname" >> "$new" -###################### -## -###################### - - - - -# assume first NIC is the gatewaydev (right ? wrong ?) -#firstnic=`grep ^GATEWAYDEV "$new" | cut -d = -f 2 | tr -d \"` -#echo GATEWAYDEV=$firstnic - -# see if IP has to be written -#proto=`grep ^BOOTPROTO /mnt/disk/etc/sysconfig/network-scripts/ifcfg-$firstnic | cut -d = -f 2 | tr -d \"` -#echo PROTO=$proto -#if [ "$proto" != "dhcp" ]; then -# # proto is static, write the new IP in the config file -# old=/mnt/disk/etc/sysconfig/network-scripts/ifcfg-$firstnic.beforeka -# new=/mnt/disk/etc/sysconfig/network-scripts/ifcfg-$firstnic -# -# rm -f "$old" -# mv "$new" "$old" -# cat "$old" | grep -v ^IPADDR= > "$new" -# echo IPADDR=$ip >> "$new" -#fi - -cd $curdir diff --git a/rescue/tree/ka/tftpserver b/rescue/tree/ka/tftpserver deleted file mode 100644 index deed6748f..000000000 --- a/rescue/tree/ka/tftpserver +++ /dev/null @@ -1 +0,0 @@ -192.168.200.10 diff --git a/rescue/tree/sbin/fakeshutdown b/rescue/tree/sbin/fakeshutdown deleted file mode 100755 index 3511020ff..000000000 --- a/rescue/tree/sbin/fakeshutdown +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/perl - -# -# Guillaume Cottenceau (gc@mandrakesoft.com) -# -# Copyright 2001 Mandrakesoft -# -# This software may be freely redistributed under the terms of the GNU -# public license. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# - -sub cat_ { local *F; open F, $_[0] or $_[1] ? die "cat of file $_[0] failed: $!\n" : return; my @l = <F>; wantarray ? @l : join '', @l } - -print "\n"; - - -#- try to umount as much as possible; uses Pixel's ultra optimized algo (let you guess how it works..) -print "Umounting:\n"; -my @mounts = cat_('/proc/mounts'); -my $something_moved; -do { - $something_moved = 0; - foreach (@mounts) { - my $where = (split)[1]; - next if $where eq '/'; #- ouch! umounting the ramdisk on / always succeeds, and makes it becoming ro :-( - if (!system("umount $where 2>/dev/null")) { - print "\t$where\n"; - $something_moved++; - } - } -} while $something_moved; - - -#- shutdown with init -exec '/sbin/init', 6; diff --git a/rescue/tree/sbin/modprobe b/rescue/tree/sbin/modprobe deleted file mode 100755 index b8d6aecb2..000000000 --- a/rescue/tree/sbin/modprobe +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/perl - -sub cat_ { local *F; open F, $_[0] or $_[1] ? die "cat of file $_[0] failed: $!\n" : return; my @l = <F>; wantarray ? @l : join '', @l } - -sub read_already_loaded() { - foreach (cat_("/proc/modules")) { - my ($name) = split; - $conf{$name}{loaded} = 1; - } -} - -sub load_deps($) { - my ($file) = @_; - - local *F; - open F, $file or warn "error opening $file: $!\n", return 0; - foreach (<F>) { - my ($f, $deps) = split ':'; - push @{$deps{$f}}, split ' ', $deps; - } -} - -my $module_extension = cat_('/proc/version') =~ /^Linux version 2.4/ ? '.o' : '.ko'; - -my %mappings = ("usb-ohci" => "ohci-hcd", - "usb-uhci" => "uhci-hcd", - "uhci" => "uhci-hcd", - "printer" => "usblp", - "bcm4400" => "b44", - "3c559" => "3c359", - "3c90x" => "3c59x", - "dc395x_trm" => "dc395x", - "audigy" => "snd-emu10k1"); - -sub load { - my ($name, @options) = @_; - $name =~ s/\.k?o$//; - - $name = $mappings{$name} || $name; #- 2.4 -> 2.6 compat mappings - - $conf{$name}{loaded} and return; - eval { load($_, 'prereq') } foreach @{$deps{$name}}; - - system("gzip -dc /modules/$name$module_extension.gz > /tmp/$name$module_extension"); - -r "/tmp/$name$module_extension" or die "can't find module $name\n"; - system("/sbin/insmod /tmp/$name$module_extension"); - my $retval = $?; - system("rm /tmp/$name$module_extension"); - $retval and die("insmod $name failed"); -} - -!@ARGV || $ARGV[0] =~ /^-?-h/ and die "usage: modprobe <module> [<options...>]\n"; - -read_already_loaded(); -load_deps("/modules/modules.dep"); -load(@ARGV); diff --git a/rescue/tree/bin/login b/rescue/tree/usr/bin/login index 4b2816926..4b2816926 100755 --- a/rescue/tree/bin/login +++ b/rescue/tree/usr/bin/login diff --git a/rescue/tree/usr/bin/mageia-rescue b/rescue/tree/usr/bin/mageia-rescue new file mode 100755 index 000000000..7d8bb5135 --- /dev/null +++ b/rescue/tree/usr/bin/mageia-rescue @@ -0,0 +1,42 @@ +#!/bin/sh + +# Uncomment for debugging: +# set -x + +systemctl start systemd-udevd +udevadm trigger --type=subsystems --action=add +udevadm trigger --type=devices --action=add + +# disable the weird echoprt in cooked mode for user interaction: +stty sane + +#LANGUAGE (filled by make_rescue_img) + +grep -q noauto /proc/cmdline || drvinst SERIAL_USB + +partimage_default_dir=/data/box +partimage_dir=`perl -lne 'print $1 if /BOX=(\S+)/' /proc/cmdline` +[ -z "$partimage_dir" ] && partimage_dir=$partimage_default_dir +partimage_server=`perl -lne 'print $1 if /\bpserver=(\S+)/' /proc/cmdline` + +LOOP="" +if grep -q save_all /proc/cmdline; then + partimage_whole_disk -s $partimage_server save_all $partimage_default_dir +elif grep -q rest_all /proc/cmdline; then + if [ -d /tmp/image$partimage_dir ]; then + partimage_whole_disk rest_all /tmp/image$partimage_dir + else + partimage_whole_disk -s $partimage_server rest_all $partimage_dir + fi +elif grep -q oem /proc/cmdline; then + /tmp/image/oem-rescue.sh +elif grep -q restore /proc/cmdline; then + /usr/sbin/restore-image.sh +elif ! grep -q expert /proc/cmdline; then + rescue-gui && LOOP=y +fi + +while [ "$LOOP" ]; do + bash --login + rescue-gui +done diff --git a/rescue/tree/usr/lib/CVS. b/rescue/tree/usr/lib/CVS. deleted file mode 100644 index e69de29bb..000000000 --- a/rescue/tree/usr/lib/CVS. +++ /dev/null diff --git a/rescue/tree/usr/lib/modules-load.d/mageia-rescue.conf b/rescue/tree/usr/lib/modules-load.d/mageia-rescue.conf new file mode 100644 index 000000000..9d9850baf --- /dev/null +++ b/rescue/tree/usr/lib/modules-load.d/mageia-rescue.conf @@ -0,0 +1,8 @@ +ide-gd_mod +ide-cd_mod +floppy +af_packet +loop +fuse +sd_mod +sr_mod diff --git a/rescue/tree/usr/lib/restore-image-lib.sh b/rescue/tree/usr/lib/restore-image-lib.sh new file mode 100755 index 000000000..3451f7be5 --- /dev/null +++ b/rescue/tree/usr/lib/restore-image-lib.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +TITLE="%s Installer" +BACKTITLE="%s" +MIN_DISKSIZE=5000000 + +debug="/dev/null" + +function _msgbox() +{ + dialog --timeout 60 --backtitle "$BACKTITLE" --title "$TITLE" --msgbox \ + "$1" 0 0 + + return $? +} + +function _infobox() +{ + dialog --backtitle "$BACKTITLE" --title "$TITLE" --sleep 2 \ + --infobox "$1" 0 0 + + return $? +} + +function _yesno() +{ + dialog --backtitle "$BACKTITLE" --title "$TITLE" \ + --yes-label "Yes" --no-label "No" --yesno "$1" 0 0 + + return $? +} + +function _mount() +{ + mount $1 $2 > $debug 2>&1 + + return $? +} + +function _umount() +{ + umount $1 > $debug 2>&1 + + return $? +} + +function _bind() +{ + mount --bind $1 $2 > $debug 2>&1 + + return $? +} + +function _eject() +{ + eject $1 > $debug 2>&1 + + return $? +} + +function _shutdown() +{ + [ -e /tmp/no-shutdown ] && exit + clear + sync + echo s > /proc/sysrq-trigger + echo o > /proc/sysrq-trigger + exit +} + +function _reboot() +{ + [ -e /tmp/no-shutdown ] && exit + clear + sync + echo s > /proc/sysrq-trigger + echo b > /proc/sysrq-trigger + exit +} + diff --git a/rescue/tree/usr/lib/systemd/system/rescue.service b/rescue/tree/usr/lib/systemd/system/rescue.service new file mode 100644 index 000000000..336e06c22 --- /dev/null +++ b/rescue/tree/usr/lib/systemd/system/rescue.service @@ -0,0 +1,20 @@ +[Unit] +Description=Mageia Rescue +DefaultDependencies=no +Conflicts=shutdown.target +After=sysinit.target plymouth-start.service +Before=shutdown.target + +[Service] +Environment=HOME=/ +WorkingDirectory=/ +ExecStartPre=-/bin/plymouth quit +ExecStart=/usr/bin/mageia-rescue +ExecStopPost=-/usr/bin/systemctl --fail --no-block reboot +Type=idle +StandardInput=tty-force +StandardOutput=inherit +StandardError=inherit +KillMode=process +IgnoreSIGPIPE=no +SendSIGHUP=yes diff --git a/rescue/tree/usr/lib/systemd/system/systemd-udevd.service.d/dracut-rules.conf b/rescue/tree/usr/lib/systemd/system/systemd-udevd.service.d/dracut-rules.conf new file mode 100644 index 000000000..b75df2e4e --- /dev/null +++ b/rescue/tree/usr/lib/systemd/system/systemd-udevd.service.d/dracut-rules.conf @@ -0,0 +1 @@ +ExecStartPre=-/usr/bin/rm -f /etc/udev/rules.d/10-console.rules diff --git a/rescue/tree/usr/sbin/diskdrake-resize b/rescue/tree/usr/sbin/diskdrake-resize new file mode 100755 index 000000000..88372aac7 --- /dev/null +++ b/rescue/tree/usr/sbin/diskdrake-resize @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +use lib qw(/usr/lib/libDrakX); + +use devices; +use log; +use resize_fat::main; +use diskdrake::resize_ntfs; +use diskdrake::resize_ext2; + +my ($device, $fs_type, $size) = @ARGV + or die "usage: $0 <device> <fs type> <size>\n"; + +my %fs_pkgs = ( + vfat => 'resize_fat::main', + ntfs => 'diskdrake::resize_ntfs', + ext2 => 'diskdrake::resize_ext2', + ext3 => 'diskdrake::resize_ext2', + ext4 => 'diskdrake::resize_ext2', +); + +my $resize_pkg = $fs_pkgs{$fs_type} + or die "no support for $fs_type type\n"; + +log::l("resizing $device to $size"); + +my $resize = $resize_pkg->new($device, devices::make($device)) + or die "unable to initialize resize\n"; +$resize->resize($size); diff --git a/rescue/tree/usr/sbin/genpasswd b/rescue/tree/usr/sbin/genpasswd new file mode 100755 index 000000000..2f129673d --- /dev/null +++ b/rescue/tree/usr/sbin/genpasswd @@ -0,0 +1,13 @@ +#!/usr/bin/perl + +use strict; + +system "stty -echo"; +print STDERR "Give a password for ssh access: "; +chomp(my $word = <STDIN>); +print STDERR "\n"; +system "stty echo"; + +my @salt = ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]; +print crypt($word, join('', @salt)); +print "\n"; diff --git a/rescue/tree/usr/sbin/grabjournallogs b/rescue/tree/usr/sbin/grabjournallogs new file mode 100755 index 000000000..ef2ea4a1d --- /dev/null +++ b/rescue/tree/usr/sbin/grabjournallogs @@ -0,0 +1,51 @@ +#!/bin/bash + +if ! mountpoint -q /mnt ; then + echo "I do not seem to see a Mageia install mounted on /mnt. You need to mount it first!" >&2 + exit 1 +fi + +if [ ! -f /mnt/etc/machine-id ]; then + echo "Cannot find machine-id file (/mnt/etc/machine-id)" >&2 + exit 1 +fi + +MID=$(cat /mnt/etc/machine-id) +echo +echo "Found machine-id: $MID" +if [ ! -d /mnt/var/log/journal/$MID ]; then + echo "Cannot find journal log directory (/mnt/var/log/journal/<machine-id>)" >&2 + exit 1 +fi + +TIMEFRAME=24 +if [ -n "$1" ]; then + NEWTIMEFRAME=$(( 0 + $1 )) + if [ $NEWTIMEFRAME -gt 0 ]; then + TIMEFRAME=$NEWTIMEFRAME + fi +fi +SINCE="$(LC_ALL=c date --date=$TIMEFRAME' hours ago' +'%F %T')" +echo "Will collect logs from the last $TIMEFRAME hour(s)" +echo " NB give numeric argument to override capture period" + +TEMPFILE=$(mktemp /tmp/grabjournallogs.XXXXXX) +echo -n "Extracting logs... " +journalctl -D /mnt/var/log/journal/$MID --since "$SINCE" -o short >$TEMPFILE +echo "done" + +if [ $(cat $TEMPFILE | wc -l) -lt 2 ]; then + rm -f $TEMPFILE + echo >&2 + echo "Cannot find any logs. Consider increasing the capture period by passing a" >&2 + echo "numeric argument larger than $TIMEFRAME." >&2 + exit 1 +fi + +echo -n "Compressing logs... " +cat $TEMPFILE | xz >/journallogs.xz +rm -f $TEMPFILE +echo "done" + +echo +echo "Your logs have been extracted to the file 'journallogs.xz'" diff --git a/rescue/tree/usr/sbin/restore-image.sh b/rescue/tree/usr/sbin/restore-image.sh new file mode 100755 index 000000000..f4f904f3f --- /dev/null +++ b/rescue/tree/usr/sbin/restore-image.sh @@ -0,0 +1,412 @@ +#!/bin/bash + +setterm -powersave off +setterm -blank 0 + +if [ -r ./restore-image-lib.sh ]; then + . ./restore-image-lib.sh +elif [ -r /usr/lib/restore-image-lib.sh ]; then + . /usr/lib/restore-image-lib.sh +fi + +export PATH="/sbin:/bin:/usr/sbin:/usr/bin" + +mnt_dir="/tmp/mnt" +restore_media="/tmp/media" +images_dir="$restore_media/images" +images="$images_dir/list" +images_config="$images_dir/config" +image="" +win32_part_dev= +win32_part_type= +win32_part_new_size= + +function read_config() +{ + if [ -r "$images_config" ]; then + . $images_config + fi +} + +function image_list() +{ + list=$(cat $images | awk -F',' \ + '{ print $1 " " $2 " " $4 }') + + echo $list +} + +function image_file() +{ + country="$1" + + file=$(grep ^$country $images | awk -F',' '{ print $3 }') + + echo $file +} + +function welcome() +{ + while true; do + clear + msg="\n Welcome to $TITLE\n\ +\nThe following images were found, select one:\n " + opcao=$(dialog --backtitle "$BACKTITLE" --title "$TITLE" \ + --stdout --radiolist "$msg" 0 0 0 \ + $(image_list)) + + if [ "$?" != "0" ]; then + _yesno "\nInterrupt installation?\n " + if [ "$?" = "0" ]; then + _shutdown + fi + else + if [ -z "$opcao" ]; then + continue + else + image=$(image_file $opcao) + break + fi + fi + done + + # disable kernel messages in the console + echo "1 4 1 7" > /proc/sys/kernel/printk +} + +function install_warning() +{ + if [ -n "${win32_part_dev}" ]; then + warn_msg="Windows installation detected.\nWe will set it up as dual boot. \ +You may lose some data.\nPlease backup before proceeding." + else + warn_msg="WARNING: This process will erase all data in this machine, \ +do you want to continue?" + fi + + clear + _yesno "\n$warn_msg\n" + if [ "$?" != "0" ]; then + _shutdown + fi +} + +function detect_root() +{ + inst_source_dev=$(awk "\$2 == \"$restore_media\" { print \$1 }" /proc/mounts | sed -e 's/[0-9]$//') + inst_source_dev=${inst_source_dev#/dev/} + devices=$(grep "^ .*[^0-9]$" < /proc/partitions | grep -v ${inst_source_dev} | awk '$3 > '$MIN_DISKSIZE' { print $4,$3 }') + + if [ -z "${devices}" ]; then + exit 1 + fi + + devs_found=$(($(echo $devices | wc -w)/2)) + + root_data=$(detect_win32 ${inst_source_dev}) + + if [ -z "${root_data}" ]; then + if [ "$devs_found" -gt "1" ]; then + if [ -n "${inst_source_dev}" ]; then + opcao=$(dialog --backtitle "$BACKTITLE" --title "$TITLE" --stdout --menu 'Choose one of the detected devices to restore to (check the blocks size column first):' 8 50 0 $devices ) + if [ "$?" != "0" ]; then + _yesno "\nInterrupt installation?\n " + if [ "$?" = "0" ]; then + _shutdown + fi + else + root_data=${opcao} + fi + fi + else + root_data=$(echo ${devices} | cut -d ' ' -f 1) + fi + fi + + echo ${root_data} +} + +function detect_win32() +{ + # from detect_root() + skip_dev=${1} + + # win32 detection won't handle complex layouts + if [ $(fdisk -l | grep "^/dev/" | grep -v ${skip_dev} | wc -l) -gt 1 ]; then + exit + fi + + # get the last created windows partition information + set -f + device=$(fdisk -l | grep "^/dev/" | grep -v ${skip_dev} | grep -e "FAT\|NTFS\|HPFS" | tail -1 | sed 's/ .*$//') + set +f + + if [ -z "${device}" ]; then + exit + fi + + # it might be needed, for safety + device_type=$(blkid -o value -s TYPE ${device}) + modprobe ${device_type} + + # df for that partition + mount ${device} /mnt + size=$(df ${device} | tail -1) + umount /mnt + + # its diskspace + used=$(echo ${size} | awk '{ print $3 }') + left=$(echo ${size} | awk '{ print $4 }') + avail=$((${left}/2)) + + if [ ! ${avail} -lt ${MIN_DISKSIZE} ]; then + win32_part_dev=${device} + win32_part_type=${device_type} + # our install takes half of 'left' + win32_part_new_size=$((${used}+${avail})) + + dev=${win32_part_dev#/dev/} + disk=${dev%[0-9]} + number=${dev#[a-w][a-w][a-w]} + let number++ + echo ${disk}${number} ${win32_part_dev} ${win32_part_type} ${win32_part_new_size} + fi +} + +function resize_win32() +{ + device=${1} + device_type=${2} + new_win32_size=${3} + + dialog --backtitle "$BACKTITLE" --title "$TITLE" --infobox "\nResizing Windows partition...\n" 4 55 + + dev=${device#/dev/} + disk=${dev%[0-9]} + win32_number=${dev#[a-w][a-w][a-w]} + + case ${device_type} in + vfat) device_id=b ;; + ntfs) device_id=7 ;; + hpfs) device_id=87 ;; + esac + + # wrapper around libdrakx by blino + diskdrake-resize ${device} ${device_type} $((${new_win32_size}*2)) &>/dev/null + + # we need some free sector here, rebuilding layout + fdisk /dev/${disk} &>/dev/null <<EOF +d +n +p +${win32_number} + ++${new_win32_size}K +t +${device_id} +a +${win32_number} +w +EOF + # adds linux partition to the end of the working disk + fdisk /dev/${disk} &>/dev/null <<EOF +n +p +$((${win32_number}+1)) + ++${MIN_DISKSIZE}K +t +$((${win32_number}+1)) +83 +w +EOF +} + +function detect_device() +{ + dialog --backtitle "$BACKTITLE" --title "$TITLE" --infobox "\nTrying to detect your root partition and disk...\n" 4 55 + + root_data=$(detect_root) + if [ -z "${root_data}" ]; then + _msgbox "\nError writing image: disk device not detected.\n" + # so that netbooks using USB sticks as disks can retry (like Gdium) + welcome + root_data=$(detect_root) + fi + set ${root_data} + root=$1 + win32_part_dev=$2 + win32_part_type=$3 + win32_part_new_size=$4 +} + +function write_image() +{ + if [ -n "${win32_part_dev}" ]; then + resize_win32 ${win32_part_dev} ${win32_part_type} ${win32_part_new_size} + fi + + image=$(cat $images_dir/list | cut -d ',' -f 3) + extension=${image/*./} + imagesize=$(ls -l $images_dir/$image | awk '{ print $5 }') + case $extension in + gz) + uncomp=zcat + total=$(gzip -l $images_dir/$image | tail -n 1 | awk '{ print $2 }') + ;; + bz2) + uncomp=bzcat + total=$((imagesize * 3)) + ;; + *) + uncomp=cat + total=$imagesize + ;; + esac + + skipstart=/bin/true + if [ -n "$win32_part_dev" ]; then + skipstart='dd of=/dev/null bs=1 count=32256' + fi + + # the actual dumping command, from image to disk + ${uncomp} ${images_dir}/${image} | (${skipstart} &>/dev/null; dd bs=4M of=/dev/${root} >/tmp/backup.out 2>&1>>/tmp/log) & + + sleep 3 + pid=$(ps ax | grep 'dd bs=4M of' | grep -v grep | awk '{ print $1 }') + + while [ true ]; do + ps | grep -q $pid + if [ $? -eq 0 ]; then + /bin/kill -SIGUSR1 $pid + complete=$(tail -n 1 /tmp/backup.out | awk '{ print $1 }') + echo $((complete*100/total)) + sleep 1 + else + break + fi + done | dialog --backtitle "$BACKTITLE" --title "$TITLE" --gauge "\nWriting image..." 8 45 + + in=$(tail -n 3 /tmp/backup.out | grep 'in$' | cut -d' ' -f1) + out=$(tail -n 3 /tmp/backup.out | grep 'out$' | cut -d' ' -f1) + + if [ x"$in" != x"$out" ]; then + _msgbox "\nError writing image!\n" + sleep 24h + fi + + # Now re-read the partition table because 'dd' might have changed it + sfdisk -R /dev/${root} +} + +function grub_setup() +{ + root=${1} + grub_dir=${2} + + # install the bootloader + grub <<EOF +device (hd0) /dev/${root%[0-9]} +root (hd0,1) +setup (hd0) +quit +EOF + # change the partition order and boot timeout accordingly + sed -i 's/(hd0,0)/(hd0,1)/g;/^timeout/s/$/0/' ${grub_dir}/menu.lst + + # dualboot configuration for grub + cat >> ${grub_dir}/menu.lst <<EOF +title Microsoft Windows +root (hd0,0) +makeactive +rootnoverify(hd0,0) +chainloader +1 +EOF +} + +function expand_fs() +{ + if [ -z "$win32_part_dev" ]; then + if [ -n "$MAIN_PART_NUMBER" ]; then + part_number=$MAIN_PART_NUMBER + else + part_number=1 + fi + root=${root%[0-9]}$part_number + fi + filesystem_type=$(dumpe2fs -h /dev/${root} 2>/dev/null| grep "Filesystem OS type" | awk '{ print $4 }') + if [ "${filesystem_type}" = "Linux" ]; then + dialog --backtitle "$BACKTITLE" --title "$TITLE" --infobox "Finishing Install... Expanding ${root}" 3 40 + disk=/dev/${root%[0-9]} + main_part=/dev/${root} + + # FIXME: absurdly dirty hack + main_part_num=${root:3} + swap_part_num=$((main_part_num+1)) + swap_part=${disk}${swap_part_num} + + main_part_sectors= + if [ -n "$SWAP_BLOCKS" ]; then + if [ -n "$EXPAND_FS" ]; then + total_blocks=$(sfdisk -s $disk) + main_part_blocks=$((total_blocks-SWAP_BLOCKS)) + main_part_sectors=$((main_part_blocks*2)) + else + main_part_sectors=$(sfdisk -d $disk | perl -lne 'm|^'$main_part'\b.*,\s*size\s*=\s*(\d+)\b| and print($1), exit') + fi + fi + if [ -n "$SWAP_BLOCKS" ]; then + parted $disk -- mkpartfs primary linux-swap ${main_part_sectors}s -1s yes + mkswap -L swap $swap_part + fi + if [ -n "$EXPAND_FS" ]; then + e2fsck -fy $main_part + fdisk $disk << EOF +d +$main_part_num +n +p +$main_part_num + + +a +$main_part_num +w +EOF + sfdisk -R $disk + e2fsck -fy $main_part + resize2fs $main_part + fi + mkdir -p $mnt_dir + mount $main_part $mnt_dir + grub_dir="$mnt_dir/boot/grub" + if [ -d "$grub_dir" ]; then + echo "(hd0) $disk" > "$grub_dir/device.map" + if [ -n "$win32_part_dev" ]; then + grub_setup ${root} ${grub_dir} + fi + fi + if [ -n "$MKINITRD" ]; then + mount -t sysfs none "$mnt_dir/sys" + mount -t proc none "$mnt_dir/proc" + chroot $mnt_dir bootloader-config --action rebuild-initrds + umount "$mnt_dir/sys" + umount "$mnt_dir/proc" + fi + umount $mnt_dir + fi +} + +# installation steps +welcome +read_config +detect_device +install_warning +write_image +expand_fs + +# all done! +_msgbox "\nInstallation process finished.\nPress ENTER to shutdown.\n " + +_shutdown + diff --git a/rescue/tree/usr/sbin/startssh b/rescue/tree/usr/sbin/startssh new file mode 100755 index 000000000..e14bb10e8 --- /dev/null +++ b/rescue/tree/usr/sbin/startssh @@ -0,0 +1,27 @@ +#!/bin/bash + +# test for an up interface != lo +if test "x"`ifconfig | cut -d ' ' -f 1 | grep -v '^$' | grep -v lo` = "x"; then + echo "There is no up interface, you can try to execute 'drvinst' to find drivers and 'dhcp-client' to configure your interface for DHCP." >&2 + exit 5 +fi + +# generate host keys +mkdir -p /etc/dropbear +[[ -f /etc/dropbear/dropbear_dss_host_key ]] || dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key >/dev/null || { echo "Can't generate dsa host key" >&2 ; exit 4; } +[[ -f /etc/dropbear/dropbear_rsa_host_key ]] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null || { echo "Can't generate rsa host key" >&2 ; exit 3; } + +# set a password +passwd=`genpasswd` +if (( $? != 0 )); then + reset + exit $? +fi +sed -E -i -e 's/^root:[^:]*:/root:'"${passwd//\//\\/}"':/' /etc/passwd || { echo "Can't set password" >&2 ; exit 2; } + +# test for /dev/pts +grep '^devpts /dev/pts devpts ' /proc/mounts >/dev/null 2>/dev/null || mount -t devpts devpts /dev/pts + +echo "" +echo -n "Starting ssh daemon... " +dropbear -E 2>/var/log/dropbear.log && echo "OK" || { echo "Failed" ; exit 1; } diff --git a/rescue/tree/usr/share/symlinks b/rescue/tree/usr/share/symlinks deleted file mode 100644 index 5862fb8ac..000000000 --- a/rescue/tree/usr/share/symlinks +++ /dev/null @@ -1,10 +0,0 @@ -/bin -/boot -/dev -/etc/fstab -/etc/inittab -/etc/rc.sysinit -/lib -/lib64 -/sbin -/usr |
