penguins-eggs 25.10.19 → 25.10.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +17 -3
- package/README.md +769 -2
- package/README.pdf +1705 -1747
- package/addons/eggs/theme/livecd/{grub.theme.cfg → full.grub.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/{isolinux.theme.cfg → full.isolinux.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/generic-splash.png +0 -0
- package/addons/eggs/theme/livecd/generic.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/generic.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/generic.isolinux.main.cfg +34 -0
- package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +34 -0
- package/addons/eggs/theme/livecd/simple.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/simple.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/{isolinux.main.simple.cfg → simple.isolinux.main.cfg} +1 -2
- package/addons/eggs/theme/livecd/simple.isolinux.theme.cfg +47 -0
- package/dist/classes/diversions.d.ts +1 -1
- package/dist/classes/diversions.js +4 -25
- package/dist/classes/ovary.d/bind-live-fs.js +1 -1
- package/dist/classes/ovary.d/initrd.js +3 -2
- package/dist/classes/ovary.d/luks-get-password.js +1 -0
- package/dist/classes/ovary.d/luks-home.js +41 -29
- package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
- package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
- package/dist/classes/ovary.d/luks-root.js +60 -35
- package/dist/classes/ovary.d/make-dot-disk.js +10 -1
- package/dist/classes/ovary.d/make-efi.js +59 -43
- package/dist/classes/ovary.d/make-squashfs.d.ts +1 -1
- package/dist/classes/ovary.d/make-squashfs.js +2 -5
- package/dist/classes/ovary.d/merged.js +1 -1
- package/dist/classes/ovary.d/produce.d.ts +2 -2
- package/dist/classes/ovary.d/produce.js +45 -44
- package/dist/classes/ovary.d/syslinux.js +47 -34
- package/dist/classes/ovary.d/xorriso-command.js +1 -2
- package/dist/classes/ovary.d.ts +3 -4
- package/dist/classes/ovary.js +6 -6
- package/dist/classes/utils.d.ts +2 -0
- package/dist/classes/utils.js +13 -3
- package/dist/commands/love.d.ts +1 -0
- package/dist/commands/love.js +9 -2
- package/dist/commands/produce.d.ts +2 -1
- package/dist/commands/produce.js +18 -4
- package/dist/krill/classes/sequence.d.ts +1 -1
- package/dist/krill/classes/sequence.js +3 -3
- package/package.json +4 -4
- package/scripts/_eggs +3 -1
- package/scripts/boot-encrypted-root.sh +177 -0
- package/scripts/eggs.bash +2 -2
- package/scripts/mount-encrypted-home.sh +92 -56
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.d.ts +0 -11
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.js +0 -45
- package/scripts/luks-root-bootstrap-create.sh +0 -235
- package/scripts/luks-root-unlock.sh +0 -172
- /package/addons/eggs/theme/livecd/{grub.main.cfg → full.grub.main.cfg} +0 -0
- /package/addons/eggs/theme/livecd/{isolinux.main.full.cfg → full.isolinux.main.cfg} +0 -0
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# luks-root-bootstrap-create.sh
|
|
3
|
-
# Crea un filesystem.squashfs Debian completo per bootstrap
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
OUTPUT_SQUASHFS="$1"
|
|
7
|
-
UNLOCK_SCRIPT="$2"
|
|
8
|
-
|
|
9
|
-
# Usa /root per avere sicuramente spazio
|
|
10
|
-
WORK_DIR="/root/bootstrap-filesystem-$$"
|
|
11
|
-
|
|
12
|
-
if [ -z "$OUTPUT_SQUASHFS" ] || [ -z "$UNLOCK_SCRIPT" ]; then
|
|
13
|
-
echo "Usage: $0 <output.squashfs> <unlock-script.sh>"
|
|
14
|
-
exit 1
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
if [ ! -f "$UNLOCK_SCRIPT" ]; then
|
|
18
|
-
echo "Error: Unlock script not found: $UNLOCK_SCRIPT"
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
BUILD_SUCCESS=0
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
echo "=========================================="
|
|
26
|
-
echo " Creating Bootstrap Filesystem"
|
|
27
|
-
echo "=========================================="
|
|
28
|
-
echo ""
|
|
29
|
-
echo "Output: $OUTPUT_SQUASHFS"
|
|
30
|
-
echo "Work dir: $WORK_DIR"
|
|
31
|
-
echo ""
|
|
32
|
-
|
|
33
|
-
# Cleanup function
|
|
34
|
-
cleanup() {
|
|
35
|
-
if [ -d "$WORK_DIR" ]; then
|
|
36
|
-
echo "Cleaning up work directory..."
|
|
37
|
-
umount "$WORK_DIR/proc" 2>/dev/null || true
|
|
38
|
-
umount "$WORK_DIR/sys" 2>/dev/null || true
|
|
39
|
-
umount "$WORK_DIR/dev/pts" 2>/dev/null || true
|
|
40
|
-
umount "$WORK_DIR/dev" 2>/dev/null || true
|
|
41
|
-
|
|
42
|
-
if [ $BUILD_SUCCESS -eq 1 ]; then
|
|
43
|
-
rm -rf "$WORK_DIR"
|
|
44
|
-
echo "Work directory cleaned"
|
|
45
|
-
else
|
|
46
|
-
echo "Work directory preserved for debugging: $WORK_DIR"
|
|
47
|
-
fi
|
|
48
|
-
fi
|
|
49
|
-
}
|
|
50
|
-
trap cleanup EXIT
|
|
51
|
-
|
|
52
|
-
# Crea directory di lavoro
|
|
53
|
-
mkdir -p "$WORK_DIR"
|
|
54
|
-
|
|
55
|
-
# 1. Debootstrap - CON kmod e bash-completion
|
|
56
|
-
echo "Step 1/6: Running debootstrap (this takes 5-10 minutes)..."
|
|
57
|
-
debootstrap \
|
|
58
|
-
--variant=minbase \
|
|
59
|
-
--include=systemd,systemd-sysv,cryptsetup,kmod,bash-completion,nano,less,vim-tiny \
|
|
60
|
-
trixie \
|
|
61
|
-
"$WORK_DIR" \
|
|
62
|
-
http://deb.debian.org/debian
|
|
63
|
-
|
|
64
|
-
echo "✓ Debootstrap completed"
|
|
65
|
-
|
|
66
|
-
# 1.5. Copia moduli kernel
|
|
67
|
-
echo ""
|
|
68
|
-
echo "Step 1.5/6: Copying kernel modules..."
|
|
69
|
-
|
|
70
|
-
KERNEL_VERSION=$(uname -r)
|
|
71
|
-
|
|
72
|
-
if [ -d "/lib/modules/$KERNEL_VERSION" ]; then
|
|
73
|
-
echo "Copying kernel modules for $KERNEL_VERSION..."
|
|
74
|
-
|
|
75
|
-
# Assicurati che la directory esista
|
|
76
|
-
mkdir -p "$WORK_DIR/lib/modules"
|
|
77
|
-
|
|
78
|
-
# Copia TUTTO il kernel
|
|
79
|
-
cp -a "/lib/modules/$KERNEL_VERSION" "$WORK_DIR/lib/modules/"
|
|
80
|
-
|
|
81
|
-
# Verifica che sia stato copiato
|
|
82
|
-
if [ -d "$WORK_DIR/lib/modules/$KERNEL_VERSION" ]; then
|
|
83
|
-
echo "✓ Kernel modules copied for $KERNEL_VERSION"
|
|
84
|
-
echo " Module directory size: $(du -sh "$WORK_DIR/lib/modules/$KERNEL_VERSION" | cut -f1)"
|
|
85
|
-
else
|
|
86
|
-
echo "ERROR: Failed to copy kernel modules!"
|
|
87
|
-
exit 1
|
|
88
|
-
fi
|
|
89
|
-
else
|
|
90
|
-
echo "ERROR: Kernel modules not found at /lib/modules/$KERNEL_VERSION"
|
|
91
|
-
exit 1
|
|
92
|
-
fi
|
|
93
|
-
|
|
94
|
-
# 2. Configura sistema base
|
|
95
|
-
echo ""
|
|
96
|
-
echo "Step 2/6: Configuring base system..."
|
|
97
|
-
|
|
98
|
-
echo "bootstrap" > "$WORK_DIR/etc/hostname"
|
|
99
|
-
|
|
100
|
-
cat > "$WORK_DIR/etc/hosts" <<EOF
|
|
101
|
-
127.0.0.1 localhost
|
|
102
|
-
127.0.1.1 bootstrap
|
|
103
|
-
|
|
104
|
-
::1 localhost ip6-localhost ip6-loopback
|
|
105
|
-
ff02::1 ip6-allnodes
|
|
106
|
-
ff02::2 ip6-allrouters
|
|
107
|
-
EOF
|
|
108
|
-
|
|
109
|
-
cat > "$WORK_DIR/etc/fstab" <<EOF
|
|
110
|
-
# Bootstrap filesystem - no persistent mounts
|
|
111
|
-
EOF
|
|
112
|
-
|
|
113
|
-
echo "root:evolution" | chroot "$WORK_DIR" chpasswd
|
|
114
|
-
|
|
115
|
-
# Abilita bash-completion per root
|
|
116
|
-
cat >> "$WORK_DIR/root/.bashrc" <<'EOF'
|
|
117
|
-
|
|
118
|
-
# Enable bash completion
|
|
119
|
-
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
|
120
|
-
. /usr/share/bash-completion/bash_completion
|
|
121
|
-
elif [ -f /etc/bash_completion ]; then
|
|
122
|
-
. /etc/bash_completion
|
|
123
|
-
fi
|
|
124
|
-
|
|
125
|
-
# Useful aliases
|
|
126
|
-
alias ll='ls -lah'
|
|
127
|
-
alias l='ls -lh'
|
|
128
|
-
EOF
|
|
129
|
-
|
|
130
|
-
cat > "$WORK_DIR/etc/motd" <<EOF
|
|
131
|
-
|
|
132
|
-
╔════════════════════════════════════════╗
|
|
133
|
-
║ Bootstrap System - Debug Shell ║
|
|
134
|
-
╚════════════════════════════════════════╝
|
|
135
|
-
|
|
136
|
-
This is the bootstrap environment for unlocking
|
|
137
|
-
the encrypted root filesystem.
|
|
138
|
-
|
|
139
|
-
Root credentials:
|
|
140
|
-
Username: root
|
|
141
|
-
Password: evolution
|
|
142
|
-
|
|
143
|
-
Manual unlock command:
|
|
144
|
-
unlock-encrypted-root
|
|
145
|
-
|
|
146
|
-
EOF
|
|
147
|
-
|
|
148
|
-
echo "✓ Base system configured (root password: evolution)"
|
|
149
|
-
|
|
150
|
-
# 3. Copia script di unlock
|
|
151
|
-
echo ""
|
|
152
|
-
echo "Step 3/6: Installing unlock script..."
|
|
153
|
-
mkdir -p "$WORK_DIR/usr/local/bin"
|
|
154
|
-
cp "$UNLOCK_SCRIPT" "$WORK_DIR/usr/local/bin/unlock-encrypted-root"
|
|
155
|
-
chmod 755 "$WORK_DIR/usr/local/bin/unlock-encrypted-root"
|
|
156
|
-
echo "✓ Unlock script installed at /usr/local/bin/unlock-encrypted-root"
|
|
157
|
-
|
|
158
|
-
# 4. Fix console getty per stabilità
|
|
159
|
-
echo ""
|
|
160
|
-
echo "Step 4/6: Configuring stable console..."
|
|
161
|
-
|
|
162
|
-
mkdir -p "$WORK_DIR/etc/systemd/system/getty@tty1.service.d"
|
|
163
|
-
cat > "$WORK_DIR/etc/systemd/system/getty@tty1.service.d/noclear.conf" <<EOF
|
|
164
|
-
[Service]
|
|
165
|
-
# Mantieni la console pulita e stabile
|
|
166
|
-
TTYVTDisallocate=no
|
|
167
|
-
EOF
|
|
168
|
-
|
|
169
|
-
echo "✓ Console configuration applied"
|
|
170
|
-
|
|
171
|
-
# 5. Cleanup per ridurre dimensioni (ma NON i moduli kernel!)
|
|
172
|
-
echo ""
|
|
173
|
-
echo "Step 5/6: Cleaning up to reduce size..."
|
|
174
|
-
rm -rf "$WORK_DIR/var/cache/apt/archives/"*
|
|
175
|
-
rm -rf "$WORK_DIR/var/lib/apt/lists/"*
|
|
176
|
-
rm -rf "$WORK_DIR/tmp/"*
|
|
177
|
-
rm -rf "$WORK_DIR/var/tmp/"*
|
|
178
|
-
rm -rf "$WORK_DIR/usr/share/doc/"*
|
|
179
|
-
rm -rf "$WORK_DIR/usr/share/man/"*
|
|
180
|
-
rm -rf "$WORK_DIR/usr/share/info/"*
|
|
181
|
-
|
|
182
|
-
# NON cancellare tutte le locale, lascia en_US per bash-completion
|
|
183
|
-
rm -rf "$WORK_DIR/usr/share/locale/"[!e]*
|
|
184
|
-
rm -rf "$WORK_DIR/usr/share/locale/en_"[!U]*
|
|
185
|
-
|
|
186
|
-
echo "✓ Cleanup completed"
|
|
187
|
-
|
|
188
|
-
# 6. Crea squashfs
|
|
189
|
-
echo ""
|
|
190
|
-
echo "Step 6/6: Creating squashfs (this takes 2-3 minutes)..."
|
|
191
|
-
|
|
192
|
-
if [ ! -d "$WORK_DIR" ]; then
|
|
193
|
-
echo "ERROR: Work directory disappeared!"
|
|
194
|
-
exit 1
|
|
195
|
-
fi
|
|
196
|
-
|
|
197
|
-
if [ -f "$OUTPUT_SQUASHFS" ]; then
|
|
198
|
-
rm -f "$OUTPUT_SQUASHFS"
|
|
199
|
-
fi
|
|
200
|
-
|
|
201
|
-
mksquashfs "$WORK_DIR" "$OUTPUT_SQUASHFS" \
|
|
202
|
-
-comp zstd \
|
|
203
|
-
-b 1M \
|
|
204
|
-
-noappend
|
|
205
|
-
|
|
206
|
-
if [ ! -f "$OUTPUT_SQUASHFS" ]; then
|
|
207
|
-
echo "ERROR: Failed to create squashfs file"
|
|
208
|
-
exit 1
|
|
209
|
-
fi
|
|
210
|
-
|
|
211
|
-
SIZE_MB=$(du -m "$OUTPUT_SQUASHFS" | cut -f1)
|
|
212
|
-
|
|
213
|
-
echo ""
|
|
214
|
-
echo "=========================================="
|
|
215
|
-
echo "✓ Bootstrap filesystem created!"
|
|
216
|
-
echo "=========================================="
|
|
217
|
-
echo ""
|
|
218
|
-
echo " File: $OUTPUT_SQUASHFS"
|
|
219
|
-
echo " Size: ${SIZE_MB} MB"
|
|
220
|
-
echo ""
|
|
221
|
-
echo "Features:"
|
|
222
|
-
echo " - Minimal Debian system with systemd"
|
|
223
|
-
echo " - Kernel modules included (dm_mod, dm_crypt)"
|
|
224
|
-
echo " - kmod (modprobe, lsmod, etc.)"
|
|
225
|
-
echo " - bash-completion enabled"
|
|
226
|
-
echo " - Stable console"
|
|
227
|
-
echo " - Manual unlock at /usr/local/bin/unlock-encrypted-root"
|
|
228
|
-
echo ""
|
|
229
|
-
echo "Usage:"
|
|
230
|
-
echo " 1. Boot the system"
|
|
231
|
-
echo " 2. Login as root (password: evolution)"
|
|
232
|
-
echo " 3. Run: unlock-encrypted-root"
|
|
233
|
-
echo ""
|
|
234
|
-
|
|
235
|
-
BUILD_SUCCESS=1
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# luks-root-unlock.sh
|
|
3
|
-
# Versione Chroot: Monta l'ISO (ro), l'ext4 (ro), lo squashfs (ro)
|
|
4
|
-
# e crea un overlay scrivibile in RAM.
|
|
5
|
-
|
|
6
|
-
set -e
|
|
7
|
-
|
|
8
|
-
echo ""
|
|
9
|
-
echo "=========================================="
|
|
10
|
-
echo " Encrypted Root Unlock (CHROOT MODE)"
|
|
11
|
-
echo "=========================================="
|
|
12
|
-
echo ""
|
|
13
|
-
|
|
14
|
-
# Crea mountpoint
|
|
15
|
-
mkdir -p /mnt/live-media
|
|
16
|
-
mkdir -p /mnt/root-img
|
|
17
|
-
mkdir -p /mnt/real-root
|
|
18
|
-
mkdir -p /newroot
|
|
19
|
-
|
|
20
|
-
# Trova live media
|
|
21
|
-
echo "Searching for live media..."
|
|
22
|
-
FOUND=0
|
|
23
|
-
for dev in /dev/sr* /dev/sd* /dev/vd* /dev/nvme*n*;
|
|
24
|
-
do
|
|
25
|
-
[ -b "$dev" ] || continue
|
|
26
|
-
echo " Trying $dev..."
|
|
27
|
-
if mount -o ro "$dev" /mnt/live-media 2>/dev/null;
|
|
28
|
-
then
|
|
29
|
-
if [ -f /mnt/live-media/live/root.img ];
|
|
30
|
-
then
|
|
31
|
-
echo " ✓ Found live media on $dev"
|
|
32
|
-
FOUND=1
|
|
33
|
-
break
|
|
34
|
-
fi
|
|
35
|
-
umount /mnt/live-media 2>/dev/null
|
|
36
|
-
fi
|
|
37
|
-
done
|
|
38
|
-
|
|
39
|
-
if [ $FOUND -eq 0 ]; then
|
|
40
|
-
echo ""
|
|
41
|
-
echo "✗ ERROR: Could not find live media"
|
|
42
|
-
lsblk
|
|
43
|
-
echo "Dropping to emergency shell..."
|
|
44
|
-
exec /bin/bash
|
|
45
|
-
fi
|
|
46
|
-
|
|
47
|
-
# Usa il root.img originale dall'ISO (read-only)
|
|
48
|
-
ROOT_IMG="/mnt/live-media/live/root.img"
|
|
49
|
-
|
|
50
|
-
# Verifica LUKS
|
|
51
|
-
if ! cryptsetup isLuks "$ROOT_IMG"; then
|
|
52
|
-
echo "✗ ERROR: root.img is not a LUKS volume"
|
|
53
|
-
file "$ROOT_IMG"
|
|
54
|
-
exec /bin/bash
|
|
55
|
-
fi
|
|
56
|
-
|
|
57
|
-
# Unlock
|
|
58
|
-
echo ""
|
|
59
|
-
echo "Found encrypted root.img"
|
|
60
|
-
MAX_ATTEMPTS=3
|
|
61
|
-
for attempt in $(seq 1 $MAX_ATTEMPTS);
|
|
62
|
-
do
|
|
63
|
-
echo "Enter passphrase to unlock (attempt $attempt of $MAX_ATTEMPTS):"
|
|
64
|
-
if cryptsetup open "$ROOT_IMG" live-root;
|
|
65
|
-
then
|
|
66
|
-
echo ""
|
|
67
|
-
echo "✓ Unlocked successfully!"
|
|
68
|
-
break
|
|
69
|
-
fi
|
|
70
|
-
if [ $attempt -eq $MAX_ATTEMPTS ];
|
|
71
|
-
then
|
|
72
|
-
echo ""
|
|
73
|
-
echo "✗ Failed after $MAX_ATTEMPTS attempts"
|
|
74
|
-
echo "Dropping to shell..."
|
|
75
|
-
exec /bin/bash
|
|
76
|
-
fi
|
|
77
|
-
echo "✗ Wrong passphrase, try again..."
|
|
78
|
-
echo ""
|
|
79
|
-
done
|
|
80
|
-
|
|
81
|
-
# Mount decrypted volume (RO)
|
|
82
|
-
# Il messaggio "skipping orphan cleanup" apparirà, ma è innocuo.
|
|
83
|
-
echo ""
|
|
84
|
-
echo "Mounting decrypted volume (ro)..."
|
|
85
|
-
if ! mount -t ext4 -o ro /dev/mapper/live-root /mnt/root-img; then
|
|
86
|
-
echo "✗ ERROR: Failed to mount decrypted volume (ro)"
|
|
87
|
-
cryptsetup close live-root
|
|
88
|
-
exec /bin/bash
|
|
89
|
-
fi
|
|
90
|
-
|
|
91
|
-
# Mount real filesystem
|
|
92
|
-
echo "Mounting real filesystem (ro)..."
|
|
93
|
-
if ! mount -t squashfs -o ro,loop /mnt/root-img/filesystem.squashfs /mnt/real-root; then
|
|
94
|
-
echo "✗ ERROR: Failed to mount real filesystem"
|
|
95
|
-
umount /mnt/root-img
|
|
96
|
-
cryptsetup close live-root
|
|
97
|
-
exec /bin/bash
|
|
98
|
-
fi
|
|
99
|
-
|
|
100
|
-
# Create overlay in RAM
|
|
101
|
-
echo "Creating writable overlay..."
|
|
102
|
-
mkdir -p /run/overlay-upper
|
|
103
|
-
mkdir -p /run/overlay-work
|
|
104
|
-
if ! mount -t overlay overlay \
|
|
105
|
-
-o lowerdir=/mnt/real-root,upperdir=/run/overlay-upper,workdir=/run/overlay-work \
|
|
106
|
-
/newroot;
|
|
107
|
-
then
|
|
108
|
-
echo "✗ ERROR: Failed to mount overlay"
|
|
109
|
-
umount /mnt/real-root
|
|
110
|
-
umount /mnt/root-img
|
|
111
|
-
cryptsetup close live-root
|
|
112
|
-
exec /bin/bash
|
|
113
|
-
fi
|
|
114
|
-
echo "✓ Overlay mounted successfully on /newroot"
|
|
115
|
-
|
|
116
|
-
# =================================================================
|
|
117
|
-
# BLOCCO CHROOT
|
|
118
|
-
# =================================================================
|
|
119
|
-
echo ""
|
|
120
|
-
echo "Preparing for chroot..."
|
|
121
|
-
|
|
122
|
-
# Crea i punti di montaggio per i filesystem speciali
|
|
123
|
-
mkdir -p /newroot/dev
|
|
124
|
-
mkdir -p /newroot/proc
|
|
125
|
-
mkdir -p /newroot/sys
|
|
126
|
-
mkdir -p /newroot/run
|
|
127
|
-
|
|
128
|
-
# Bind-mount dei filesystem speciali (FONDAMENTALE)
|
|
129
|
-
echo "Binding kernel filesystems..."
|
|
130
|
-
mount --bind /dev /newroot/dev
|
|
131
|
-
mount --bind /dev/pts /newroot/dev/pts
|
|
132
|
-
mount --bind /proc /newroot/proc
|
|
133
|
-
mount --bind /sys /newroot/sys
|
|
134
|
-
mount --bind /run /newroot/run
|
|
135
|
-
|
|
136
|
-
echo "✓ Bind mounts completed."
|
|
137
|
-
echo ""
|
|
138
|
-
echo "=========================================================="
|
|
139
|
-
echo " ENTERING CHROOT"
|
|
140
|
-
echo " Sei ora DENTRO il sistema sbloccato."
|
|
141
|
-
echo " Esegui 'exit' per uscire e tornare alla shell live."
|
|
142
|
-
echo "----------------------------------------------------------"
|
|
143
|
-
echo " Per avviare i servizi (XFCE), prova a eseguire:"
|
|
144
|
-
echo " # systemctl start lightdm.service"
|
|
145
|
-
echo " (o gdm.service, sddm.service, etc.)"
|
|
146
|
-
echo "=========================================================="
|
|
147
|
-
echo ""
|
|
148
|
-
sleep 2
|
|
149
|
-
|
|
150
|
-
# Entra nel chroot con una shell di root completa
|
|
151
|
-
chroot /newroot /bin/su - root
|
|
152
|
-
|
|
153
|
-
# --- ESECUZIONE SOSPESA FINO A 'exit' ---
|
|
154
|
-
|
|
155
|
-
# DOPO L'USCITA DALLO CHROOT
|
|
156
|
-
echo ""
|
|
157
|
-
echo "=========================================================="
|
|
158
|
-
echo " EXITED CHROOT"
|
|
159
|
-
echo " Pulizia dei mount..."
|
|
160
|
-
echo "=========================================================="
|
|
161
|
-
|
|
162
|
-
# Esegui la pulizia finale
|
|
163
|
-
umount -R /newroot/dev 2>/dev/null || true
|
|
164
|
-
umount -R /newroot/proc 2>/dev/null || true
|
|
165
|
-
umount -R /newroot/sys 2>/dev/null || true
|
|
166
|
-
umount -R /newroot/run 2>/dev/null || true
|
|
167
|
-
umount /newroot 2>/dev/null || true
|
|
168
|
-
umount /mnt/real-root 2>/dev/null || true
|
|
169
|
-
umount /mnt/root-img 2>/dev/null || true
|
|
170
|
-
cryptsetup close live-root 2>/dev/null || true
|
|
171
|
-
|
|
172
|
-
echo "✓ Cleanup completo. Ritorno alla shell live."
|
|
File without changes
|
|
File without changes
|