penguins-eggs 25.10.19 → 25.10.23

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.
Files changed (451) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +767 -2
  3. package/README.pdf +1723 -1731
  4. package/addons/eggs/theme/livecd/isolinux.main.simple.cfg +0 -1
  5. package/package.json +3 -3
  6. package/scripts/boot-encrypted-root.sh +177 -0
  7. package/scripts/mount-encrypted-home.sh +92 -56
  8. package/dist/classes/bleach.d.ts +0 -37
  9. package/dist/classes/bleach.js +0 -148
  10. package/dist/classes/cli-autologin.d.ts +0 -52
  11. package/dist/classes/cli-autologin.js +0 -252
  12. package/dist/classes/compressors.d.ts +0 -54
  13. package/dist/classes/compressors.js +0 -109
  14. package/dist/classes/daddy.d.ts +0 -26
  15. package/dist/classes/daddy.js +0 -175
  16. package/dist/classes/distro.d.ts +0 -32
  17. package/dist/classes/distro.js +0 -363
  18. package/dist/classes/diversions.d.ts +0 -53
  19. package/dist/classes/diversions.js +0 -152
  20. package/dist/classes/incubation/branding.d.ts +0 -17
  21. package/dist/classes/incubation/branding.js +0 -85
  22. package/dist/classes/incubation/customize/customize-partitions.d.ts +0 -4
  23. package/dist/classes/incubation/customize/customize-partitions.js +0 -29
  24. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +0 -1
  25. package/dist/classes/incubation/fisherman-helper/initcpio.js +0 -69
  26. package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
  27. package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
  28. package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
  29. package/dist/classes/incubation/fisherman-helper/settings.js +0 -116
  30. package/dist/classes/incubation/fisherman.d.ts +0 -71
  31. package/dist/classes/incubation/fisherman.js +0 -281
  32. package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
  33. package/dist/classes/incubation/incubator.d/alpine.js +0 -78
  34. package/dist/classes/incubation/incubator.d/archlinux.d.ts +0 -32
  35. package/dist/classes/incubation/incubator.d/archlinux.js +0 -82
  36. package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
  37. package/dist/classes/incubation/incubator.d/bionic.js +0 -83
  38. package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
  39. package/dist/classes/incubation/incubator.d/buster.js +0 -101
  40. package/dist/classes/incubation/incubator.d/fedora.d.ts +0 -32
  41. package/dist/classes/incubation/incubator.d/fedora.js +0 -81
  42. package/dist/classes/incubation/incubator.d/focal.d.ts +0 -32
  43. package/dist/classes/incubation/incubator.d/focal.js +0 -85
  44. package/dist/classes/incubation/incubator.d/manjaro.d.ts +0 -32
  45. package/dist/classes/incubation/incubator.d/manjaro.js +0 -82
  46. package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
  47. package/dist/classes/incubation/incubator.d/noble.js +0 -102
  48. package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
  49. package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
  50. package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
  51. package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
  52. package/dist/classes/incubation/incubator.d/trixie.d.ts +0 -32
  53. package/dist/classes/incubation/incubator.d/trixie.js +0 -98
  54. package/dist/classes/incubation/incubator.d.ts +0 -48
  55. package/dist/classes/incubation/incubator.js +0 -378
  56. package/dist/classes/incubation/installer.d.ts +0 -13
  57. package/dist/classes/incubation/installer.js +0 -52
  58. package/dist/classes/keyboards.d.ts +0 -50
  59. package/dist/classes/keyboards.js +0 -287
  60. package/dist/classes/locales.d.ts +0 -21
  61. package/dist/classes/locales.js +0 -77
  62. package/dist/classes/network.d.ts +0 -37
  63. package/dist/classes/network.js +0 -98
  64. package/dist/classes/ovary.d/bind-live-fs.d.ts +0 -18
  65. package/dist/classes/ovary.d/bind-live-fs.js +0 -185
  66. package/dist/classes/ovary.d/bind-vfs.d.ts +0 -17
  67. package/dist/classes/ovary.d/bind-vfs.js +0 -37
  68. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +0 -13
  69. package/dist/classes/ovary.d/create-xdg-autostart.js +0 -194
  70. package/dist/classes/ovary.d/edit-live-fs.d.ts +0 -20
  71. package/dist/classes/ovary.d/edit-live-fs.js +0 -239
  72. package/dist/classes/ovary.d/fertilization.d.ts +0 -12
  73. package/dist/classes/ovary.d/fertilization.js +0 -53
  74. package/dist/classes/ovary.d/finished.d.ts +0 -13
  75. package/dist/classes/ovary.d/finished.js +0 -40
  76. package/dist/classes/ovary.d/initrd.d.ts +0 -21
  77. package/dist/classes/ovary.d/initrd.js +0 -95
  78. package/dist/classes/ovary.d/kernel-copy.d.ts +0 -12
  79. package/dist/classes/ovary.d/kernel-copy.js +0 -22
  80. package/dist/classes/ovary.d/live-create-structure.d.ts +0 -12
  81. package/dist/classes/ovary.d/live-create-structure.js +0 -70
  82. package/dist/classes/ovary.d/luks-get-password.d.ts +0 -12
  83. package/dist/classes/ovary.d/luks-get-password.js +0 -57
  84. package/dist/classes/ovary.d/luks-home-support.d.ts +0 -12
  85. package/dist/classes/ovary.d/luks-home-support.js +0 -75
  86. package/dist/classes/ovary.d/luks-home.d.ts +0 -15
  87. package/dist/classes/ovary.d/luks-home.js +0 -140
  88. package/dist/classes/ovary.d/luks-root-bootstrap-builder.d.ts +0 -11
  89. package/dist/classes/ovary.d/luks-root-bootstrap-builder.js +0 -45
  90. package/dist/classes/ovary.d/luks-root.d.ts +0 -15
  91. package/dist/classes/ovary.d/luks-root.js +0 -126
  92. package/dist/classes/ovary.d/make-dot-disk.d.ts +0 -12
  93. package/dist/classes/ovary.d/make-dot-disk.js +0 -62
  94. package/dist/classes/ovary.d/make-efi.d.ts +0 -14
  95. package/dist/classes/ovary.d/make-efi.js +0 -274
  96. package/dist/classes/ovary.d/make-iso.d.ts +0 -13
  97. package/dist/classes/ovary.d/make-iso.js +0 -45
  98. package/dist/classes/ovary.d/make-squashfs.d.ts +0 -18
  99. package/dist/classes/ovary.d/make-squashfs.js +0 -114
  100. package/dist/classes/ovary.d/merged.d.ts +0 -27
  101. package/dist/classes/ovary.d/merged.js +0 -78
  102. package/dist/classes/ovary.d/produce.d.ts +0 -23
  103. package/dist/classes/ovary.d/produce.js +0 -347
  104. package/dist/classes/ovary.d/rexec.d.ts +0 -13
  105. package/dist/classes/ovary.d/rexec.js +0 -34
  106. package/dist/classes/ovary.d/syslinux.d.ts +0 -12
  107. package/dist/classes/ovary.d/syslinux.js +0 -82
  108. package/dist/classes/ovary.d/user-create-live.d.ts +0 -14
  109. package/dist/classes/ovary.d/user-create-live.js +0 -97
  110. package/dist/classes/ovary.d/users-remove.d.ts +0 -9
  111. package/dist/classes/ovary.d/users-remove.js +0 -38
  112. package/dist/classes/ovary.d/xorriso-command.d.ts +0 -14
  113. package/dist/classes/ovary.d/xorriso-command.js +0 -121
  114. package/dist/classes/ovary.d.ts +0 -106
  115. package/dist/classes/ovary.js +0 -116
  116. package/dist/classes/pacman.d/alpine.d.ts +0 -56
  117. package/dist/classes/pacman.d/alpine.js +0 -167
  118. package/dist/classes/pacman.d/archlinux.d.ts +0 -62
  119. package/dist/classes/pacman.d/archlinux.js +0 -128
  120. package/dist/classes/pacman.d/debian.d.ts +0 -65
  121. package/dist/classes/pacman.d/debian.js +0 -143
  122. package/dist/classes/pacman.d/fedora.d.ts +0 -53
  123. package/dist/classes/pacman.d/fedora.js +0 -107
  124. package/dist/classes/pacman.d/openmamba.d.ts +0 -52
  125. package/dist/classes/pacman.d/openmamba.js +0 -106
  126. package/dist/classes/pacman.d/opensuse.d.ts +0 -53
  127. package/dist/classes/pacman.d/opensuse.js +0 -109
  128. package/dist/classes/pacman.d.ts +0 -139
  129. package/dist/classes/pacman.js +0 -683
  130. package/dist/classes/pve-live.d.ts +0 -17
  131. package/dist/classes/pve-live.js +0 -52
  132. package/dist/classes/pxe.d.ts +0 -76
  133. package/dist/classes/pxe.js +0 -353
  134. package/dist/classes/settings.d.ts +0 -52
  135. package/dist/classes/settings.js +0 -185
  136. package/dist/classes/sources_list.d.ts +0 -28
  137. package/dist/classes/sources_list.js +0 -89
  138. package/dist/classes/systemctl.d.ts +0 -47
  139. package/dist/classes/systemctl.js +0 -86
  140. package/dist/classes/tailor.d.ts +0 -50
  141. package/dist/classes/tailor.js +0 -563
  142. package/dist/classes/tools.d.ts +0 -26
  143. package/dist/classes/tools.js +0 -50
  144. package/dist/classes/users.d.ts +0 -28
  145. package/dist/classes/users.js +0 -143
  146. package/dist/classes/utils.d/kernel.d.ts +0 -39
  147. package/dist/classes/utils.d/kernel.js +0 -206
  148. package/dist/classes/utils.d.ts +0 -328
  149. package/dist/classes/utils.js +0 -958
  150. package/dist/classes/xdg.d.ts +0 -45
  151. package/dist/classes/xdg.js +0 -337
  152. package/dist/classes/yolk.d.ts +0 -33
  153. package/dist/classes/yolk.js +0 -114
  154. package/dist/commands/adapt.d.ts +0 -17
  155. package/dist/commands/adapt.js +0 -33
  156. package/dist/commands/analyze.d.ts +0 -26
  157. package/dist/commands/analyze.js +0 -95
  158. package/dist/commands/calamares.d.ts +0 -29
  159. package/dist/commands/calamares.js +0 -112
  160. package/dist/commands/config.d.ts +0 -35
  161. package/dist/commands/config.js +0 -120
  162. package/dist/commands/cuckoo.d.ts +0 -17
  163. package/dist/commands/cuckoo.js +0 -61
  164. package/dist/commands/dad.d.ts +0 -21
  165. package/dist/commands/dad.js +0 -47
  166. package/dist/commands/export/iso.d.ts +0 -19
  167. package/dist/commands/export/iso.js +0 -55
  168. package/dist/commands/export/pkg.d.ts +0 -29
  169. package/dist/commands/export/pkg.js +0 -173
  170. package/dist/commands/export/tarballs.d.ts +0 -27
  171. package/dist/commands/export/tarballs.js +0 -79
  172. package/dist/commands/install.d.ts +0 -39
  173. package/dist/commands/install.js +0 -113
  174. package/dist/commands/kill.d.ts +0 -24
  175. package/dist/commands/kill.js +0 -50
  176. package/dist/commands/love.d.ts +0 -24
  177. package/dist/commands/love.js +0 -111
  178. package/dist/commands/mom.d.ts +0 -16
  179. package/dist/commands/mom.js +0 -30
  180. package/dist/commands/pods.d.ts +0 -22
  181. package/dist/commands/pods.js +0 -92
  182. package/dist/commands/produce.d.ts +0 -36
  183. package/dist/commands/produce.js +0 -218
  184. package/dist/commands/status.d.ts +0 -23
  185. package/dist/commands/status.js +0 -31
  186. package/dist/commands/tools/clean.d.ts +0 -18
  187. package/dist/commands/tools/clean.js +0 -37
  188. package/dist/commands/tools/repo.d.ts +0 -31
  189. package/dist/commands/tools/repo.js +0 -246
  190. package/dist/commands/tools/skel.d.ts +0 -18
  191. package/dist/commands/tools/skel.js +0 -44
  192. package/dist/commands/tools/stat.d.ts +0 -31
  193. package/dist/commands/tools/stat.js +0 -70
  194. package/dist/commands/tools/yolk.d.ts +0 -24
  195. package/dist/commands/tools/yolk.js +0 -45
  196. package/dist/commands/update.d.ts +0 -46
  197. package/dist/commands/update.js +0 -238
  198. package/dist/commands/wardrobe/get.d.ts +0 -23
  199. package/dist/commands/wardrobe/get.js +0 -52
  200. package/dist/commands/wardrobe/list.d.ts +0 -24
  201. package/dist/commands/wardrobe/list.js +0 -125
  202. package/dist/commands/wardrobe/show.d.ts +0 -25
  203. package/dist/commands/wardrobe/show.js +0 -97
  204. package/dist/commands/wardrobe/wear.d.ts +0 -26
  205. package/dist/commands/wardrobe/wear.js +0 -84
  206. package/dist/dhcpd-proxy/classes/packet.d.ts +0 -36
  207. package/dist/dhcpd-proxy/classes/packet.js +0 -124
  208. package/dist/dhcpd-proxy/index.d.ts +0 -4
  209. package/dist/dhcpd-proxy/index.js +0 -4
  210. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +0 -45
  211. package/dist/dhcpd-proxy/interfaces/i-pxe.js +0 -1
  212. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +0 -11
  213. package/dist/dhcpd-proxy/lib/packet/converters.js +0 -395
  214. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +0 -10
  215. package/dist/dhcpd-proxy/lib/packet/message-types.js +0 -12
  216. package/dist/dhcpd-proxy/lib/packet/options.d.ts +0 -8
  217. package/dist/dhcpd-proxy/lib/packet/options.js +0 -264
  218. package/dist/dhcpd-proxy/lib/sprintf.d.ts +0 -6
  219. package/dist/dhcpd-proxy/lib/sprintf.js +0 -130
  220. package/dist/dhcpd-proxy/lib/utils.d.ts +0 -126
  221. package/dist/dhcpd-proxy/lib/utils.js +0 -255
  222. package/dist/dhcpd-proxy/simple-proxy.d.ts +0 -11
  223. package/dist/dhcpd-proxy/simple-proxy.js +0 -118
  224. package/dist/index.d.ts +0 -8
  225. package/dist/index.js +0 -8
  226. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +0 -23
  227. package/dist/interfaces/calamares/i-calamares-bootloader.js +0 -7
  228. package/dist/interfaces/calamares/i-calamares-branding.d.ts +0 -46
  229. package/dist/interfaces/calamares/i-calamares-branding.js +0 -1
  230. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +0 -34
  231. package/dist/interfaces/calamares/i-calamares-displaymanager.js +0 -1
  232. package/dist/interfaces/calamares/i-calamares-finished.d.ts +0 -14
  233. package/dist/interfaces/calamares/i-calamares-finished.js +0 -1
  234. package/dist/interfaces/calamares/i-calamares-packages.d.ts +0 -26
  235. package/dist/interfaces/calamares/i-calamares-packages.js +0 -1
  236. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +0 -39
  237. package/dist/interfaces/calamares/i-calamares-partitions.js +0 -1
  238. package/dist/interfaces/calamares/i-calamares-settings.d.ts +0 -36
  239. package/dist/interfaces/calamares/i-calamares-settings.js +0 -1
  240. package/dist/interfaces/i-addons.d.ts +0 -12
  241. package/dist/interfaces/i-addons.js +0 -8
  242. package/dist/interfaces/i-analyze.d.ts +0 -17
  243. package/dist/interfaces/i-analyze.js +0 -17
  244. package/dist/interfaces/i-app.d.ts +0 -14
  245. package/dist/interfaces/i-app.js +0 -8
  246. package/dist/interfaces/i-config-tools.d.ts +0 -15
  247. package/dist/interfaces/i-config-tools.js +0 -8
  248. package/dist/interfaces/i-devices.d.ts +0 -20
  249. package/dist/interfaces/i-devices.js +0 -8
  250. package/dist/interfaces/i-distro.d.ts +0 -23
  251. package/dist/interfaces/i-distro.js +0 -8
  252. package/dist/interfaces/i-drive-list.d.ts +0 -33
  253. package/dist/interfaces/i-drive-list.js +0 -8
  254. package/dist/interfaces/i-eggs-config.d.ts +0 -32
  255. package/dist/interfaces/i-eggs-config.js +0 -8
  256. package/dist/interfaces/i-excludes.d.ts +0 -14
  257. package/dist/interfaces/i-excludes.js +0 -8
  258. package/dist/interfaces/i-exec.d.ts +0 -11
  259. package/dist/interfaces/i-exec.js +0 -8
  260. package/dist/interfaces/i-initrd.d.ts +0 -13
  261. package/dist/interfaces/i-initrd.js +0 -8
  262. package/dist/interfaces/i-install.d.ts +0 -16
  263. package/dist/interfaces/i-install.js +0 -8
  264. package/dist/interfaces/i-installer.d.ts +0 -17
  265. package/dist/interfaces/i-installer.js +0 -8
  266. package/dist/interfaces/i-luks-passphrase.d.ts +0 -11
  267. package/dist/interfaces/i-luks-passphrase.js +0 -8
  268. package/dist/interfaces/i-materia.d.ts +0 -36
  269. package/dist/interfaces/i-materia.js +0 -8
  270. package/dist/interfaces/i-net.d.ts +0 -16
  271. package/dist/interfaces/i-net.js +0 -8
  272. package/dist/interfaces/i-os-release.d.ts +0 -5
  273. package/dist/interfaces/i-os-release.js +0 -1
  274. package/dist/interfaces/i-packages.d.ts +0 -16
  275. package/dist/interfaces/i-packages.js +0 -8
  276. package/dist/interfaces/i-partitions.d.ts +0 -16
  277. package/dist/interfaces/i-partitions.js +0 -8
  278. package/dist/interfaces/i-pxe.d.ts +0 -45
  279. package/dist/interfaces/i-pxe.js +0 -1
  280. package/dist/interfaces/i-remix.d.ts +0 -21
  281. package/dist/interfaces/i-remix.js +0 -8
  282. package/dist/interfaces/i-settings.d.ts +0 -33
  283. package/dist/interfaces/i-settings.js +0 -8
  284. package/dist/interfaces/i-user.d.ts +0 -14
  285. package/dist/interfaces/i-user.js +0 -8
  286. package/dist/interfaces/i-workdir.d.ts +0 -14
  287. package/dist/interfaces/i-workdir.js +0 -8
  288. package/dist/interfaces/i-xkb-model.d.ts +0 -24
  289. package/dist/interfaces/i-xkb-model.js +0 -8
  290. package/dist/interfaces/index.d.ts +0 -26
  291. package/dist/interfaces/index.js +0 -8
  292. package/dist/krill/classes/cfs.d.ts +0 -17
  293. package/dist/krill/classes/cfs.js +0 -39
  294. package/dist/krill/classes/krill_enums.d.ts +0 -37
  295. package/dist/krill/classes/krill_enums.js +0 -41
  296. package/dist/krill/classes/prepare.d/confirm.d.ts +0 -5
  297. package/dist/krill/classes/prepare.d/confirm.js +0 -30
  298. package/dist/krill/classes/prepare.d/keyboard.d.ts +0 -14
  299. package/dist/krill/classes/prepare.d/keyboard.js +0 -62
  300. package/dist/krill/classes/prepare.d/location.d.ts +0 -17
  301. package/dist/krill/classes/prepare.d/location.js +0 -59
  302. package/dist/krill/classes/prepare.d/network.d.ts +0 -14
  303. package/dist/krill/classes/prepare.d/network.js +0 -68
  304. package/dist/krill/classes/prepare.d/partitions.d.ts +0 -14
  305. package/dist/krill/classes/prepare.d/partitions.js +0 -86
  306. package/dist/krill/classes/prepare.d/summary.d.ts +0 -15
  307. package/dist/krill/classes/prepare.d/summary.js +0 -72
  308. package/dist/krill/classes/prepare.d/users.d.ts +0 -6
  309. package/dist/krill/classes/prepare.d/users.js +0 -63
  310. package/dist/krill/classes/prepare.d/welcome.d.ts +0 -6
  311. package/dist/krill/classes/prepare.d/welcome.js +0 -30
  312. package/dist/krill/classes/prepare.d.ts +0 -89
  313. package/dist/krill/classes/prepare.js +0 -319
  314. package/dist/krill/classes/sequence.d/add_user.d.ts +0 -20
  315. package/dist/krill/classes/sequence.d/add_user.js +0 -77
  316. package/dist/krill/classes/sequence.d/bootloader.d.ts +0 -14
  317. package/dist/krill/classes/sequence.d/bootloader.js +0 -117
  318. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +0 -14
  319. package/dist/krill/classes/sequence.d/bootloader_config.js +0 -192
  320. package/dist/krill/classes/sequence.d/change_password.d.ts +0 -15
  321. package/dist/krill/classes/sequence.d/change_password.js +0 -18
  322. package/dist/krill/classes/sequence.d/del_live_user.d.ts +0 -14
  323. package/dist/krill/classes/sequence.d/del_live_user.js +0 -39
  324. package/dist/krill/classes/sequence.d/fstab.d.ts +0 -14
  325. package/dist/krill/classes/sequence.d/fstab.js +0 -177
  326. package/dist/krill/classes/sequence.d/grubcfg.d.ts +0 -17
  327. package/dist/krill/classes/sequence.d/grubcfg.js +0 -35
  328. package/dist/krill/classes/sequence.d/hostname.d.ts +0 -13
  329. package/dist/krill/classes/sequence.d/hostname.js +0 -50
  330. package/dist/krill/classes/sequence.d/initramfs.d.ts +0 -13
  331. package/dist/krill/classes/sequence.d/initramfs.js +0 -54
  332. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +0 -14
  333. package/dist/krill/classes/sequence.d/initramfs_cfg.js +0 -35
  334. package/dist/krill/classes/sequence.d/locale.d.ts +0 -13
  335. package/dist/krill/classes/sequence.d/locale.js +0 -91
  336. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +0 -10
  337. package/dist/krill/classes/sequence.d/locale_cfg.js +0 -58
  338. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +0 -14
  339. package/dist/krill/classes/sequence.d/m_keyboard.js +0 -58
  340. package/dist/krill/classes/sequence.d/machine_id.d.ts +0 -15
  341. package/dist/krill/classes/sequence.d/machine_id.js +0 -33
  342. package/dist/krill/classes/sequence.d/mkfs.d.ts +0 -15
  343. package/dist/krill/classes/sequence.d/mkfs.js +0 -88
  344. package/dist/krill/classes/sequence.d/mount_fs.d.ts +0 -17
  345. package/dist/krill/classes/sequence.d/mount_fs.js +0 -68
  346. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +0 -17
  347. package/dist/krill/classes/sequence.d/mount_vfs.js +0 -59
  348. package/dist/krill/classes/sequence.d/network_cfg.d.ts +0 -19
  349. package/dist/krill/classes/sequence.d/network_cfg.js +0 -73
  350. package/dist/krill/classes/sequence.d/packages.d.ts +0 -14
  351. package/dist/krill/classes/sequence.d/packages.js +0 -111
  352. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +0 -17
  353. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +0 -73
  354. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +0 -16
  355. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +0 -51
  356. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +0 -17
  357. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +0 -77
  358. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +0 -10
  359. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -33
  360. package/dist/krill/classes/sequence.d/partition.d.ts +0 -14
  361. package/dist/krill/classes/sequence.d/partition.js +0 -84
  362. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +0 -13
  363. package/dist/krill/classes/sequence.d/remove_installer_link.js +0 -35
  364. package/dist/krill/classes/sequence.d/umount.d.ts +0 -14
  365. package/dist/krill/classes/sequence.d/umount.js +0 -28
  366. package/dist/krill/classes/sequence.d/unpackfs.d.ts +0 -13
  367. package/dist/krill/classes/sequence.d/unpackfs.js +0 -20
  368. package/dist/krill/classes/sequence.d.ts +0 -134
  369. package/dist/krill/classes/sequence.js +0 -400
  370. package/dist/krill/components/finished.d.ts +0 -16
  371. package/dist/krill/components/finished.js +0 -56
  372. package/dist/krill/components/information.d.ts +0 -8
  373. package/dist/krill/components/information.js +0 -162
  374. package/dist/krill/components/install.d.ts +0 -15
  375. package/dist/krill/components/install.js +0 -60
  376. package/dist/krill/components/keyboard.d.ts +0 -16
  377. package/dist/krill/components/keyboard.js +0 -54
  378. package/dist/krill/components/location.d.ts +0 -16
  379. package/dist/krill/components/location.js +0 -59
  380. package/dist/krill/components/network.d.ts +0 -19
  381. package/dist/krill/components/network.js +0 -65
  382. package/dist/krill/components/partitions.d.ts +0 -18
  383. package/dist/krill/components/partitions.js +0 -89
  384. package/dist/krill/components/steps.d.ts +0 -13
  385. package/dist/krill/components/steps.js +0 -148
  386. package/dist/krill/components/summary.d.ts +0 -25
  387. package/dist/krill/components/summary.js +0 -77
  388. package/dist/krill/components/title.d.ts +0 -11
  389. package/dist/krill/components/title.js +0 -35
  390. package/dist/krill/components/users.d.ts +0 -24
  391. package/dist/krill/components/users.js +0 -80
  392. package/dist/krill/components/welcome.d.ts +0 -13
  393. package/dist/krill/components/welcome.js +0 -63
  394. package/dist/krill/interfaces/i_krill.d.ts +0 -44
  395. package/dist/krill/interfaces/i_krill.js +0 -8
  396. package/dist/krill/interfaces/i_krill_config.d.ts +0 -35
  397. package/dist/krill/interfaces/i_krill_config.js +0 -8
  398. package/dist/krill/lib/get_address.d.ts +0 -8
  399. package/dist/krill/lib/get_address.js +0 -23
  400. package/dist/krill/lib/get_dns.d.ts +0 -8
  401. package/dist/krill/lib/get_dns.js +0 -23
  402. package/dist/krill/lib/get_domain.d.ts +0 -8
  403. package/dist/krill/lib/get_domain.js +0 -23
  404. package/dist/krill/lib/get_gateway.d.ts +0 -8
  405. package/dist/krill/lib/get_gateway.js +0 -23
  406. package/dist/krill/lib/get_hostname.d.ts +0 -8
  407. package/dist/krill/lib/get_hostname.js +0 -23
  408. package/dist/krill/lib/get_luks_passphrase.d.ts +0 -8
  409. package/dist/krill/lib/get_luks_passphrase.js +0 -32
  410. package/dist/krill/lib/get_netmask.d.ts +0 -8
  411. package/dist/krill/lib/get_netmask.js +0 -23
  412. package/dist/krill/lib/get_password.d.ts +0 -8
  413. package/dist/krill/lib/get_password.js +0 -36
  414. package/dist/krill/lib/get_userfullname.d.ts +0 -8
  415. package/dist/krill/lib/get_userfullname.js +0 -23
  416. package/dist/krill/lib/get_username.d.ts +0 -8
  417. package/dist/krill/lib/get_username.js +0 -23
  418. package/dist/krill/lib/select_address_type.d.ts +0 -8
  419. package/dist/krill/lib/select_address_type.js +0 -24
  420. package/dist/krill/lib/select_filesystem_type.d.ts +0 -8
  421. package/dist/krill/lib/select_filesystem_type.js +0 -40
  422. package/dist/krill/lib/select_installation_device.d.ts +0 -8
  423. package/dist/krill/lib/select_installation_device.js +0 -40
  424. package/dist/krill/lib/select_installation_mode.d.ts +0 -9
  425. package/dist/krill/lib/select_installation_mode.js +0 -25
  426. package/dist/krill/lib/select_interface.d.ts +0 -8
  427. package/dist/krill/lib/select_interface.js +0 -24
  428. package/dist/krill/lib/select_keyboard_layout.d.ts +0 -11
  429. package/dist/krill/lib/select_keyboard_layout.js +0 -36
  430. package/dist/krill/lib/select_keyboard_model.d.ts +0 -11
  431. package/dist/krill/lib/select_keyboard_model.js +0 -34
  432. package/dist/krill/lib/select_keyboard_option.d.ts +0 -11
  433. package/dist/krill/lib/select_keyboard_option.js +0 -34
  434. package/dist/krill/lib/select_keyboard_variant.d.ts +0 -11
  435. package/dist/krill/lib/select_keyboard_variant.js +0 -35
  436. package/dist/krill/lib/select_languages.d.ts +0 -8
  437. package/dist/krill/lib/select_languages.js +0 -28
  438. package/dist/krill/lib/select_regions.d.ts +0 -8
  439. package/dist/krill/lib/select_regions.js +0 -24
  440. package/dist/krill/lib/select_replaced_partition.d.ts +0 -8
  441. package/dist/krill/lib/select_replaced_partition.js +0 -31
  442. package/dist/krill/lib/select_user_swap_choice.d.ts +0 -9
  443. package/dist/krill/lib/select_user_swap_choice.js +0 -35
  444. package/dist/krill/lib/select_zones.d.ts +0 -8
  445. package/dist/krill/lib/select_zones.js +0 -518
  446. package/dist/lib/kill_me_softly.d.ts +0 -11
  447. package/dist/lib/kill_me_softly.js +0 -61
  448. package/dist/lib/utils.d.ts +0 -19
  449. package/dist/lib/utils.js +0 -65
  450. package/scripts/luks-root-bootstrap-create.sh +0 -235
  451. package/scripts/luks-root-unlock.sh +0 -172
@@ -13,7 +13,6 @@ label Live
13
13
  say "Booting {{{fullname}}} GNU/Linux (kernel {{{kernel}}})"
14
14
  linux {{{vmlinuz}}}
15
15
  append initrd={{{initrdImg}}} {{{kernel_parameters}}}
16
- # RIMUOVERE O CONTROLLARE evm=off per overlayfs
17
16
 
18
17
  label Safe
19
18
  menu label {{{fullname}}} Safe Mode
package/package.json CHANGED
@@ -2,14 +2,14 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others",
5
- "version": "25.10.19",
5
+ "version": "25.10.23",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
9
9
  },
10
10
  "bugs": "https://github.com/pieroproietti/penguins-eggs/issues",
11
11
  "dependencies": {
12
- "@oclif/core": "^4.5.6",
12
+ "@oclif/core": "^4.6.0",
13
13
  "@oclif/plugin-autocomplete": "^3.2.37",
14
14
  "@oclif/plugin-help": "^6.2.33",
15
15
  "@oclif/plugin-version": "^2.2.34",
@@ -37,7 +37,7 @@
37
37
  "devDependencies": {
38
38
  "@oclif/prettier-config": "^0.2.1",
39
39
  "@oclif/test": "^4.1.14",
40
- "@types/chai": "^5.2.2",
40
+ "@types/chai": "^5.2.3",
41
41
  "@types/debug": "^4.1.12",
42
42
  "@types/glob": "^9.0.0",
43
43
  "@types/inquirer": "^9.0.8",
@@ -0,0 +1,177 @@
1
+ #!/bin/sh
2
+ # /scripts/live-premount/boot-encrypted-root.sh
3
+ # v2.3 - Minimal RAM Copy + Supporto Plymouth + 3 Tentativi
4
+
5
+ set -e
6
+
7
+ # --- Logging Setup ---
8
+ LOGFILE="/tmp/eggs-premount-boot.log"; FIFO="/tmp/eggs-boot.fifo"; rm -f "$LOGFILE" "$FIFO"; mkfifo "$FIFO" || exit 1; tee -a "$LOGFILE" < "$FIFO" & TEE_PID=$!; exec > "$FIFO" 2>&1; trap 'echo "EGGS-BOOT: Cleanup trap"; rm -f "$FIFO"; kill "$TEE_PID" 2>/dev/null || true; exit' EXIT INT TERM
9
+ # --- Logging End ---
10
+
11
+ echo "EGGS-BOOT: =========================================="
12
+ echo "EGGS-BOOT: Script Avvio Root Criptato v2.3 (3 Tentativi)"
13
+ echo "EGGS-BOOT: =========================================="
14
+
15
+ # Moduli necessari
16
+ echo "EGGS-BOOT: Caricamento moduli..."
17
+ modprobe loop 2>/dev/null || true
18
+ modprobe dm_mod 2>/dev/null || true
19
+ modprobe dm_crypt 2>/dev/null || true
20
+ modprobe overlay 2>/dev/null || true
21
+ modprobe ext4 2>/dev/null || true
22
+ modprobe squashfs 2>/dev/null || true
23
+ sleep 2
24
+
25
+ # 1. Trova live media originale
26
+ echo "EGGS-BOOT: Ricerca live media originale..."
27
+ mkdir -p /mnt/live-media /mnt/ext4
28
+ ORIG_MEDIA_MNT="/mnt/live-media"
29
+ LIVE_DEV=""
30
+ # ... [Codice ricerca live media] ...
31
+ MAX_WAIT_DEV=20; COUNT_DEV=0
32
+ while [ -z "$LIVE_DEV" ] && [ $COUNT_DEV -lt $MAX_WAIT_DEV ]; do ls /dev > /dev/null; for dev in /dev/sr* /dev/sd* /dev/vd* /dev/nvme*n*; do if [ ! -b "$dev" ]; then continue; fi; if mount -o ro "$dev" "$ORIG_MEDIA_MNT" 2>/dev/null; then if [ -f "${ORIG_MEDIA_MNT}/live/root.img" ]; then echo "EGGS-BOOT: Found Original Live media on $dev"; LIVE_DEV=$dev; break 2; else umount "$ORIG_MEDIA_MNT" 2>/dev/null || true; fi; fi; done; sleep 1; COUNT_DEV=$((COUNT_DEV+1)); done
33
+ if [ -z "$LIVE_DEV" ]; then echo "EGGS-BOOT: ERRORE: Live media originale non trovato!"; ls /dev; exit 1; fi
34
+
35
+ ROOT_IMG_RO="${ORIG_MEDIA_MNT}/live/root.img"
36
+ RAM_MEDIA_MNT="/run/live/medium" # Destinazione finale in RAM
37
+
38
+ # 2a. Associa loop device (per definire $LOOP_DEV)
39
+ echo "EGGS-BOOT: Associazione loop device per $ROOT_IMG_RO..."
40
+ 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 echo "EGGS-BOOT: ERRORE: Associazione loop fallita!"; exit 1; fi
42
+ LOOP_DEV="$LOOP_DEV_OUTPUT"
43
+ echo "EGGS-BOOT: Loop device associato: $LOOP_DEV"
44
+
45
+ # 2b. Sblocca LUKS (con supporto Plymouth e 3 tentativi)
46
+ echo "EGGS-BOOT: Sblocco LUKS $LOOP_DEV (readonly)..."
47
+
48
+ # Disabilita 'set -e' temporaneamente per gestire i fallimenti della password
49
+ set +e
50
+ MAX_ATTEMPTS=3
51
+ ATTEMPT=1
52
+ UNLOCKED=0
53
+
54
+ while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
55
+ log "EGGS-BOOT: Tentativo sblocco $ATTEMPT di $MAX_ATTEMPTS"
56
+
57
+ # Controlla se Plymouth è attivo
58
+ if plymouth --ping 2>/dev/null; then
59
+ log "EGGS-BOOT: Plymouth attivo. Chiedo password via Plymouth..."
60
+
61
+ # Chiedi la password a Plymouth e passala a cryptsetup via stdin (--key-file -)
62
+ 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
+ UNLOCKED=1
65
+ break
66
+ else
67
+ log "EGGS-BOOT: ERRORE: Sblocco LUKS via Plymouth fallito (Tentativo $ATTEMPT)."
68
+ if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
69
+ plymouth display-message --text="Incorrect passphrase. Try again..."
70
+ sleep 2 # Dà tempo di leggere il messaggio
71
+ fi
72
+ fi
73
+ else
74
+ # Fallback: Plymouth non attivo
75
+ log "EGGS-BOOT: Plymouth non attivo. Chiedo password via console..."
76
+ echo "Please enter passphrase for $LOOP_DEV ($ATTEMPT/$MAX_ATTEMPTS):"
77
+
78
+ if cryptsetup open --readonly "$LOOP_DEV" live-root; then
79
+ log "EGGS-BOOT: Sblocco LUKS (console) riuscito."
80
+ UNLOCKED=1
81
+ break
82
+ else
83
+ log "EGGS-BOOT: ERRORE: Sblocco LUKS (console) fallito (Tentativo $ATTEMPT)."
84
+ if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
85
+ echo "Incorrect passphrase. Please try again."
86
+ fi
87
+ fi
88
+ fi
89
+
90
+ ATTEMPT=$((ATTEMPT + 1))
91
+ sleep 1
92
+ done
93
+
94
+ # Riabilita 'set -e'
95
+ set -e
96
+
97
+ # Controlla se tutti i tentativi sono falliti
98
+ if [ $UNLOCKED -eq 0 ]; then
99
+ log "EGGS-BOOT: ERRORE: Numero massimo tentativi raggiunto."
100
+ if plymouth --ping 2>/dev/null; then
101
+ plymouth display-message --text="LUKS Unlock Failed: Max attempts reached"
102
+ sleep 5
103
+ fi
104
+ /sbin/losetup -d "$LOOP_DEV" || true
105
+ exit 1
106
+ fi
107
+
108
+ echo "EGGS-BOOT: LUKS sbloccato ($LOOP_DEV -> live-root) [readonly]. Attesa mapper..."
109
+
110
+ # ... (Resto dello script v2.1: 2c, 2d, 3, 4, 5, 6, 7 - come prima) ...
111
+ # 2c. Attesa mapper
112
+ MAX_WAIT_MAP=10; COUNT_MAP=0; while [ ! -b /dev/mapper/live-root ] && [ $COUNT_MAP -lt $MAX_WAIT_MAP ]; do sleep 1; COUNT_MAP=$((COUNT_MAP+1)); done
113
+ if [ ! -b /dev/mapper/live-root ]; then echo "EGGS-BOOT: ERRORE: Mapper non apparso."; cryptsetup close live-root || true; /sbin/losetup -d "$LOOP_DEV" || true; exit 1; fi
114
+
115
+ # 2d. Montaggio ext4
116
+ echo "EGGS-BOOT: Montaggio ext4..."
117
+ mount -t ext4 -o ro /dev/mapper/live-root /mnt/ext4
118
+
119
+ SQFS_SRC="/mnt/ext4/filesystem.squashfs"
120
+ if [ ! -f "$SQFS_SRC" ]; then echo "EGGS-BOOT: ERRORE: $SQFS_SRC non trovato!"; exit 1; fi
121
+
122
+ # 3. Prepara Destinazione RAM (ORA calcoliamo la dimensione GIUSTA)
123
+ echo "EGGS-BOOT: Preparazione RAM disk ${RAM_MEDIA_MNT}..."
124
+ SQFS_SIZE_BYTES=$(stat -c%s "$SQFS_SRC")
125
+ NEEDED_SIZE_MB=$(( $SQFS_SIZE_BYTES / 1024 / 1024 + 500 )) # Aggiunge 500MB buffer
126
+ echo "EGGS-BOOT: Spazio stimato necessario in /run: ${NEEDED_SIZE_MB} MB"
127
+ echo "EGGS-BOOT: Aumento dimensione /run (tmpfs)..."
128
+ if ! mount -o remount,size=${NEEDED_SIZE_MB}M /run; then
129
+ echo "EGGS-BOOT: WARN: Remount /run fallito, spazio potrebbe essere insufficiente."
130
+ df -h /run
131
+ fi
132
+ mkdir -p "${RAM_MEDIA_MNT}/live"
133
+
134
+ # 4. Copia SOLO filesystem.squashfs in RAM
135
+ SQFS_DEST="${RAM_MEDIA_MNT}/live/filesystem.squashfs"
136
+ echo "EGGS-BOOT: Copia $SQFS_SRC -> $SQFS_DEST..."
137
+ if command -v rsync >/dev/null; then
138
+ rsync -a --info=progress2 "$SQFS_SRC" "$SQFS_DEST"
139
+ else
140
+ cp "$SQFS_SRC" "$SQFS_DEST"
141
+ fi
142
+ SQFS_SIZE=$(du -h "$SQFS_DEST" | cut -f1)
143
+ echo "EGGS-BOOT: filesystem.squashfs ($SQFS_SIZE) copiato in RAM."
144
+
145
+ # 5. Copia i metadati essenziali del medium in RAM
146
+ echo "EGGS-BOOT: Copia metadati (.disk, kernel, initrd) da ${ORIG_MEDIA_MNT}..."
147
+
148
+ # Copia .disk (essenziale per live-boot)
149
+ if [ -d "${ORIG_MEDIA_MNT}/.disk" ]; then
150
+ cp -a "${ORIG_MEDIA_MNT}/.disk" "${RAM_MEDIA_MNT}/"
151
+ echo "EGGS-BOOT: .disk copiato."
152
+ else
153
+ echo "EGGS-BOOT: WARN: Directory .disk non trovata sul media originale."
154
+ fi
155
+
156
+ # Copia kernel e initrd (utili per l'installer)
157
+ echo "EGGS-BOOT: Copia vmlinuz* e initrd*..."
158
+ cp -a "${ORIG_MEDIA_MNT}/live/vmlinuz"* "${RAM_MEDIA_MNT}/live/" 2>/dev/null || true
159
+ cp -a "${ORIG_MEDIA_MNT}/live/initrd"* "${RAM_MEDIA_MNT}/live/" 2>/dev/null || true
160
+ echo "EGGS-BOOT: Copia kernel/initrd tentata (eventuali errori ignorati)."
161
+
162
+ # 6. Pulizia Mount/Device Intermedi
163
+ echo "EGGS-BOOT: Pulizia mount/device intermedi..."
164
+ umount /mnt/ext4 || echo "EGGS-BOOT: WARN: umount /mnt/ext4 failed ($?)"
165
+ cryptsetup close live-root || echo "EGGS-BOOT: WARN: cryptsetup close live-root failed ($?)"
166
+ /sbin/losetup -d "$LOOP_DEV" || echo "EGGS-BOOT: WARN: losetup -d $LOOP_DEV failed ($?)"
167
+ umount "$ORIG_MEDIA_MNT" || echo "EGGS-BOOT: WARN: umount ${ORIG_MEDIA_MNT} failed ($?)"
168
+ echo "EGGS-BOOT: Pulizia completata."
169
+
170
+ # 7. Passa il Testimone a live-boot
171
+ echo "EGGS-BOOT: =========================================="
172
+ echo "EGGS-BOOT: Medium live MINIMALE ricostruito in RAM su ${RAM_MEDIA_MNT}"
173
+ ls -l "$RAM_MEDIA_MNT"
174
+ ls -l "${RAM_MEDIA_MNT}/live"
175
+ echo "EGGS-BOOT: Lascio che live-boot continui (con 'live-media=/run/live/medium')..."
176
+ echo "EGGS-BOOT: =========================================="
177
+ exit 0
@@ -1,5 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Script per sbloccare e montare home.img LUKS cifrato
3
+ # v1.1 - Aggiunto supporto Plymouth
3
4
  # Con logging robusto e gestione errori
4
5
 
5
6
  set -e
@@ -28,11 +29,16 @@ cleanup() {
28
29
  if [ -e "/dev/mapper/$LUKS_NAME" ]; then
29
30
  cryptsetup close "$LUKS_NAME" 2>/dev/null || true
30
31
  fi
32
+ # Se abbiamo copiato in RAM, rimuoviamo la copia
33
+ if [ "$HOME_IMG" = "/var/tmp/home.img" ]; then
34
+ rm -f /var/tmp/home.img 2>/dev/null || true
35
+ log "Removed temporary home.img from /var/tmp"
36
+ fi
31
37
  }
32
38
 
33
39
  trap cleanup EXIT
34
40
 
35
- log "=== Starting encrypted home mount process ==="
41
+ log "=== Starting encrypted home mount process (v1.1) ==="
36
42
 
37
43
  # Verifica memoria disponibile
38
44
  AVAILABLE_MEM=$(free -m | awk '/^Mem:/{print $7}')
@@ -45,36 +51,34 @@ fi
45
51
 
46
52
  # Attendi che il media sia disponibile (max 30 secondi)
47
53
  log "Waiting for live media to be available..."
54
+ ORIG_HOME_IMG="$HOME_IMG" # Salva il path originale
48
55
  COUNTER=0
49
- while [ ! -f "$HOME_IMG" ] && [ $COUNTER -lt 30 ]; do
56
+ while [ ! -f "$ORIG_HOME_IMG" ] && [ $COUNTER -lt 30 ]; do
50
57
  sleep 1
51
58
  COUNTER=$((COUNTER + 1))
52
59
  done
53
60
 
54
- if [ ! -f "$HOME_IMG" ]; then
55
- log_error "home.img not found at $HOME_IMG after 30 seconds"
61
+ if [ ! -f "$ORIG_HOME_IMG" ]; then
62
+ log_error "home.img not found at $ORIG_HOME_IMG after 30 seconds"
56
63
  log "Available mounts:"
57
64
  mount | grep live | tee -a "$LOG_FILE"
58
65
  exit 0
59
66
  fi
60
67
 
61
- log "Found home.img at $HOME_IMG"
68
+ log "Found home.img at $ORIG_HOME_IMG"
62
69
 
63
70
  # Copia in RAM se è su media read-only
64
- TEMP_HOME_IMG="/var/tmp/home.img" # /var/tmp è su overlay, non tmpfs
71
+ # Nota: /var/tmp è su overlay (tmpfs), quindi è in RAM.
72
+ TEMP_HOME_IMG="/var/tmp/home.img"
65
73
  log "Copying home.img to RAM..."
66
- cp "$HOME_IMG" "$TEMP_HOME_IMG"
67
- HOME_IMG="$TEMP_HOME_IMG"
74
+ cp "$ORIG_HOME_IMG" "$TEMP_HOME_IMG"
75
+ HOME_IMG="$TEMP_HOME_IMG" # Da ora in poi usiamo la copia in RAM
68
76
  log "home.img copied to $HOME_IMG"
69
77
 
70
78
  # Verifica dimensione file
71
79
  IMG_SIZE=$(stat -c %s "$HOME_IMG")
72
80
  log "home.img size: $((IMG_SIZE / 1024 / 1024))MB"
73
81
 
74
- # Verifica dimensione file
75
- IMG_SIZE=$(stat -c %s "$HOME_IMG")
76
- log "home.img size: $((IMG_SIZE / 1024 / 1024))MB"
77
-
78
82
  # Verifica se è un volume LUKS
79
83
  if ! cryptsetup isLuks "$HOME_IMG" 2>&1 | tee -a "$LOG_FILE"; then
80
84
  log_error "$HOME_IMG is not a valid LUKS volume"
@@ -83,58 +87,89 @@ fi
83
87
 
84
88
  log "Verified: home.img is a valid LUKS volume"
85
89
 
86
- # Mostra prompt per la passphrase
87
- echo ""
88
- echo "╔════════════════════════════════════════╗"
89
- echo "║ Encrypted Home Directory Detected ║"
90
- echo "╚════════════════════════════════════════╝"
91
- echo ""
92
- echo "Please enter your passphrase to unlock your home directory"
93
- echo "(Press Ctrl+C to skip and continue with temporary home)"
94
- echo ""
95
-
96
- echo "(Press Ctrl+C to skip and continue with temporary home)"
97
- echo ""
98
-
99
90
  # Aspetta che il TTY sia completamente inizializzato
100
91
  sleep 2
101
92
 
102
- # Prima del while loop dei tentativi
93
+ # Pulisci eventuale device mapper precedente
103
94
  if [ -e "/dev/mapper/$LUKS_NAME" ]; then
104
95
  log "LUKS device already exists, closing it first..."
105
96
  cryptsetup close "$LUKS_NAME" 2>&1 | tee -a "$LOG_FILE" || true
106
97
  fi
107
98
 
108
- # Tentativi multipli per la passphrase
99
+ # --- LOGICA RICHIESTA PASSWORD (CON PLYMOUTH) ---
109
100
  MAX_ATTEMPTS=3
110
101
  ATTEMPT=1
102
+ UNLOCKED=0 # Flag per sapere se abbiamo sbloccato
111
103
 
112
104
  while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
113
105
  log "Unlock attempt $ATTEMPT of $MAX_ATTEMPTS"
114
106
 
115
- if cryptsetup open "$HOME_IMG" "$LUKS_NAME" 2>&1 | tee -a "$LOG_FILE"; then
116
- log "LUKS volume unlocked successfully"
117
- break
118
- else
119
- log_error "Failed to unlock LUKS volume (attempt $ATTEMPT)"
107
+ # Controlla se Plymouth è attivo
108
+ if plymouth --ping 2>/dev/null; then
109
+ log "Plymouth active. Asking for password via Plymouth..."
120
110
 
121
- if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
122
- log_error "Maximum attempts reached. Continuing without encrypted home."
123
- echo ""
124
- echo "╔════════════════════════════════════════╗"
125
- echo "║ Failed to unlock encrypted home ║"
126
- echo "║ System will continue with default ║"
127
- echo "╚════════════════════════════════════════╝"
128
- echo ""
129
- sleep 3
130
- exit 0
111
+ # Chiede a Plymouth, passa la password a cryptsetup via stdin
112
+ if plymouth ask-for-password --prompt="Enter passphrase for /home ($ATTEMPT/$MAX_ATTEMPTS)" | cryptsetup open "$HOME_IMG" "$LUKS_NAME" --key-file - 2>&1 | tee -a "$LOG_FILE"; then
113
+ log "LUKS volume unlocked successfully via Plymouth"
114
+ UNLOCKED=1
115
+ break
116
+ else
117
+ log_error "Failed to unlock LUKS volume via Plymouth (attempt $ATTEMPT)"
118
+ if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
119
+ plymouth display-message --text="Incorrect passphrase. Try again..."
120
+ sleep 2 # Dà tempo di leggere il messaggio
121
+ fi
131
122
  fi
123
+ else
124
+ # Fallback: Plymouth non attivo (o fallito)
125
+ log "Plymouth not active. Asking for password via console..."
132
126
 
133
- ATTEMPT=$((ATTEMPT + 1))
134
- echo "Incorrect passphrase. Please try again ($ATTEMPT/$MAX_ATTEMPTS)"
127
+ # Stampa il prompt (già presente nel tuo script originale)
128
+ echo ""
129
+ echo "╔════════════════════════════════════════╗"
130
+ echo "║ Encrypted Home Directory Detected ║"
131
+ echo "╚════════════════════════════════════════╝"
135
132
  echo ""
133
+ echo "Please enter your passphrase to unlock your home directory ($ATTEMPT/$MAX_ATTEMPTS)"
134
+ echo "(Press Ctrl+C to skip and continue with temporary home)"
135
+ echo ""
136
+
137
+ if cryptsetup open "$HOME_IMG" "$LUKS_NAME" 2>&1 | tee -a "$LOG_FILE"; then
138
+ log "LUKS volume unlocked successfully via console"
139
+ UNLOCKED=1
140
+ break
141
+ else
142
+ log_error "Failed to unlock LUKS volume (attempt $ATTEMPT)"
143
+ if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
144
+ echo "Incorrect passphrase. Please try again."
145
+ fi
146
+ fi
136
147
  fi
148
+
149
+ ATTEMPT=$((ATTEMPT + 1))
137
150
  done
151
+ # --- FINE LOGICA RICHIESTA PASSWORD ---
152
+
153
+
154
+ # Controlla se lo sblocco è fallito dopo tutti i tentativi
155
+ if [ $UNLOCKED -eq 0 ]; then
156
+ log_error "Maximum attempts reached. Continuing without encrypted home."
157
+ echo ""
158
+ echo "╔════════════════════════════════════════╗"
159
+ echo "║ Failed to unlock encrypted home ║"
160
+ echo "║ System will continue with default ║"
161
+ echo "╚════════════════════════════════════════╝"
162
+ echo ""
163
+
164
+ if plymouth --ping 2>/dev/null; then
165
+ plymouth display-message --text="Failed to unlock. Continuing with temporary home..."
166
+ sleep 3
167
+ plymouth quit
168
+ fi
169
+
170
+ sleep 3
171
+ exit 0 # Esce senza errore, per permettere al sistema di continuare
172
+ fi
138
173
 
139
174
  # Verifica che il device mapper esista
140
175
  if [ ! -e "/dev/mapper/$LUKS_NAME" ]; then
@@ -153,10 +188,14 @@ if mount "/dev/mapper/$LUKS_NAME" "$MOUNT_POINT" 2>&1 | tee -a "$LOG_FILE"; then
153
188
  log "Home directory mounted successfully"
154
189
  else
155
190
  log_error "Failed to mount decrypted volume"
156
- cryptsetup close "$LUKS_NAME"
191
+ # cryptsetup close è gestito dalla trap 'cleanup'
157
192
  exit 1
158
193
  fi
159
194
 
195
+ # Rimuovi la copia in RAM, non serve più
196
+ log "Cleaning up temporary copy: $HOME_IMG"
197
+ rm -f "$HOME_IMG" 2>/dev/null || true
198
+
160
199
  # Ripristina gli utenti se esistono
161
200
  if [ -d "$MOUNT_POINT/.system-backup" ]; then
162
201
  log "Restoring user accounts..."
@@ -167,22 +206,12 @@ if [ -d "$MOUNT_POINT/.system-backup" ]; then
167
206
  userdel -r live 2>&1 | tee -a "$LOG_FILE" || true
168
207
  fi
169
208
 
170
- # Ripristina gli utenti
209
+ # Ripristina gli utenti (NOTA: hai duplicato questo blocco nel tuo script originale, l'ho corretto)
171
210
  if [ -f "$MOUNT_POINT/.system-backup/passwd" ]; then
172
211
  cat "$MOUNT_POINT/.system-backup/passwd" >> /etc/passwd
173
212
  log "Restored $(wc -l < "$MOUNT_POINT/.system-backup/passwd") user entries"
174
213
  fi
175
214
 
176
- if [ -f "$MOUNT_POINT/.system-backup/shadow" ]; then
177
- cat "$MOUNT_POINT/.system-backup/shadow" >> /etc/shadow
178
- fi
179
-
180
- # Ripristina gli utenti
181
- if [ -f "$MOUNT_POINT/.system-backup/passwd" ]; then
182
- cat "$MOUNT_POINT/.system-backup/passwd" >> /etc/passwd
183
- log "Restored $(wc -l < "$MOUNT_POINT/.system-backup/passwd") user entries"
184
- fi
185
-
186
215
  if [ -f "$MOUNT_POINT/.system-backup/shadow" ]; then
187
216
  cat "$MOUNT_POINT/.system-backup/shadow" >> /etc/shadow
188
217
  fi
@@ -213,10 +242,17 @@ if [ -d "$MOUNT_POINT/.system-backup" ]; then
213
242
  else
214
243
  log "No active display manager found to restart"
215
244
  fi
245
+ else
246
+ log "No .system-backup directory found. Assuming /home is just data."
216
247
  fi
217
248
 
218
249
  log "=== Encrypted home mount completed successfully ==="
219
250
 
251
+ # Notifica a Plymouth (se attivo) che abbiamo finito
252
+ if plymouth --ping 2>/dev/null; then
253
+ plymouth quit
254
+ fi
255
+
220
256
  # Non fare cleanup al successo
221
257
  trap - EXIT
222
258
 
@@ -1,37 +0,0 @@
1
- /**
2
- * ./src/classes/bleach.ts
3
- * penguins-eggs v.25.7.x / ecmascript 2020
4
- * author: Piero Proietti
5
- * email: piero.proietti@gmail.com
6
- * license: MIT
7
- */
8
- /**
9
- * Bleach:
10
- */
11
- export default class Bleach {
12
- /**
13
- * clean
14
- * @param verbose
15
- */
16
- clean(verbose?: boolean): Promise<void>;
17
- /**
18
- *
19
- * @param verbose
20
- */
21
- private cleanFastpack;
22
- /**
23
- * cleanHistory
24
- * @param verbose
25
- */
26
- private cleanHistory;
27
- /**
28
- * cleanJournal
29
- * @param verbose
30
- */
31
- private cleanJournal;
32
- /**
33
- * cleanSystemCache
34
- * @param verbose
35
- */
36
- private cleanSystemCache;
37
- }
@@ -1,148 +0,0 @@
1
- /**
2
- * ./src/classes/bleach.ts
3
- * penguins-eggs v.25.7.x / ecmascript 2020
4
- * author: Piero Proietti
5
- * email: piero.proietti@gmail.com
6
- * license: MIT
7
- */
8
- import fs from 'node:fs';
9
- // libraries
10
- import { exec } from '../lib/utils.js';
11
- import Distro from './distro.js';
12
- import Utils from './utils.js';
13
- /**
14
- * Bleach:
15
- */
16
- export default class Bleach {
17
- /**
18
- * clean
19
- * @param verbose
20
- */
21
- async clean(verbose = false) {
22
- let echo = { capture: false, echo: false, ignore: true };
23
- if (verbose) {
24
- echo = { capture: false, echo: true, ignore: true };
25
- Utils.warning('cleaning the system');
26
- }
27
- const distro = new Distro();
28
- if (distro.familyId === 'alpine') {
29
- await exec('apk cache clean', echo);
30
- await exec('apk cache purge', echo);
31
- }
32
- else if (distro.familyId === 'archlinux') {
33
- await exec('yes | sudo pacman -Scc', Utils.setEcho(true));
34
- }
35
- else if (distro.familyId === 'debian') {
36
- await exec('apt-get clean', echo);
37
- await exec('apt-get autoclean', echo);
38
- await exec(`rm /var/lib/apt/lists/lock -rf`, echo);
39
- }
40
- else if (distro.familyId === 'fedora' || distro.familyId === 'openmamba') {
41
- await exec(`dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)`);
42
- await exec(`dnf clean all`, echo);
43
- }
44
- else if (distro.familyId === 'opensuse') {
45
- await exec(`zypper clean`, echo);
46
- }
47
- else if (distro.familyId === 'voidlinux') {
48
- await exec(`xbps-remove -O`, echo);
49
- }
50
- await this.cleanFastpack(verbose);
51
- await this.cleanHistory(verbose);
52
- await this.cleanJournal(verbose);
53
- await this.cleanSystemCache(verbose);
54
- }
55
- /**
56
- *
57
- * @param verbose
58
- */
59
- async cleanFastpack(verbose = false) {
60
- let echo = { capture: false, echo: false, ignore: true };
61
- if (verbose) {
62
- echo = { capture: false, echo: true, ignore: true };
63
- Utils.warning('cleaning fastpack');
64
- }
65
- await exec(`rm /var/tmp/flatpak-cache-* -rf`, echo);
66
- }
67
- /**
68
- * cleanHistory
69
- * @param verbose
70
- */
71
- async cleanHistory(verbose = false) {
72
- if (verbose) {
73
- Utils.warning('cleaning bash history');
74
- }
75
- const dest = '/root/.bash_history';
76
- if (fs.existsSync(dest)) {
77
- await rm(dest, verbose);
78
- }
79
- }
80
- /**
81
- * cleanJournal
82
- * @param verbose
83
- */
84
- async cleanJournal(verbose = false) {
85
- let echo = { capture: false, echo: false, ignore: true };
86
- if (verbose) {
87
- echo = { capture: false, echo: true, ignore: true };
88
- Utils.warning('cleaning journald');
89
- }
90
- if (Utils.isSystemd()) {
91
- try {
92
- await exec('journalctl --rotate', echo);
93
- await exec('journalctl --vacuum-time=1s', echo);
94
- }
95
- catch (error) {
96
- Utils.error(error);
97
- }
98
- }
99
- else {
100
- // Truncate logs, remove archived logs.
101
- await exec('find /var/log -name "*gz" -print0 | xargs -0r rm -f', echo);
102
- await exec('find /var/log/ -type f -exec truncate -s 0 {} \\;', echo);
103
- }
104
- }
105
- /**
106
- * cleanSystemCache
107
- * @param verbose
108
- */
109
- async cleanSystemCache(verbose = false) {
110
- let echo = { capture: false, echo: false, ignore: true };
111
- if (verbose) {
112
- echo = { capture: false, echo: true, ignore: true };
113
- Utils.warning('cleaning system cache');
114
- }
115
- // Clear PageCache only.
116
- await exec('sync; echo 1 > /proc/sys/vm/drop_caches', echo);
117
- // Clear dentries and inodes.
118
- await exec('sync; echo 2 > /proc/sys/vm/drop_caches', echo);
119
- // Clear PageCache, dentries and inodes.
120
- await exec('sync; echo 3 > /proc/sys/vm/drop_caches', echo);
121
- }
122
- }
123
- /**
124
- *
125
- * @param dest
126
- */
127
- async function rm(dest = '', verbose = false) {
128
- let echo = { capture: false, echo: false, ignore: true };
129
- if (verbose) {
130
- echo = { capture: false, echo: true, ignore: true };
131
- }
132
- if (fs.existsSync(dest)) {
133
- await exec(`rm ${dest} -rf`, echo);
134
- }
135
- else {
136
- console.log(`non esiste ${dest}`);
137
- }
138
- }
139
- async function rmdir(dest = '', verbose = false) {
140
- let echo = { capture: false, echo: false, ignore: true };
141
- if (verbose) {
142
- echo = { capture: false, echo: true, ignore: true };
143
- }
144
- const result = fs.readdirSync(dest);
145
- if (result.length > 0) {
146
- await exec(`rm ${dest} -rf`, echo);
147
- }
148
- }