This repository has been archived by the owner on Mar 13, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgentoo-installer.sh
executable file
·162 lines (138 loc) · 3.47 KB
/
gentoo-installer.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/usr/bin/env bash
# -*- ENCODING: UTF-8 -*-
##
## @author Raúl Caro Pastorino
## @copyright Copyright © 2018 Raúl Caro Pastorino
## @license https://wwww.gnu.org/licenses/gpl.txt
## @email dev@fryntiz.es
## @web https://fryntiz.es
## @gitlab https://gitlab.com/fryntiz
## @github https://github.com/fryntiz
## @twitter https://twitter.com/fryntiz
##
## Guía de estilos aplicada:
## @style https://gitlab.com/fryntiz/bash-guide-style
############################
## INSTRUCCIONES ##
############################
## Genera una instalación del sistema operativo GNU/Linux Gentoo
############################
## IMPORTACIONES ##
############################
## Importo variables de configuración
source "config"
## Importo funciones auxiliares
source "functions.sh"
############################
## FUNCIONES ##
############################
formatear() {
mkfs.ext4 $BOOT
mkfs.ext4 $RAIZ
mkswap $SWAP
}
cifrarDiscos() {
cryptsetup luksFormat $RAIZ
}
##
## Construye la jaula con los datos dados
##
montarJaula() {
if [[ $BOOT != '' ]] && [[ ! -d $JAULA ]]; then
mkdir -p $JAULA/boot
sudo umount $BOOT
fi
sudo umount /dev/mapper/$LUKS
sudo umount $RAIZ
## Abre Cifrado
sudo cryptsetup open --type luks $RAIZ $LUKSNAME
## Montar estructura de la jaula
sudo mount /dev/mapper/${LUKSNAME} $JAULA
if [[ $BOOT != '' ]]; then
sudo mount $BOOT ${JAULA}/boot
fi
swapon /dev/mapper/swap
}
##
## Descomprime el archivo xz recibido en la jaula
## $1 archivo comprimido
##
descomprimirXZ() {
echo 'Descomprimiendo Stage3 en la jaula'
tar -Jcvf $1 $JAULA
}
##
## Descomprime el archivo bz2 recibido en la jaula
## $1 archivo comprimido
##
descomprimirBZ2() {
echo 'Descomprimiendo Stage3 en la jaula'
tar -xvjpf $1 $JAULA
}
##
## Descargar y descomprimir el STAGE
##
instalarStage3() {
if [[ $SYSTEMD = 'true' ]]; then
echo 'Instalando con soporte para systemd'
descargarStage /tmp/$STAGE3SYSTEMD
descomprimirBZ2 /tmp/$STAGE3SYSTEMD
else
echo 'Instalando sin soporte para systemd'
descargarStage /tmp/$STAGE3
descomprimirXZ /tmp/$STAGE3
fi
}
##
## Copio el script en el objetivo de la jaula chroot para poder
## ejecutar el resto de la instalación desde allí dentro.
##
copiarScriptEnJaula() {
cp config functions.sh chroot.sh "$JAULA/"
}
##
## Prepara portage con personalizaciones a mi gusto
##
configurarPortage() {
cp portage/* "$JAULA/etc/portage/"
}
##
## Enjaular en la ruta indicada
##
enjaular() {
if [[ $JAULA = '' ]]; then
exit 1
fi
## Según la guía
# mount -t proc none ${JAULA}/proc
# mount --rbind /sys ${JAULA}/sys
# mount --rbind /dev ${JAULA}/dev
## Mio en Debian
sudo mount -t proc proc ${JAULA}/proc/
sudo mount -t sysfs sys ${JAULA}/sys/
sudo mount -o bind /dev/ ${JAULA}/dev
sudo mount -t devpts pts ${JAULA}/dev/pts
sudo chroot $JAULA /bin/bash
#export PS1="Enjaulado → (chroot) $PS1"
}
##
## Desmonta la jaula
##
desmontar() {
sudo umount ${JAULA}/proc/
sudo umount ${JAULA}/sys/
sudo umount ${JAULA}/dev/pts
sudo umount ${JAULA}/dev
sudo umount ${JAULA}/boot
sudo umount ${JAULA}
}
formatear
cifrarDiscos
montarJaula
instalarStage3
copiarScriptEnJaula
## Copia resolución DNS en la jaula
cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
enjaular
desmontar
exit 0