root/trunk/configurator.sh @ 4

Revision 4, 7.5 KB (checked in by 0805admin, 5 years ago)

adiconados headres gpl_v2

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1#!/bin/bash
2
3#  configurator: script que permite configurar o m2installer depois de instalado o diréctorio raz
4#  dentro de um lv do LVM, e tendo o boot numa outra partição em ext3
5
6#  Copyright (C) 2008  Hélio Miguel
7
8#  This program is free software; you can redistribute it and/or
9#  modify it under the terms of the GNU General Public License
10#  as published by the Free Software Foundation; either version 2
11#  of the License, or (at your option) any later version.
12
13#  This program is distributed in the hope that it will be useful,
14#  but WITHOUT ANY WARRANTY; without even the implied warranty of
15#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16#  GNU General Public License for more details.
17
18#  You should have received a copy of the GNU General Public License
19#  along with this program; if not, write to the Free Software
20#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21
22
23#este sript só pode ser utilizado pelo root
24if [ `whoami` != "root" ] ; then
25        echo "Erro: tem de ser root para correr este script"
26        exit 1
27fi
28
29
30#---------------------------variáveis---------------------------------
31CONF_M2INSTALLER_PATH="/etc/m2installer"
32CONF_FILE_NAME="m2installer.conf"
33CONF_FILE_PATH=$CONF_M2INSTALLER_PATH/$CONF_FILE_NAME
34RSF_NAME="scheduled_reversion"
35MOUNT_PATH="/mnt"
36ROOT_TMP_NAME="root-tmp"
37SNAP_TMP_NAME="snap-tmp"
38VGS_PATH="/dev"
39MAPPER_NAME="mapper"
40DEFAULT_SNAP_SIZE=1024
41
42
43
44#----------------------------functions-------------------------------------
45
46#Monta o lv onde foi instalado o diréctorio raz. O lv é sempre montado, mesmo que o
47# utilizador já esteja dentro desse sistema pois o processo é o mesmo
48mount_lv_root()
49{
50        echo "Logic Volumes existentes:"
51        lvscan                          #comando para pesquisar os lv's existentes
52
53        echo -n "Indique o nome do vg a que pertence o lv onde está instalado o directório raiz (\"/\"): "
54        read vg_root_name
55
56        echo -n "Indique o nome do lv onde está instalado o directório raiz (\"/\"): "
57        read lv_root_name
58
59        #o lv_root_path corresponde ao path onde está instalado o directório
60        # raiz do sistema que está dentro do LVM
61        lv_root_path=$VGS_PATH/$vg_root_name/$lv_root_name
62
63        mounted_tmp_root=$MOUNT_PATH/$ROOT_TMP_NAME
64
65        mkdir $mounted_tmp_root         #criar directório para montagem do "/"
66        mount $lv_root_path $mounted_tmp_root   #montar o "/" no directório de montagem por defeito
67}
68
69
70#Pergunta informações ao utilizador para criar o ficheiro de configuração do
71# m2installer em /etc/m2installer/m2installer.conf
72create_conf_file()
73{
74        #cria o directório onde vão ser colocados os ficheiros de configuração do m2installer
75        mkdir $mounted_tmp_root/$CONF_M2INSTALLER_PATH
76
77        file=$mounted_tmp_root/$CONF_FILE_PATH
78
79        #escrita para para o ficheiro de configuração, locaizado no
80        # sistema destino em /etc/m2installler/m2installer.conf
81        echo "######################################m2installer.conf###########################################" > $file
82        echo "#-----------------------------m2installer configuration file-------------------------------------" >> $file
83        echo "#Este ficheiro é um ficheiro de configuração do m2installer e por defeito será colocado " >> $file
84        echo "#em /etc/m2installer/, vai ter, por isso, como caminho /etc/m2installer/m2installer.conf" >> $file
85        echo "" >> $file
86        echo "#Path onde são guardados os vg's" >> $file
87        echo "VGS_PATH=\"$VGS_PATH\"" >> $file
88        echo "" >> $file
89        echo "#Nome utilizado pelo device-mapper onde também estão localizados os lv's criados" >> $file
90        echo "MAPPER_NAME=\"$MAPPER_NAME\"" >> $file
91        echo "" >> $file
92        echo "#Path, nome e vg a que pertence o lv onde está instalado o directório raiz (\"/\")" >> $file
93        echo "LV_ROOT_NAME=\"$lv_root_name\"" >> $file
94        echo "VG_ROOT_NAME=\"$vg_root_name\"" >> $file
95        echo "LV_ROOT_PATH=\"$lv_root_path\"" >> $file
96        echo "" >> $file
97        echo "#Path para o ficheiro criado sempre que for agendada uma reversão de sistema" >> $file
98        echo "#Nota: caso esta variável seja alterada é necessário alterar o /etc/init.d/halt também" >> $file
99        echo "REVERSE_SCHEDULED_FILE=\"$CONF_M2INSTALLER_PATH/$RSF_NAME\"" >> $file
100        echo "" >> $file
101        echo "#Path default onde serão efectuadas as montagens" >> $file
102        echo "MOUNT_PATH=\"$MOUNT_PATH\"" >> $file
103        echo "" >> $file
104        echo "#Path default para as montagens dos sistemas a utilizar no processo de reversão" >> $file
105        echo "LV_MOUNT_PATH=\"$MOUNT_PATH/$ROOT_TMP_NAME\"" >> $file
106        echo "SS_MOUNT_PATH=\"$MOUNT_PATH/$SNAP_TMP_NAME\"" >> $file
107        echo "" >> $file
108        echo "#Tamanho default para os snapshots criados (o M representa MegaBytes)" >> $file
109        echo "DEFAULT_SNAP_SIZE=\"$DEFAULT_SNAP_SIZE\"" >> $file
110        echo "" >> $file
111
112
113
114        echo ""
115        echo "--->Criado o ficheiro de configuração em $file"
116}
117
118
119#Altera o ficheiro /etc/rc.d/init.d/halt, para que quando o sistema está a desligar
120# faça uma reversão total do sistema, se existir uma verificação agendada
121edit_halt_file()
122{
123        echo ""
124        echo ""
125        echo "Edite o ficheiro \"$mounted_tmp_root/etc/rc.d/init.d/halt\"."
126        echo "Para isso basta inserir, antes do ciclo que faz as verificações" 
127        echo "do LVM, as seguintes linhas de código, que estão dentro dos tracejados:"
128        echo "(O inicio do ciclo relacionado com o LVM é:"
129        echo " if [ -f /etc/lvm/lvm.conf -a -x /sbin/lvm2 ]; then)"
130        echo "--------------------------------------------------------------------------"
131
132        #O utilizador deverá copiar e colar as alterações no ficheiro /etc/rc.d/init.d/halt
133        #TODO: Fazer a modificação do ficheiro halt automáticamente
134        echo "#load the configuration file if exists"
135        echo "if [ -f $CONF_FILE_PATH ] ; then"
136        echo "        . $CONF_FILE_PATH"
137        echo "        if [ -x \$REVERSE_SCHEDULED_FILE ]; then"
138        echo "                action \"Reverting system, please wait...\" \$REVERSE_SCHEDULED_FILE"
139        echo "        else"
140        echo "                echo \"Scheduled reversion not found...\""
141        echo "        fi"
142        echo "else"
143        echo "        echo \"Error: the m2installer configuration file was not found in $CONF_FILE_PATH\""
144        echo "fi"
145
146        echo "--------------------------------------------------------------------------"
147        echo "Nota: pode alterar o ficheiro halt executando o seguinte comando numa shell:"
148        echo "\$  sudo vi $mounted_tmp_root/etc/rc.d/init.d/halt"
149        echo ""
150        echo "Pressione <ENTER> quando terminar..."
151        read esperar
152}
153
154
155#Aqui será efectuada uma mofificação ao initrd de forma a que seja possível em certas
156# distribuições, como o caixa Mágica, ter o directório raiz do sistema ("/") dentro
157# de um lv (para mais informações consulte a documentação existente sobre este script)
158patch_initrd()
159{
160        echo ""
161        echo "Discos existentes"
162        fdisk -l                        #comando para pesquisar as partições existentes
163
164        echo -n "Introduza o path do disco /boot (ex /dev/sda5): "
165        read boot_path
166
167        mount $boot_path $mounted_tmp_root/boot         #montar o "/boot" dentro do "/"
168
169        mount --bind /proc $mounted_tmp_root/proc       #montar o "/proc"
170        mount --bind /sys $mounted_tmp_root/sys         #montar o "/sys"
171        mount --bind /dev $mounted_tmp_root/dev         #montar o "/dev"
172
173
174        #este comando muda o path do directório raiz actual para o path do sistema que foi instalado dentro do lv
175        chroot $mounted_tmp_root mkinitrd -f /boot/initrd-`uname -r`.img `uname -r`
176
177        echo "---> Foi efectuada a modificação ao initrd do sistema instalado no lv do LVM"
178}
179
180
181#------------------------------main-----------------------------------
182clear
183echo "***Configuração m2installer***"
184echo ""
185
186mount_lv_root
187
188create_conf_file
189
190edit_halt_file
191
192
193clear
194echo -n "Necessita de modificar o initrd? (s/n): "
195read opcao
196
197#efectua o patch ao initrd, caso o utilizador necessite
198if [ $opcao = "s" ] || [ $opcao = "S" ] ; then
199        patch_initrd
200fi
201
202
203
Note: See TracBrowser for help on using the browser.