penguins-eggs 25.10.24 → 25.10.26
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 +1 -1
- package/README.md +28 -28
- package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
- package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
- package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
- package/addons/eggs/theme/applications/install-system.desktop +0 -0
- package/assets/calamares/install-system.sh +0 -0
- package/assets/penguins-eggs.desktop +0 -0
- package/assets/penguins-krill.desktop +0 -0
- package/assets/penguins-links-add.desktop +0 -0
- package/assets/penguins-live-installer.desktop +0 -0
- package/bin/dev.js +0 -0
- package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
- package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/opensuse/calamares/settings.yml +0 -0
- package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/init/unattended.sh +0 -0
- package/dist/classes/ovary.d/luks-home.js +11 -4
- package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
- package/dist/classes/ovary.d/luks-interactive-crypto-config.js +135 -0
- package/dist/classes/ovary.d/luks-root-initrd.d.ts +1 -1
- package/dist/classes/ovary.d/luks-root-initrd.js +1 -1
- package/dist/classes/ovary.d/luks-root.js +35 -1
- package/dist/classes/ovary.d/produce.js +6 -0
- package/dist/classes/ovary.d.ts +3 -0
- package/dist/classes/ovary.js +3 -0
- package/dracut/create-symlink +0 -0
- package/dracut/export +0 -0
- package/dracut/export-dracut-analysis +0 -0
- package/dracut/export-dracut-log +0 -0
- package/dracut/mkisofs +0 -0
- package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
- package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
- package/dracut/modules.d/90block/block-cmdline.sh +0 -0
- package/dracut/modules.d/90block/module-setup.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
- package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
- package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
- package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
- package/dracut/renew-initramfs +0 -0
- package/dracut/sbin2bin +0 -0
- package/dracut/update-dracut-conf-d +0 -0
- package/dracut/update-dracut-modules +0 -0
- package/eui/eui-autostart-cinnamon.desktop +0 -0
- package/eui/eui-autostart-xfce.desktop +0 -0
- package/eui/eui-create-image.sh +0 -0
- package/eui/eui-start.sh +0 -0
- package/package.json +124 -130
- package/perrisbrewery/scripts/postinst +0 -0
- package/perrisbrewery/scripts/postrm +0 -0
- package/perrisbrewery/scripts/preinst +0 -0
- package/perrisbrewery/scripts/prerm +0 -0
- package/scripts/99clean +0 -0
- package/scripts/adapt.sh +0 -0
- package/scripts/boot-encrypted-root.sh +138 -95
- package/scripts/bros/waydroid-helper.sh +0 -0
- package/scripts/lsb_release +0 -0
- package/scripts/mom.sh +0 -0
- package/scripts/mount-encrypted-home.sh +130 -65
- package/scripts/pve-live.service +0 -0
- package/scripts/pve-live.sh +0 -0
- package/scripts/resy +0 -0
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
# /scripts/live-premount/boot-encrypted-root.sh
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
echo "
|
|
3
|
+
#
|
|
4
|
+
# This script is designed to Boot Encrypted Linux Live (BELL).
|
|
5
|
+
#
|
|
6
|
+
# Its main purpose is to find an encrypted root image file (root.img)
|
|
7
|
+
# on a live USB/DVD, ask the user for a passphrase to unlock it,
|
|
8
|
+
# and then copy the main system filesystem (filesystem.squashfs)
|
|
9
|
+
# from inside the encrypted image into RAM.
|
|
10
|
+
#
|
|
11
|
+
# the process continue with standard live-boot
|
|
12
|
+
|
|
13
|
+
# enable echo
|
|
14
|
+
# set -e
|
|
15
|
+
|
|
16
|
+
echo "BELL: Boot Encrypted Linux Live"
|
|
17
|
+
|
|
18
|
+
#################################################
|
|
19
|
+
# 1. Setup and Find Media
|
|
20
|
+
|
|
21
|
+
# 1.1 load modules
|
|
22
|
+
echo "BELL: loading modules..."
|
|
17
23
|
modprobe loop 2>/dev/null || true
|
|
18
24
|
modprobe dm_mod 2>/dev/null || true
|
|
19
25
|
modprobe dm_crypt 2>/dev/null || true
|
|
@@ -22,65 +28,90 @@ modprobe ext4 2>/dev/null || true
|
|
|
22
28
|
modprobe squashfs 2>/dev/null || true
|
|
23
29
|
sleep 2
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
|
|
31
|
+
|
|
32
|
+
# 1.2 find BELL media drive
|
|
33
|
+
echo "BELL: find BELL media drive..."
|
|
27
34
|
mkdir -p /mnt/live-media /mnt/ext4
|
|
28
|
-
|
|
35
|
+
BELL_MEDIA_MNT="/mnt/live-media"
|
|
29
36
|
LIVE_DEV=""
|
|
30
|
-
|
|
37
|
+
|
|
38
|
+
# find to max 20 devices
|
|
31
39
|
MAX_WAIT_DEV=20; COUNT_DEV=0
|
|
32
|
-
while [ -z "$LIVE_DEV" ] && [ $COUNT_DEV -lt $MAX_WAIT_DEV ]; do
|
|
33
|
-
|
|
40
|
+
while [ -z "$LIVE_DEV" ] && [ $COUNT_DEV -lt $MAX_WAIT_DEV ]; do
|
|
41
|
+
ls /dev > /dev/null
|
|
42
|
+
for dev in /dev/sr* /dev/sd* /dev/vd* /dev/nvme*n*; do
|
|
43
|
+
if [ ! -b "$dev" ]; then continue; fi
|
|
44
|
+
if mount -o ro "$dev" "$BELL_MEDIA_MNT" 2>/dev/null; then
|
|
45
|
+
if [ -f "${BELL_MEDIA_MNT}/live/root.img" ]; then
|
|
46
|
+
echo "BELL: Found BELL media on $dev"
|
|
47
|
+
LIVE_DEV=$dev
|
|
48
|
+
break 2
|
|
49
|
+
else
|
|
50
|
+
umount "$BELL_MEDIA_MNT" 2>/dev/null || true
|
|
51
|
+
fi
|
|
52
|
+
fi
|
|
53
|
+
done
|
|
54
|
+
sleep 1
|
|
55
|
+
COUNT_DEV=$((COUNT_DEV+1))
|
|
56
|
+
done
|
|
34
57
|
|
|
35
|
-
|
|
36
|
-
|
|
58
|
+
if [ -z "$LIVE_DEV" ]; then
|
|
59
|
+
echo "BELL: Error: no live BELL drive found!"
|
|
60
|
+
ls /dev
|
|
61
|
+
exit 1
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
ROOT_IMG_RO="${BELL_MEDIA_MNT}/live/root.img"
|
|
65
|
+
RAM_MEDIA_MNT="/run/live/medium" # final destination in RAM
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
#################################################
|
|
69
|
+
# 2. Prepare Encrypted Image
|
|
37
70
|
|
|
38
|
-
#
|
|
39
|
-
echo "
|
|
71
|
+
# 2.1 loop device
|
|
72
|
+
echo "BELL: loop device association for $ROOT_IMG_RO..."
|
|
40
73
|
LOOP_DEV_OUTPUT=$(/sbin/losetup -f --show "$ROOT_IMG_RO" 2>/dev/null); LOSETUP_EXIT_STATUS=$?
|
|
41
|
-
if [ $LOSETUP_EXIT_STATUS -ne 0 ] || [ -z "$LOOP_DEV_OUTPUT" ] || ! [ -b "$LOOP_DEV_OUTPUT" ]; then
|
|
74
|
+
if [ $LOSETUP_EXIT_STATUS -ne 0 ] || [ -z "$LOOP_DEV_OUTPUT" ] || ! [ -b "$LOOP_DEV_OUTPUT" ]; then
|
|
75
|
+
echo "BELL: Error: loop association failed!"
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
42
78
|
LOOP_DEV="$LOOP_DEV_OUTPUT"
|
|
43
|
-
echo "
|
|
79
|
+
echo "BELL: loop device $ROOT_IMG_RO associated to: $LOOP_DEV"
|
|
80
|
+
|
|
81
|
+
|
|
44
82
|
|
|
45
|
-
|
|
46
|
-
|
|
83
|
+
#################################################
|
|
84
|
+
# 3. Unlock LUKS (User Interaction)
|
|
47
85
|
|
|
48
|
-
#
|
|
49
|
-
set +e
|
|
86
|
+
# disable 'set -e' to let 3 tempts
|
|
87
|
+
#set +e
|
|
50
88
|
MAX_ATTEMPTS=3
|
|
51
89
|
ATTEMPT=1
|
|
52
90
|
UNLOCKED=0
|
|
53
91
|
|
|
54
92
|
while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# Controlla se Plymouth è attivo
|
|
93
|
+
|
|
94
|
+
# check if plymouth is active
|
|
58
95
|
if plymouth --ping 2>/dev/null; then
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# Chiedi la password a Plymouth e passala a cryptsetup via stdin (--key-file -)
|
|
96
|
+
|
|
97
|
+
# request the password in plymouth and pass it to cryptsetup via stdin (--key-file -)
|
|
62
98
|
if plymouth ask-for-password --prompt="Enter passphrase ($ATTEMPT/$MAX_ATTEMPTS)" | cryptsetup open --readonly --key-file - "$LOOP_DEV" live-root; then
|
|
63
|
-
log "EGGS-BOOT: Sblocco LUKS via Plymouth riuscito."
|
|
64
99
|
UNLOCKED=1
|
|
65
100
|
break
|
|
66
101
|
else
|
|
67
|
-
log "EGGS-BOOT: ERRORE: Sblocco LUKS via Plymouth fallito (Tentativo $ATTEMPT)."
|
|
68
102
|
if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
|
|
69
|
-
|
|
70
|
-
|
|
103
|
+
plymouth display-message --text="Incorrect passphrase. Try again..."
|
|
104
|
+
sleep 2 # wait 2 seconds to read message
|
|
71
105
|
fi
|
|
72
106
|
fi
|
|
73
107
|
else
|
|
74
|
-
# Fallback: Plymouth
|
|
75
|
-
log "EGGS-BOOT: Plymouth non attivo. Chiedo password via console..."
|
|
108
|
+
# Fallback: Plymouth not active
|
|
76
109
|
echo "Please enter passphrase for $LOOP_DEV ($ATTEMPT/$MAX_ATTEMPTS):"
|
|
77
|
-
|
|
110
|
+
|
|
78
111
|
if cryptsetup open --readonly "$LOOP_DEV" live-root; then
|
|
79
|
-
log "EGGS-BOOT: Sblocco LUKS (console) riuscito."
|
|
80
112
|
UNLOCKED=1
|
|
81
113
|
break
|
|
82
114
|
else
|
|
83
|
-
log "EGGS-BOOT: ERRORE: Sblocco LUKS (console) fallito (Tentativo $ATTEMPT)."
|
|
84
115
|
if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
|
|
85
116
|
echo "Incorrect passphrase. Please try again."
|
|
86
117
|
fi
|
|
@@ -91,12 +122,11 @@ while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
|
|
|
91
122
|
sleep 1
|
|
92
123
|
done
|
|
93
124
|
|
|
94
|
-
#
|
|
95
|
-
set -e
|
|
125
|
+
# Enable echo
|
|
126
|
+
# set -e
|
|
96
127
|
|
|
97
|
-
#
|
|
128
|
+
# check if all attempts have failed
|
|
98
129
|
if [ $UNLOCKED -eq 0 ]; then
|
|
99
|
-
log "EGGS-BOOT: ERRORE: Numero massimo tentativi raggiunto."
|
|
100
130
|
if plymouth --ping 2>/dev/null; then
|
|
101
131
|
plymouth display-message --text="LUKS Unlock Failed: Max attempts reached"
|
|
102
132
|
sleep 5
|
|
@@ -105,73 +135,86 @@ if [ $UNLOCKED -eq 0 ]; then
|
|
|
105
135
|
exit 1
|
|
106
136
|
fi
|
|
107
137
|
|
|
108
|
-
echo "
|
|
138
|
+
echo "BELL: LUKS unlocked ($LOOP_DEV -> live-root) [readonly]. Waiting for mapper..."
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
#################################################
|
|
142
|
+
# 4. copy System to RAM
|
|
109
143
|
|
|
110
|
-
#
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
144
|
+
# 4.1 waiting mapper
|
|
145
|
+
MAX_WAIT_MAP=10; COUNT_MAP=0
|
|
146
|
+
while [ ! -b /dev/mapper/live-root ] && [ $COUNT_MAP -lt $MAX_WAIT_MAP ]; do
|
|
147
|
+
sleep 1
|
|
148
|
+
COUNT_MAP=$((COUNT_MAP+1))
|
|
149
|
+
done
|
|
114
150
|
|
|
115
|
-
|
|
116
|
-
echo "
|
|
151
|
+
if [ ! -b /dev/mapper/live-root ]; then
|
|
152
|
+
echo "BELL: Error: mapper did not appear."
|
|
153
|
+
cryptsetup close live-root || true
|
|
154
|
+
/sbin/losetup -d "$LOOP_DEV" || true
|
|
155
|
+
exit 1
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
# 4.2 mount ext4 filesystem
|
|
159
|
+
echo "BELL: mounting ext4 filesystem..."
|
|
117
160
|
mount -t ext4 -o ro /dev/mapper/live-root /mnt/ext4
|
|
118
161
|
|
|
119
162
|
SQFS_SRC="/mnt/ext4/filesystem.squashfs"
|
|
120
|
-
if [ ! -f "$SQFS_SRC" ]; then
|
|
163
|
+
if [ ! -f "$SQFS_SRC" ]; then
|
|
164
|
+
echo "BELL: error: $SQFS_SRC not found!"
|
|
165
|
+
exit 1
|
|
166
|
+
fi
|
|
121
167
|
|
|
122
|
-
|
|
123
|
-
|
|
168
|
+
|
|
169
|
+
# 4.3. Prepare RAM destination /run
|
|
170
|
+
echo "BELL: preparing RAM disk ${RAM_MEDIA_MNT}..."
|
|
124
171
|
SQFS_SIZE_BYTES=$(stat -c%s "$SQFS_SRC")
|
|
125
|
-
NEEDED_SIZE_MB=$(( $SQFS_SIZE_BYTES / 1024 / 1024 + 500 )) #
|
|
126
|
-
echo "
|
|
127
|
-
echo "
|
|
172
|
+
NEEDED_SIZE_MB=$(( $SQFS_SIZE_BYTES / 1024 / 1024 + 500 )) # add 500MB buffer
|
|
173
|
+
echo "BELL: Estimated space required in /run: ${NEEDED_SIZE_MB} MB"
|
|
174
|
+
echo "BELL: increase size /run (tmpfs)..."
|
|
128
175
|
if ! mount -o remount,size=${NEEDED_SIZE_MB}M /run; then
|
|
129
|
-
echo "
|
|
176
|
+
echo "BELL: WARN: Remount /run failed, space may be insufficient."
|
|
130
177
|
df -h /run
|
|
131
178
|
fi
|
|
132
179
|
mkdir -p "${RAM_MEDIA_MNT}/live"
|
|
133
180
|
|
|
134
|
-
# 4.
|
|
181
|
+
# 4.4 copy ONLY filesystem.squashfs to RAM
|
|
135
182
|
SQFS_DEST="${RAM_MEDIA_MNT}/live/filesystem.squashfs"
|
|
136
|
-
echo "
|
|
183
|
+
echo "BELL: copying $SQFS_SRC -> $SQFS_DEST..."
|
|
137
184
|
if command -v rsync >/dev/null; then
|
|
138
185
|
rsync -a --info=progress2 "$SQFS_SRC" "$SQFS_DEST"
|
|
139
186
|
else
|
|
140
187
|
cp "$SQFS_SRC" "$SQFS_DEST"
|
|
141
188
|
fi
|
|
142
189
|
SQFS_SIZE=$(du -h "$SQFS_DEST" | cut -f1)
|
|
143
|
-
echo "
|
|
144
|
-
|
|
145
|
-
# 5. Copia i metadati essenziali del medium in RAM
|
|
146
|
-
echo "EGGS-BOOT: Copia metadati (.disk, kernel, initrd) da ${ORIG_MEDIA_MNT}..."
|
|
190
|
+
echo "BELL: filesystem.squashfs ($SQFS_SIZE) copied to RAM."
|
|
147
191
|
|
|
148
|
-
#
|
|
149
|
-
if [ -d "${
|
|
150
|
-
cp -a "${
|
|
151
|
-
echo "
|
|
192
|
+
# 4.5 copy .disk
|
|
193
|
+
if [ -d "${BELL_MEDIA_MNT}/.disk" ]; then
|
|
194
|
+
cp -a "${BELL_MEDIA_MNT}/.disk" "${RAM_MEDIA_MNT}/"
|
|
195
|
+
echo "BELL: .disk copied."
|
|
152
196
|
else
|
|
153
|
-
echo "
|
|
197
|
+
echo "BELL: Warning: .disk not found."
|
|
154
198
|
fi
|
|
155
199
|
|
|
156
|
-
#
|
|
157
|
-
|
|
158
|
-
cp -a "${
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
echo "
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
ls -l "$
|
|
175
|
-
|
|
176
|
-
echo "EGGS-BOOT: =========================================="
|
|
200
|
+
# 4.6 Copy vmlinuz and initrd (we need to install the system)
|
|
201
|
+
cp -a "${BELL_MEDIA_MNT}/live/vmlinuz"* "${RAM_MEDIA_MNT}/live/" 2>/dev/null || true
|
|
202
|
+
cp -a "${BELL_MEDIA_MNT}/live/initrd"* "${RAM_MEDIA_MNT}/live/" 2>/dev/null || true
|
|
203
|
+
echo "BELL: Attempted kernel/initrd copy (any errors ignored)."
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
#################################################
|
|
207
|
+
# 6. Cleanup and Hand-off
|
|
208
|
+
echo "BELL: cleaning used mounts and devices..."
|
|
209
|
+
umount /mnt/ext4 || echo "BELL: WARN: umount /mnt/ext4 failed ($?)"
|
|
210
|
+
cryptsetup close live-root || echo "BELL: WARN: cryptsetup close live-root failed ($?)"
|
|
211
|
+
/sbin/losetup -d "$LOOP_DEV" || echo "BELL: WARN: losetup -d $LOOP_DEV failed ($?)"
|
|
212
|
+
umount "$BELL_MEDIA_MNT" || echo "BELL: WARN: umount ${BELL_MEDIA_MNT} failed ($?)"
|
|
213
|
+
echo "BELL: cleaning complete."
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
# 6.1 switching to live boot
|
|
217
|
+
echo "BELL: live ISO image built in RAM on ${RAM_MEDIA_MNT}"
|
|
218
|
+
# ls -l "$RAM_MEDIA_MNT"
|
|
219
|
+
# ls -l "${RAM_MEDIA_MNT}/live"
|
|
177
220
|
exit 0
|
|
File without changes
|
package/scripts/lsb_release
CHANGED
|
File without changes
|
package/scripts/mom.sh
CHANGED
|
File without changes
|