penguins-eggs 25.10.23 → 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.
Files changed (529) hide show
  1. package/.oclif.manifest.json +17 -3
  2. package/README.md +34 -32
  3. package/README.pdf +1008 -1045
  4. package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
  5. package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
  6. package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
  7. package/addons/eggs/theme/applications/install-system.desktop +0 -0
  8. package/addons/eggs/theme/livecd/{grub.theme.cfg → full.grub.theme.cfg} +1 -1
  9. package/addons/eggs/theme/livecd/{isolinux.theme.cfg → full.isolinux.theme.cfg} +1 -1
  10. package/addons/eggs/theme/livecd/generic-splash.png +0 -0
  11. package/addons/eggs/theme/livecd/generic.grub.main.cfg +29 -0
  12. package/addons/eggs/theme/livecd/generic.grub.theme.cfg +67 -0
  13. package/addons/eggs/theme/livecd/generic.isolinux.main.cfg +34 -0
  14. package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +34 -0
  15. package/addons/eggs/theme/livecd/simple.grub.main.cfg +29 -0
  16. package/addons/eggs/theme/livecd/simple.grub.theme.cfg +67 -0
  17. package/addons/eggs/theme/livecd/{isolinux.main.simple.cfg → simple.isolinux.main.cfg} +1 -1
  18. package/addons/eggs/theme/livecd/simple.isolinux.theme.cfg +47 -0
  19. package/assets/calamares/install-system.sh +0 -0
  20. package/assets/penguins-eggs.desktop +0 -0
  21. package/assets/penguins-krill.desktop +0 -0
  22. package/assets/penguins-links-add.desktop +0 -0
  23. package/assets/penguins-live-installer.desktop +0 -0
  24. package/bin/dev.js +0 -0
  25. package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
  26. package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  27. package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  28. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  29. package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  30. package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  31. package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  32. package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  33. package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  34. package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
  35. package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
  36. package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +0 -0
  37. package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
  38. package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  39. package/conf/distros/opensuse/calamares/settings.yml +0 -0
  40. package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
  41. package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  42. package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  43. package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  44. package/conf/init/unattended.sh +0 -0
  45. package/dist/classes/bleach.d.ts +37 -0
  46. package/dist/classes/bleach.js +148 -0
  47. package/dist/classes/cli-autologin.d.ts +52 -0
  48. package/dist/classes/cli-autologin.js +252 -0
  49. package/dist/classes/compressors.d.ts +54 -0
  50. package/dist/classes/compressors.js +109 -0
  51. package/dist/classes/daddy.d.ts +26 -0
  52. package/dist/classes/daddy.js +175 -0
  53. package/dist/classes/distro.d.ts +32 -0
  54. package/dist/classes/distro.js +363 -0
  55. package/dist/classes/diversions.d.ts +53 -0
  56. package/dist/classes/diversions.js +131 -0
  57. package/dist/classes/incubation/branding.d.ts +17 -0
  58. package/dist/classes/incubation/branding.js +85 -0
  59. package/dist/classes/incubation/customize/customize-partitions.d.ts +4 -0
  60. package/dist/classes/incubation/customize/customize-partitions.js +29 -0
  61. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
  62. package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
  63. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  64. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  65. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  66. package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
  67. package/dist/classes/incubation/fisherman.d.ts +71 -0
  68. package/dist/classes/incubation/fisherman.js +281 -0
  69. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  70. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  71. package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
  72. package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
  73. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  74. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  75. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  76. package/dist/classes/incubation/incubator.d/buster.js +101 -0
  77. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  78. package/dist/classes/incubation/incubator.d/fedora.js +81 -0
  79. package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
  80. package/dist/classes/incubation/incubator.d/focal.js +85 -0
  81. package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
  82. package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
  83. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  84. package/dist/classes/incubation/incubator.d/noble.js +102 -0
  85. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  86. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  87. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  88. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  89. package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
  90. package/dist/classes/incubation/incubator.d/trixie.js +98 -0
  91. package/dist/classes/incubation/incubator.d.ts +48 -0
  92. package/dist/classes/incubation/incubator.js +378 -0
  93. package/dist/classes/incubation/installer.d.ts +13 -0
  94. package/dist/classes/incubation/installer.js +52 -0
  95. package/dist/classes/keyboards.d.ts +50 -0
  96. package/dist/classes/keyboards.js +287 -0
  97. package/dist/classes/locales.d.ts +21 -0
  98. package/dist/classes/locales.js +77 -0
  99. package/dist/classes/network.d.ts +37 -0
  100. package/dist/classes/network.js +98 -0
  101. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  102. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  103. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  104. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  105. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  106. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  107. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  108. package/dist/classes/ovary.d/edit-live-fs.js +239 -0
  109. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  110. package/dist/classes/ovary.d/fertilization.js +53 -0
  111. package/dist/classes/ovary.d/finished.d.ts +13 -0
  112. package/dist/classes/ovary.d/finished.js +40 -0
  113. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  114. package/dist/classes/ovary.d/initrd.js +96 -0
  115. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  116. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  117. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  118. package/dist/classes/ovary.d/live-create-structure.js +70 -0
  119. package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
  120. package/dist/classes/ovary.d/luks-get-password.js +58 -0
  121. package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
  122. package/dist/classes/ovary.d/luks-home-support.js +75 -0
  123. package/dist/classes/ovary.d/luks-home.d.ts +15 -0
  124. package/dist/classes/ovary.d/luks-home.js +159 -0
  125. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
  126. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +135 -0
  127. package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
  128. package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
  129. package/dist/classes/ovary.d/luks-root.d.ts +15 -0
  130. package/dist/classes/ovary.d/luks-root.js +185 -0
  131. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  132. package/dist/classes/ovary.d/make-dot-disk.js +71 -0
  133. package/dist/classes/ovary.d/make-efi.d.ts +14 -0
  134. package/dist/classes/ovary.d/make-efi.js +290 -0
  135. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  136. package/dist/classes/ovary.d/make-iso.js +45 -0
  137. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  138. package/dist/classes/ovary.d/make-squashfs.js +111 -0
  139. package/dist/classes/ovary.d/merged.d.ts +27 -0
  140. package/dist/classes/ovary.d/merged.js +78 -0
  141. package/dist/classes/ovary.d/produce.d.ts +23 -0
  142. package/dist/classes/ovary.d/produce.js +354 -0
  143. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  144. package/dist/classes/ovary.d/rexec.js +34 -0
  145. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  146. package/dist/classes/ovary.d/syslinux.js +95 -0
  147. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  148. package/dist/classes/ovary.d/user-create-live.js +97 -0
  149. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  150. package/dist/classes/ovary.d/users-remove.js +38 -0
  151. package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
  152. package/dist/classes/ovary.d/xorriso-command.js +120 -0
  153. package/dist/classes/ovary.d.ts +108 -0
  154. package/dist/classes/ovary.js +119 -0
  155. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  156. package/dist/classes/pacman.d/alpine.js +167 -0
  157. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  158. package/dist/classes/pacman.d/archlinux.js +128 -0
  159. package/dist/classes/pacman.d/debian.d.ts +65 -0
  160. package/dist/classes/pacman.d/debian.js +143 -0
  161. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  162. package/dist/classes/pacman.d/fedora.js +107 -0
  163. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  164. package/dist/classes/pacman.d/openmamba.js +106 -0
  165. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  166. package/dist/classes/pacman.d/opensuse.js +109 -0
  167. package/dist/classes/pacman.d.ts +139 -0
  168. package/dist/classes/pacman.js +683 -0
  169. package/dist/classes/pve-live.d.ts +17 -0
  170. package/dist/classes/pve-live.js +52 -0
  171. package/dist/classes/pxe.d.ts +76 -0
  172. package/dist/classes/pxe.js +353 -0
  173. package/dist/classes/settings.d.ts +52 -0
  174. package/dist/classes/settings.js +185 -0
  175. package/dist/classes/sources_list.d.ts +28 -0
  176. package/dist/classes/sources_list.js +89 -0
  177. package/dist/classes/systemctl.d.ts +47 -0
  178. package/dist/classes/systemctl.js +86 -0
  179. package/dist/classes/tailor.d.ts +50 -0
  180. package/dist/classes/tailor.js +563 -0
  181. package/dist/classes/tools.d.ts +26 -0
  182. package/dist/classes/tools.js +50 -0
  183. package/dist/classes/users.d.ts +28 -0
  184. package/dist/classes/users.js +143 -0
  185. package/dist/classes/utils.d/kernel.d.ts +39 -0
  186. package/dist/classes/utils.d/kernel.js +206 -0
  187. package/dist/classes/utils.d.ts +330 -0
  188. package/dist/classes/utils.js +968 -0
  189. package/dist/classes/xdg.d.ts +45 -0
  190. package/dist/classes/xdg.js +337 -0
  191. package/dist/classes/yolk.d.ts +33 -0
  192. package/dist/classes/yolk.js +114 -0
  193. package/dist/commands/adapt.d.ts +17 -0
  194. package/dist/commands/adapt.js +33 -0
  195. package/dist/commands/analyze.d.ts +26 -0
  196. package/dist/commands/analyze.js +95 -0
  197. package/dist/commands/calamares.d.ts +29 -0
  198. package/dist/commands/calamares.js +112 -0
  199. package/dist/commands/config.d.ts +35 -0
  200. package/dist/commands/config.js +120 -0
  201. package/dist/commands/cuckoo.d.ts +17 -0
  202. package/dist/commands/cuckoo.js +61 -0
  203. package/dist/commands/dad.d.ts +21 -0
  204. package/dist/commands/dad.js +47 -0
  205. package/dist/commands/export/iso.d.ts +19 -0
  206. package/dist/commands/export/iso.js +55 -0
  207. package/dist/commands/export/pkg.d.ts +29 -0
  208. package/dist/commands/export/pkg.js +173 -0
  209. package/dist/commands/export/tarballs.d.ts +27 -0
  210. package/dist/commands/export/tarballs.js +79 -0
  211. package/dist/commands/install.d.ts +39 -0
  212. package/dist/commands/install.js +113 -0
  213. package/dist/commands/kill.d.ts +24 -0
  214. package/dist/commands/kill.js +50 -0
  215. package/dist/commands/love.d.ts +25 -0
  216. package/dist/commands/love.js +118 -0
  217. package/dist/commands/mom.d.ts +16 -0
  218. package/dist/commands/mom.js +30 -0
  219. package/dist/commands/pods.d.ts +22 -0
  220. package/dist/commands/pods.js +92 -0
  221. package/dist/commands/produce.d.ts +37 -0
  222. package/dist/commands/produce.js +232 -0
  223. package/dist/commands/status.d.ts +23 -0
  224. package/dist/commands/status.js +31 -0
  225. package/dist/commands/tools/clean.d.ts +18 -0
  226. package/dist/commands/tools/clean.js +37 -0
  227. package/dist/commands/tools/repo.d.ts +31 -0
  228. package/dist/commands/tools/repo.js +246 -0
  229. package/dist/commands/tools/skel.d.ts +18 -0
  230. package/dist/commands/tools/skel.js +44 -0
  231. package/dist/commands/tools/stat.d.ts +31 -0
  232. package/dist/commands/tools/stat.js +70 -0
  233. package/dist/commands/tools/yolk.d.ts +24 -0
  234. package/dist/commands/tools/yolk.js +45 -0
  235. package/dist/commands/update.d.ts +46 -0
  236. package/dist/commands/update.js +238 -0
  237. package/dist/commands/wardrobe/get.d.ts +23 -0
  238. package/dist/commands/wardrobe/get.js +52 -0
  239. package/dist/commands/wardrobe/list.d.ts +24 -0
  240. package/dist/commands/wardrobe/list.js +125 -0
  241. package/dist/commands/wardrobe/show.d.ts +25 -0
  242. package/dist/commands/wardrobe/show.js +97 -0
  243. package/dist/commands/wardrobe/wear.d.ts +26 -0
  244. package/dist/commands/wardrobe/wear.js +84 -0
  245. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  246. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  247. package/dist/dhcpd-proxy/index.d.ts +4 -0
  248. package/dist/dhcpd-proxy/index.js +4 -0
  249. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  250. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  251. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  252. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  253. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  254. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  255. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  256. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  257. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  258. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  259. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  260. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  261. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  262. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  263. package/dist/index.d.ts +8 -0
  264. package/dist/index.js +8 -0
  265. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
  266. package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
  267. package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
  268. package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
  269. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
  270. package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
  271. package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
  272. package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
  273. package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
  274. package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
  275. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
  276. package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
  277. package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
  278. package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
  279. package/dist/interfaces/i-addons.d.ts +12 -0
  280. package/dist/interfaces/i-addons.js +8 -0
  281. package/dist/interfaces/i-analyze.d.ts +17 -0
  282. package/dist/interfaces/i-analyze.js +17 -0
  283. package/dist/interfaces/i-app.d.ts +14 -0
  284. package/dist/interfaces/i-app.js +8 -0
  285. package/dist/interfaces/i-config-tools.d.ts +15 -0
  286. package/dist/interfaces/i-config-tools.js +8 -0
  287. package/dist/interfaces/i-devices.d.ts +20 -0
  288. package/dist/interfaces/i-devices.js +8 -0
  289. package/dist/interfaces/i-distro.d.ts +23 -0
  290. package/dist/interfaces/i-distro.js +8 -0
  291. package/dist/interfaces/i-drive-list.d.ts +33 -0
  292. package/dist/interfaces/i-drive-list.js +8 -0
  293. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  294. package/dist/interfaces/i-eggs-config.js +8 -0
  295. package/dist/interfaces/i-excludes.d.ts +14 -0
  296. package/dist/interfaces/i-excludes.js +8 -0
  297. package/dist/interfaces/i-exec.d.ts +11 -0
  298. package/dist/interfaces/i-exec.js +8 -0
  299. package/dist/interfaces/i-initrd.d.ts +13 -0
  300. package/dist/interfaces/i-initrd.js +8 -0
  301. package/dist/interfaces/i-install.d.ts +16 -0
  302. package/dist/interfaces/i-install.js +8 -0
  303. package/dist/interfaces/i-installer.d.ts +17 -0
  304. package/dist/interfaces/i-installer.js +8 -0
  305. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  306. package/dist/interfaces/i-luks-passphrase.js +8 -0
  307. package/dist/interfaces/i-materia.d.ts +36 -0
  308. package/dist/interfaces/i-materia.js +8 -0
  309. package/dist/interfaces/i-net.d.ts +16 -0
  310. package/dist/interfaces/i-net.js +8 -0
  311. package/dist/interfaces/i-os-release.d.ts +5 -0
  312. package/dist/interfaces/i-os-release.js +1 -0
  313. package/dist/interfaces/i-packages.d.ts +16 -0
  314. package/dist/interfaces/i-packages.js +8 -0
  315. package/dist/interfaces/i-partitions.d.ts +16 -0
  316. package/dist/interfaces/i-partitions.js +8 -0
  317. package/dist/interfaces/i-pxe.d.ts +45 -0
  318. package/dist/interfaces/i-pxe.js +1 -0
  319. package/dist/interfaces/i-remix.d.ts +21 -0
  320. package/dist/interfaces/i-remix.js +8 -0
  321. package/dist/interfaces/i-settings.d.ts +33 -0
  322. package/dist/interfaces/i-settings.js +8 -0
  323. package/dist/interfaces/i-user.d.ts +14 -0
  324. package/dist/interfaces/i-user.js +8 -0
  325. package/dist/interfaces/i-workdir.d.ts +14 -0
  326. package/dist/interfaces/i-workdir.js +8 -0
  327. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  328. package/dist/interfaces/i-xkb-model.js +8 -0
  329. package/dist/interfaces/index.d.ts +26 -0
  330. package/dist/interfaces/index.js +8 -0
  331. package/dist/krill/classes/cfs.d.ts +17 -0
  332. package/dist/krill/classes/cfs.js +39 -0
  333. package/dist/krill/classes/krill_enums.d.ts +37 -0
  334. package/dist/krill/classes/krill_enums.js +41 -0
  335. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  336. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  337. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  338. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  339. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  340. package/dist/krill/classes/prepare.d/location.js +59 -0
  341. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  342. package/dist/krill/classes/prepare.d/network.js +68 -0
  343. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  344. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  345. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  346. package/dist/krill/classes/prepare.d/summary.js +72 -0
  347. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  348. package/dist/krill/classes/prepare.d/users.js +63 -0
  349. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  350. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  351. package/dist/krill/classes/prepare.d.ts +89 -0
  352. package/dist/krill/classes/prepare.js +319 -0
  353. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  354. package/dist/krill/classes/sequence.d/add_user.js +77 -0
  355. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  356. package/dist/krill/classes/sequence.d/bootloader.js +117 -0
  357. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  358. package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
  359. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  360. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  361. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  362. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  363. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  364. package/dist/krill/classes/sequence.d/fstab.js +177 -0
  365. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  366. package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
  367. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  368. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  369. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  370. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  371. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  372. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  373. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  374. package/dist/krill/classes/sequence.d/locale.js +91 -0
  375. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  376. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  377. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  378. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  379. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  380. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  381. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  382. package/dist/krill/classes/sequence.d/mkfs.js +88 -0
  383. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  384. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  385. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  386. package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
  387. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  388. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  389. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  390. package/dist/krill/classes/sequence.d/packages.js +111 -0
  391. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  392. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  393. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
  394. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
  395. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  396. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
  397. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  398. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
  399. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  400. package/dist/krill/classes/sequence.d/partition.js +84 -0
  401. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  402. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  403. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  404. package/dist/krill/classes/sequence.d/umount.js +28 -0
  405. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  406. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  407. package/dist/krill/classes/sequence.d.ts +134 -0
  408. package/dist/krill/classes/sequence.js +400 -0
  409. package/dist/krill/components/finished.d.ts +16 -0
  410. package/dist/krill/components/finished.js +56 -0
  411. package/dist/krill/components/information.d.ts +8 -0
  412. package/dist/krill/components/information.js +162 -0
  413. package/dist/krill/components/install.d.ts +15 -0
  414. package/dist/krill/components/install.js +60 -0
  415. package/dist/krill/components/keyboard.d.ts +16 -0
  416. package/dist/krill/components/keyboard.js +54 -0
  417. package/dist/krill/components/location.d.ts +16 -0
  418. package/dist/krill/components/location.js +59 -0
  419. package/dist/krill/components/network.d.ts +19 -0
  420. package/dist/krill/components/network.js +65 -0
  421. package/dist/krill/components/partitions.d.ts +18 -0
  422. package/dist/krill/components/partitions.js +89 -0
  423. package/dist/krill/components/steps.d.ts +13 -0
  424. package/dist/krill/components/steps.js +148 -0
  425. package/dist/krill/components/summary.d.ts +25 -0
  426. package/dist/krill/components/summary.js +77 -0
  427. package/dist/krill/components/title.d.ts +11 -0
  428. package/dist/krill/components/title.js +35 -0
  429. package/dist/krill/components/users.d.ts +24 -0
  430. package/dist/krill/components/users.js +80 -0
  431. package/dist/krill/components/welcome.d.ts +13 -0
  432. package/dist/krill/components/welcome.js +63 -0
  433. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  434. package/dist/krill/interfaces/i_krill.js +8 -0
  435. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  436. package/dist/krill/interfaces/i_krill_config.js +8 -0
  437. package/dist/krill/lib/get_address.d.ts +8 -0
  438. package/dist/krill/lib/get_address.js +23 -0
  439. package/dist/krill/lib/get_dns.d.ts +8 -0
  440. package/dist/krill/lib/get_dns.js +23 -0
  441. package/dist/krill/lib/get_domain.d.ts +8 -0
  442. package/dist/krill/lib/get_domain.js +23 -0
  443. package/dist/krill/lib/get_gateway.d.ts +8 -0
  444. package/dist/krill/lib/get_gateway.js +23 -0
  445. package/dist/krill/lib/get_hostname.d.ts +8 -0
  446. package/dist/krill/lib/get_hostname.js +23 -0
  447. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  448. package/dist/krill/lib/get_luks_passphrase.js +32 -0
  449. package/dist/krill/lib/get_netmask.d.ts +8 -0
  450. package/dist/krill/lib/get_netmask.js +23 -0
  451. package/dist/krill/lib/get_password.d.ts +8 -0
  452. package/dist/krill/lib/get_password.js +36 -0
  453. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  454. package/dist/krill/lib/get_userfullname.js +23 -0
  455. package/dist/krill/lib/get_username.d.ts +8 -0
  456. package/dist/krill/lib/get_username.js +23 -0
  457. package/dist/krill/lib/select_address_type.d.ts +8 -0
  458. package/dist/krill/lib/select_address_type.js +24 -0
  459. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  460. package/dist/krill/lib/select_filesystem_type.js +40 -0
  461. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  462. package/dist/krill/lib/select_installation_device.js +40 -0
  463. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  464. package/dist/krill/lib/select_installation_mode.js +25 -0
  465. package/dist/krill/lib/select_interface.d.ts +8 -0
  466. package/dist/krill/lib/select_interface.js +24 -0
  467. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  468. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  469. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  470. package/dist/krill/lib/select_keyboard_model.js +34 -0
  471. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  472. package/dist/krill/lib/select_keyboard_option.js +34 -0
  473. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  474. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  475. package/dist/krill/lib/select_languages.d.ts +8 -0
  476. package/dist/krill/lib/select_languages.js +28 -0
  477. package/dist/krill/lib/select_regions.d.ts +8 -0
  478. package/dist/krill/lib/select_regions.js +24 -0
  479. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  480. package/dist/krill/lib/select_replaced_partition.js +31 -0
  481. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  482. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  483. package/dist/krill/lib/select_zones.d.ts +8 -0
  484. package/dist/krill/lib/select_zones.js +518 -0
  485. package/dist/lib/kill_me_softly.d.ts +11 -0
  486. package/dist/lib/kill_me_softly.js +61 -0
  487. package/dist/lib/utils.d.ts +19 -0
  488. package/dist/lib/utils.js +65 -0
  489. package/dracut/create-symlink +0 -0
  490. package/dracut/export +0 -0
  491. package/dracut/export-dracut-analysis +0 -0
  492. package/dracut/export-dracut-log +0 -0
  493. package/dracut/mkisofs +0 -0
  494. package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
  495. package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
  496. package/dracut/modules.d/90block/block-cmdline.sh +0 -0
  497. package/dracut/modules.d/90block/module-setup.sh +0 -0
  498. package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
  499. package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
  500. package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
  501. package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
  502. package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
  503. package/dracut/renew-initramfs +0 -0
  504. package/dracut/sbin2bin +0 -0
  505. package/dracut/update-dracut-conf-d +0 -0
  506. package/dracut/update-dracut-modules +0 -0
  507. package/eui/eui-autostart-cinnamon.desktop +0 -0
  508. package/eui/eui-autostart-xfce.desktop +0 -0
  509. package/eui/eui-create-image.sh +0 -0
  510. package/eui/eui-start.sh +0 -0
  511. package/package.json +124 -130
  512. package/perrisbrewery/scripts/postinst +0 -0
  513. package/perrisbrewery/scripts/postrm +0 -0
  514. package/perrisbrewery/scripts/preinst +0 -0
  515. package/perrisbrewery/scripts/prerm +0 -0
  516. package/scripts/99clean +0 -0
  517. package/scripts/_eggs +3 -1
  518. package/scripts/adapt.sh +0 -0
  519. package/scripts/boot-encrypted-root.sh +138 -95
  520. package/scripts/bros/waydroid-helper.sh +0 -0
  521. package/scripts/eggs.bash +2 -2
  522. package/scripts/lsb_release +0 -0
  523. package/scripts/mom.sh +0 -0
  524. package/scripts/mount-encrypted-home.sh +130 -65
  525. package/scripts/pve-live.service +0 -0
  526. package/scripts/pve-live.sh +0 -0
  527. package/scripts/resy +0 -0
  528. /package/addons/eggs/theme/livecd/{grub.main.cfg → full.grub.main.cfg} +0 -0
  529. /package/addons/eggs/theme/livecd/{isolinux.main.full.cfg → full.isolinux.main.cfg} +0 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ./src/classes/ovary.d/encrypt-live-fs.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ /**
10
+ * luksRoot()
11
+ *
12
+ * create a container LUKS with the entire
13
+ * filesystem.squashfs
14
+ */
15
+ export declare function luksRoot(this: Ovary): Promise<void>;
@@ -0,0 +1,185 @@
1
+ /**
2
+ * ./src/classes/ovary.d/encrypt-live-fs.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ // packages
9
+ import fs from 'fs';
10
+ import { spawn } from 'node:child_process';
11
+ import Utils from '../utils.js';
12
+ import { exec } from '../../lib/utils.js';
13
+ const noop = () => { };
14
+ /**
15
+ * luksRoot()
16
+ *
17
+ * create a container LUKS with the entire
18
+ * filesystem.squashfs
19
+ */
20
+ export async function luksRoot() {
21
+ const loggers = {
22
+ log: this.hidden ? noop : console.log,
23
+ warning: this.hidden ? noop : Utils.warning,
24
+ success: this.hidden ? noop : Utils.success,
25
+ info: this.hidden ? noop : Utils.info,
26
+ };
27
+ const { log, warning, success, info } = loggers;
28
+ // filesystem.squashfs
29
+ const live_fs = `${this.settings.iso_work}live/filesystem.squashfs`;
30
+ try {
31
+ /**
32
+ * this.luksMappedName = 'luks.img';
33
+ * this.luksFile = `/tmp/${luksMappedName}`
34
+ * this.luksDevice = `/dev/mapper/${luksMappedName}`
35
+ * this.luksMountpoint = `/tmp/mnt/${luksMappedName}`
36
+ * this.luksPassword = '0'
37
+ */
38
+ if (this.hidden) {
39
+ Utils.warning("intentionally blank. System is working, please wait");
40
+ }
41
+ log();
42
+ log('====================================');
43
+ log(` Creating ${this.luksMappedName}`);
44
+ log('====================================');
45
+ if (!fs.existsSync(live_fs)) {
46
+ throw new Error(`filesystem.squashfs not found at: ${live_fs}`);
47
+ }
48
+ const stats = fs.statSync(live_fs);
49
+ let size = stats.size; // Dimensione REALE del file in Byte
50
+ // Add overhead * 1.25 per più sicurezza con file grandi
51
+ const luksSize = Math.ceil(size * 1.25);
52
+ warning(`filesystem.squashfs size: ${bytesToGB(size)}`);
53
+ warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
54
+ warning(`creating partition LUKS: ${this.luksFile}`);
55
+ await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
56
+ warning(`formatting ${this.luksFile} as a LUKS volume...`);
57
+ // await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
58
+ const luksFormatArgs = buildLuksFormatArgs(this.luksConfig, this.luksFile);
59
+ await executeCommand('cryptsetup', luksFormatArgs, `${this.luksPassword}\n`);
60
+ warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
61
+ await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
62
+ warning(`formatting ext4 (without journal)...`);
63
+ await exec(`mkfs.ext4 -O ^has_journal -L live-root ${this.luksDevice}`, this.echo);
64
+ warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
65
+ if (fs.existsSync(this.luksMountpoint)) {
66
+ if (!Utils.isMountpoint(this.luksMountpoint)) {
67
+ await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
68
+ }
69
+ else {
70
+ throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
71
+ }
72
+ }
73
+ await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
74
+ await exec(`mount /dev/mapper/${this.luksMappedName} ${this.luksMountpoint}`, this.echo);
75
+ warning(`moving ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`);
76
+ await exec(`mv ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`, this.echo);
77
+ warning(`Syncing filesystem on ${this.luksMountpoint}...`);
78
+ await exec('sync', this.echo); // Forza scrittura dati su disco
79
+ warning(`Attempting unmount ${this.luksMountpoint}...`);
80
+ try {
81
+ await exec(`umount ${this.luksMountpoint}`, this.echo);
82
+ success(`Unmounted ${this.luksMountpoint} successfully.`);
83
+ }
84
+ catch (umountError) {
85
+ Utils.error(`Failed to unmount ${this.luksMountpoint}! Trying force unmount...`);
86
+ // Tenta un unmount forzato/lazy come ultima risorsa
87
+ await exec(`umount -lf ${this.luksMountpoint}`).catch((forceError) => {
88
+ Utils.error(`Force unmount also failed: ${forceError}`);
89
+ // Considera se lanciare un errore qui per fermare il processo
90
+ });
91
+ // Lancia comunque l'errore originale per segnalare il problema
92
+ throw umountError;
93
+ }
94
+ warning(`closing LUKS volume ${this.luksFile}.`);
95
+ await executeCommand('cryptsetup', ['close', this.luksMappedName]);
96
+ warning(`moving ${this.luksMappedName} on (ISO)/live.`);
97
+ await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
98
+ }
99
+ catch (error) {
100
+ if (error instanceof Error) {
101
+ Utils.error(`ERROR: ${error.message}`);
102
+ }
103
+ else {
104
+ Utils.error(`An unknown error has occurred.`);
105
+ }
106
+ Utils.warning('Cleaning performed following the error...');
107
+ if (fs.existsSync(this.luksMountpoint)) {
108
+ await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
109
+ }
110
+ if (fs.existsSync(this.luksDevice)) {
111
+ await executeCommand('cryptsetup', ['close', this.luksMappedName]).catch(() => { });
112
+ }
113
+ await Utils.pressKeyToExit();
114
+ process.exit(1);
115
+ }
116
+ }
117
+ /**
118
+ * Funzione helper per eseguire comandi esterni in modo asincrono,
119
+ * gestendo lo standard input per passare le password.
120
+ * Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
121
+ */
122
+ function executeCommand(command, args, stdinData) {
123
+ return new Promise((resolve, reject) => {
124
+ // Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
125
+ const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
126
+ const process = spawn(command, args, { stdio: stdioConfig });
127
+ // Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
128
+ if (stdinData && process.stdin) {
129
+ process.stdin.write(stdinData);
130
+ process.stdin.end();
131
+ }
132
+ process.on('error', (err) => {
133
+ reject(new Error(`Error starting command "${command}": ${err.message}`));
134
+ });
135
+ process.on('close', (code) => {
136
+ if (code === 0) {
137
+ resolve(); // Success
138
+ }
139
+ else {
140
+ reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
141
+ }
142
+ });
143
+ });
144
+ }
145
+ /**
146
+ * Converte bytes in gigabytes per la visualizzazione.
147
+ */
148
+ function bytesToGB(bytes) {
149
+ if (bytes === 0)
150
+ return '0.00 GB';
151
+ const gigabytes = bytes / (1024 * 1024 * 1024);
152
+ return gigabytes.toFixed(2) + ' GB';
153
+ }
154
+ /**
155
+ * buildLuksFormatArgs
156
+ */
157
+ function buildLuksFormatArgs(config, luksFile) {
158
+ const args = [
159
+ '--batch-mode', // Per saltare la conferma "YES"
160
+ 'luksFormat',
161
+ '--type', 'luks2',
162
+ // Parametri base
163
+ '--cipher', config.cipher,
164
+ '--key-size', config['key-size'].toString(),
165
+ '--hash', config.hash,
166
+ '--sector-size', config['sector-size'].toString(),
167
+ '--pbkdf', config.pbkdf,
168
+ ];
169
+ // Aggiungi i parametri condizionali del PBKDF
170
+ switch (config.pbkdf) {
171
+ case 'argon2id':
172
+ case 'argon2i':
173
+ const argonConfig = config;
174
+ args.push('--pbkdf-memory', argonConfig['pbkdf-memory (KiB)'].toString());
175
+ args.push('--pbkdf-parallel', argonConfig['pbkdf-parallel (threads)'].toString());
176
+ break;
177
+ case 'pbkdf2':
178
+ const pbkdf2Config = config;
179
+ args.push('--iter-time', pbkdf2Config['iter-time (ms)'].toString());
180
+ break;
181
+ }
182
+ // Aggiungi il file di destinazione
183
+ args.push(luksFile);
184
+ return args;
185
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ./src/classes/ovary.d/produce.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 Ovary from './../ovary.js';
9
+ /**
10
+ * makeDotDisk
11
+ */
12
+ export declare function makeDotDisk(this: Ovary, info?: string, mksquashfs?: string, mkisofs?: string): void;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ./src/classes/ovary.d/produce.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
+ // packages
9
+ import fs from 'node:fs';
10
+ import shx from 'shelljs';
11
+ import path from 'path';
12
+ // interfaces
13
+ // libraries
14
+ // classes
15
+ import Utils from './../utils.js';
16
+ // _dirname
17
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
18
+ /**
19
+ * makeDotDisk
20
+ */
21
+ export function makeDotDisk(info = '', mksquashfs = '', mkisofs = '') {
22
+ const dotDisk = this.settings.iso_work + '.disk';
23
+ if (fs.existsSync(dotDisk)) {
24
+ shx.rm('-rf', dotDisk);
25
+ }
26
+ shx.mkdir('-p', dotDisk);
27
+ /**
28
+ * write volid .disk/info
29
+ * Required
30
+ */
31
+ let volidContent = "Linux live";
32
+ if (this.hidden) {
33
+ fs.writeFileSync(path.join(dotDisk, 'info'), volidContent, 'utf-8');
34
+ return;
35
+ }
36
+ /**
37
+ * write volid .disk/info
38
+ * Complete
39
+ */
40
+ volidContent = this.settings.isoFilename;
41
+ fs.writeFileSync(path.join(dotDisk, 'info'), volidContent, 'utf-8');
42
+ /**
43
+ * A readme now replace the old .disk/info
44
+ */
45
+ let readme = ``;
46
+ readme += `# penguins_eggs\n`;
47
+ readme += `\n`;
48
+ readme += `Volinfo: ${this.volid}\n`;
49
+ readme += `Image created at: ${Utils.formatDate(new Date())} using penguins_eggs v. ${Utils.getPackageVersion()})\n`;
50
+ readme += `repo: [penguins-eggs](https://github.com/penguins-eggs)\n`;
51
+ readme += `blog: [penguins-eggs.net](https://penguins-eggs.net)\n`;
52
+ readme += `author: [Piero Proietti](mailto://piero.proietti@gmail.com)\n`;
53
+ fs.writeFileSync(path.join(dotDisk, 'README.md'), readme, 'utf-8');
54
+ /**
55
+ * write mksquashfs as .disk/mksquashfs
56
+ */
57
+ fs.writeFileSync(path.join(dotDisk, 'mksquashfs'), mksquashfs, 'utf-8');
58
+ /**
59
+ * write mkisofs as .disk/mkisofs
60
+ */
61
+ fs.writeFileSync(path.join(dotDisk, 'mkisofs'), mkisofs, 'utf-8');
62
+ /**
63
+ * touch uuid as file name on .disk/id
64
+ *
65
+ * This is a DEBIAN standard
66
+ */
67
+ if (this.uuid && this.uuid.trim() !== '') {
68
+ shx.mkdir(path.join(dotDisk, 'id'));
69
+ shx.touch(path.join(dotDisk, 'id', this.uuid));
70
+ }
71
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/classes/ovary.d/make-efi.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 Ovary from '../ovary.js';
9
+ /**
10
+ *
11
+ * @param this
12
+ * @param theme
13
+ */
14
+ export declare function makeEfi(this: Ovary, theme?: string): Promise<void>;
@@ -0,0 +1,290 @@
1
+ /**
2
+ * ./src/classes/ovary.d/make-efi.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 mustache from 'mustache';
9
+ // packages
10
+ import fs from 'node:fs';
11
+ import path from 'node:path';
12
+ // classes
13
+ import { exec } from '../../lib/utils.js';
14
+ import Diversions from '../diversions.js';
15
+ import Utils from '../utils.js';
16
+ // _dirname
17
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
18
+ /**
19
+ *
20
+ * @param this
21
+ * @param theme
22
+ */
23
+ export async function makeEfi(theme = 'eggs') {
24
+ const bootloaders = Diversions.bootloaders(this.familyId);
25
+ /**
26
+ * except Debian/Devuan/Ubuntu all distros will use: not signed
27
+ * paths here for Ubuntu and Debian are the same, here checked!
28
+ */
29
+ let signed = false;
30
+ let grubEfi = path.resolve(bootloaders, `grub/x86_64-efi/monolithic/grubx64.efi`);
31
+ let shimEfi = path.resolve(bootloaders, `shim/shimx64.efi`);
32
+ if (this.familyId === "debian") {
33
+ signed = true;
34
+ if (process.arch === 'x64') {
35
+ grubEfi = path.resolve(bootloaders, `grub/x86_64-efi-signed/grubx64.efi.signed`);
36
+ shimEfi = path.resolve(bootloaders, `shim/shimx64.efi.signed`);
37
+ }
38
+ else if (process.arch === 'ia32') {
39
+ grubEfi = path.resolve(bootloaders, `grub/i386-efi-signed/grubia32.efi.signed`);
40
+ shimEfi = path.resolve(bootloaders, `shim/shimia32.efi.signed`);
41
+ }
42
+ else if (process.arch === 'arm64') {
43
+ grubEfi = path.resolve(bootloaders, `grub/arm64-efi-signed/grubaa64.efi.signed`);
44
+ shimEfi = path.resolve(bootloaders, `shim/shimaa64.efi.signed`);
45
+ }
46
+ }
47
+ if (signed) {
48
+ Utils.warning(`Your live system ${this.distroId}/${process.arch} can boot with Secure Boot enabled`);
49
+ }
50
+ else {
51
+ Utils.warning(`You must disable Secure Boot to boot live system ${this.distroId}/${process.arch}`);
52
+ }
53
+ // 2 secondi per leggere...
54
+ await new Promise(resolve => setTimeout(resolve, 2000));
55
+ const efiPath = path.join(this.settings.config.snapshot_mnt, '/efi/');
56
+ const efiWorkDir = path.join(efiPath, '/work/');
57
+ const efiMemdiskDir = path.join(efiPath, '/memdisk/');
58
+ const efiImgMnt = path.join(efiPath, 'mnt');
59
+ const isoDir = this.settings.iso_work;
60
+ // create (ISO)/boot/grub
61
+ await exec(`mkdir ${isoDir}/boot/grub/${Utils.uefiFormat()} -p`, this.echo);
62
+ // create (ISO)/EFI
63
+ await exec(`mkdir ${isoDir}/EFI/boot -p`, this.echo);
64
+ await exec(`cp ${shimEfi} ${isoDir}/EFI/boot/${bootEfiName()}`, this.echo);
65
+ await exec(`cp ${grubEfi} ${isoDir}/EFI/boot/${grubEfiName()}`, this.echo);
66
+ // clean/create all in efiPath
67
+ if (fs.existsSync(efiPath)) {
68
+ await exec(`rm -rf ${efiPath}`);
69
+ }
70
+ await exec(`mkdir ${efiPath}`, this.echo);
71
+ await exec(`mkdir ${efiMemdiskDir}`, this.echo);
72
+ await exec(`mkdir ${efiImgMnt}`, this.echo);
73
+ await exec(`mkdir ${efiWorkDir}`, this.echo);
74
+ /**
75
+ * create efi.img
76
+ */
77
+ let seeker = '';
78
+ seeker += `search --file --set=root /.disk/id/${this.uuid}\n`;
79
+ seeker += "set prefix=($root)/boot/grub\n";
80
+ seeker += "source $prefix/${grub_cpu}-efi/grub.cfg\n";
81
+ /**
82
+ * creating grub.cfg (1) seeker for usb on (efi.img)/boot/grub/grub.cfg
83
+ */
84
+ Utils.warning("creating grub.cfg seeker USB on (efi.img)/boot/grub");
85
+ await exec(`mkdir ${path.join(efiMemdiskDir, "/boot/grub -p")}`, this.echo);
86
+ const cfgSeekerUsb = `${efiMemdiskDir}/boot/grub/grub.cfg`;
87
+ let cfgSeekerUsbText = '';
88
+ cfgSeekerUsbText += `# grub.cfg seeker\n`;
89
+ cfgSeekerUsbText += `# created on ${efiMemdiskDir}, path ${cfgSeekerUsb}\n`;
90
+ cfgSeekerUsbText += `\n`;
91
+ cfgSeekerUsbText += seeker;
92
+ Utils.write(cfgSeekerUsb, cfgSeekerUsbText);
93
+ /**
94
+ * create grub.cfg (bridge) on (ISO)/boot/grub/x86_64-efi/grub.cfg
95
+ */
96
+ Utils.warning(`creating grub.cfg bridge to main. (ISO)/boot/grub/${Utils.uefiFormat()}`);
97
+ let cfgBridge = `${isoDir}/boot/grub/${Utils.uefiFormat()}/grub.cfg`;
98
+ let cfgBridgeText = `# grub.cfg bridge\n`;
99
+ cfgBridgeText += `# created on ${cfgBridge}\n`;
100
+ cfgBridgeText += `\n`;
101
+ cfgBridgeText += `source /boot/grub/grub.cfg\n`;
102
+ fs.writeFileSync(cfgBridge, cfgBridgeText);
103
+ /**
104
+ * grub bait: si applica a tutte le distro:
105
+ * /EFI/debian per tutti, tranne ubuntu
106
+ */
107
+ let pathBait = path.join(isoDir, '/EFI/debian');
108
+ if (this.distroLike === 'Ubuntu') {
109
+ pathBait = path.join(isoDir, '/EFI/ubuntu');
110
+ }
111
+ await exec(`mkdir ${pathBait} -p`, this.echo);
112
+ Utils.warning(`creating grub.cfg seeker ISO/DVD on (ISO)/EFI/${path.basename(pathBait)}`);
113
+ let cfgBait = path.join(pathBait, '/grub.cfg');
114
+ let cfgBaitText = '';
115
+ cfgBaitText += `\n`;
116
+ cfgBaitText += seeker;
117
+ Utils.write(cfgBait, cfgBaitText);
118
+ /**
119
+ * README.md, per tutti tranne distrolike Debian ed Ubuntu
120
+ */
121
+ let baitReadme = path.join(pathBait, '/README.md');
122
+ let baitReadmeText = ``;
123
+ if (this.distroLike !== 'Debian' && this.distroLike !== 'Ubuntu') {
124
+ baitReadmeText += `# penguins-eggs\n`;
125
+ baitReadmeText += '\n';
126
+ baitReadmeText += `This is just an hack, to let ${this.distroId} boot using Debian trixie bootloaders\n`;
127
+ fs.writeFileSync(baitReadme, baitReadmeText);
128
+ }
129
+ /**
130
+ * creating structure efiWordDir
131
+ */
132
+ await exec(`mkdir -p ${efiWorkDir}/boot/grub`, this.echo); // qua va grub.cfg 2
133
+ await exec(`mkdir -p ${efiWorkDir}/EFI/boot`);
134
+ /**
135
+ * create tarred efiMemdiskDir
136
+ */
137
+ const currentDir = process.cwd();
138
+ process.chdir(efiMemdiskDir);
139
+ await exec('tar -cvf memdisk boot', this.echo);
140
+ process.chdir(currentDir);
141
+ /**
142
+ * Create boot image "boot/grub/efi.img"
143
+ */
144
+ const efiImg = path.join(efiWorkDir, `boot/grub/efi.img`);
145
+ await exec(`dd if=/dev/zero of=${efiImg} bs=1M count=16`, this.echo);
146
+ await exec(`/sbin/mkdosfs -F 12 ${efiImg}`, this.echo);
147
+ await new Promise(resolve => setTimeout(resolve, 500));
148
+ // mount efi.img on mountpoint mnt-img
149
+ await exec(`mount --make-shared -o loop ${efiImg} ${efiImgMnt}`, this.echo);
150
+ await new Promise(resolve => setTimeout(resolve, 1000));
151
+ // create structure inside (efi.img)
152
+ await exec(`mkdir -p ${efiImgMnt}/boot`, this.echo);
153
+ await exec(`mkdir -p ${efiImgMnt}/EFI/boot`, this.echo);
154
+ /**
155
+ * copy grubCfg1 (grub.cfg) to (efi.img)/boot/grub
156
+ */
157
+ await exec(`cp ${cfgSeekerUsb} ${efiImgMnt}/boot/grub.cfg`, this.echo);
158
+ await exec(`cp ${shimEfi} ${efiImgMnt}/EFI/boot/${bootEfiName()}`, this.echo);
159
+ await exec(`cp ${grubEfi} ${efiImgMnt}/EFI/boot/${grubEfiName()}`, this.echo);
160
+ await new Promise(resolve => setTimeout(resolve, 1000));
161
+ if (!fs.existsSync(`${efiImgMnt}/boot/grub.cfg`)) {
162
+ console.log(`error copyng ${cfgSeekerUsb} seeker for USB on (efi.img)/boot/grub.cfg`);
163
+ process.exit(1);
164
+ }
165
+ await new Promise(resolve => setTimeout(resolve, 500));
166
+ await exec(`umount ${efiImgMnt}`, this.echo);
167
+ await new Promise(resolve => setTimeout(resolve, 500));
168
+ // Copy isoImg in ${${isoDir}/boot/grub
169
+ Utils.warning("copyng (efi.img) on (ISO)/boot/grub");
170
+ await exec(`cp ${efiImg} ${isoDir}/boot/grub`, this.echo);
171
+ /**
172
+ * creating grub.cfg (4) on (ISO)/boot/grub
173
+ */
174
+ Utils.warning("creating grub.cfg main on (ISO)/boot/grub");
175
+ // splash.png
176
+ let splashSrc = '';
177
+ const splashDest = `${efiWorkDir}/boot/grub/splash.png`;
178
+ let themeSrc = '';
179
+ const themeDest = `${isoDir}/boot/grub/theme.cfg`;
180
+ let grubTemplate = '';
181
+ if (this.hidden) {
182
+ splashSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/generic-splash.png`);
183
+ grubTemplate = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/generic.grub.main.cfg');
184
+ themeSrc = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/generic.grub.theme.cfg');
185
+ }
186
+ else {
187
+ // copy splash to efiWorkDir
188
+ splashSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/splash.png`);
189
+ if (this.theme.includes('/')) {
190
+ splashSrc = `${theme}/theme/livecd/splash.png`;
191
+ }
192
+ if (!fs.existsSync(splashSrc)) {
193
+ Utils.warning(`warning: ${splashSrc} does not exists`);
194
+ process.exit(1);
195
+ }
196
+ // select themeSrc
197
+ themeSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/grub.theme.cfg`);
198
+ if (this.theme.includes('/')) {
199
+ themeSrc = `${theme}/theme/livecd/grub.theme.cfg`;
200
+ }
201
+ // copy theme
202
+ if (!fs.existsSync(themeSrc)) {
203
+ Utils.error(`error: ${themeSrc} does not exist`);
204
+ process.exit(1);
205
+ }
206
+ // selecting available fonts
207
+ if (fs.existsSync('/usr/share/grub/font.pf2')) {
208
+ await exec(`cp /usr/share/grub/font.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
209
+ }
210
+ else if (fs.existsSync('/usr/share/grub/unicode.pf2')) {
211
+ await exec(`cp /usr/share/grub/unicode.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
212
+ }
213
+ else if (fs.existsSync('/usr/share/grub/ascii.pf2')) {
214
+ await exec(`cp /usr/share/grub/ascii.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
215
+ }
216
+ // Copy workdir files to ISO/boot
217
+ await exec(`rsync -avx ${efiWorkDir}/boot ${isoDir}/`, this.echo);
218
+ /**
219
+ * prepare main grub.cfg from grub.main.cfg
220
+ */
221
+ grubTemplate = `${theme}/theme/livecd/grub.main.cfg`;
222
+ if (!fs.existsSync(grubTemplate)) {
223
+ grubTemplate = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/grub.main.cfg');
224
+ }
225
+ if (!fs.existsSync(grubTemplate)) {
226
+ Utils.error(`error: ${grubTemplate} does not exist`);
227
+ process.exit(1);
228
+ }
229
+ }
230
+ // splash.png
231
+ await exec(`cp ${splashSrc} ${splashDest}`, this.echo);
232
+ // grub.theme.png
233
+ fs.copyFileSync(themeSrc, themeDest);
234
+ // grub.main.png
235
+ const kernel_parameters = Diversions.kernelParameters(this.familyId, this.volid, this.fullcrypt);
236
+ const cfgMain = path.join(isoDir, '/boot/grub/grub.cfg');
237
+ const template = fs.readFileSync(grubTemplate, 'utf8');
238
+ const view = {
239
+ fullname: this.settings.remix.fullname.toUpperCase(),
240
+ initrdImg: `/live/${path.basename(this.initrd)}`,
241
+ kernel: this.kernel,
242
+ kernel_parameters,
243
+ vmlinuz: `/live/${path.basename(this.vmlinuz)}`
244
+ };
245
+ let cfgMainText = '';
246
+ cfgMainText += `# grub.cfg (4) main\n`;
247
+ if (!this.hidden) {
248
+ cfgMainText += `# created on ${cfgMain}`;
249
+ }
250
+ cfgMainText += `\n`;
251
+ cfgMainText += mustache.render(template, view);
252
+ fs.writeFileSync(cfgMain, cfgMainText);
253
+ }
254
+ /**
255
+ * FUNCTIONS
256
+ */
257
+ /**
258
+ *
259
+ * @returns
260
+ */
261
+ function bootEfiName() {
262
+ let ben = '';
263
+ if (process.arch === 'x64') {
264
+ ben = 'bootx64.efi';
265
+ }
266
+ else if (process.arch === 'ia32') {
267
+ ben = 'bootia32.efi';
268
+ }
269
+ else if (process.arch === 'arm64') {
270
+ ben = 'bootaa64.efi';
271
+ }
272
+ return ben;
273
+ }
274
+ /**
275
+ *
276
+ * @returns
277
+ */
278
+ function grubEfiName() {
279
+ let gen = '';
280
+ if (process.arch === 'x64') {
281
+ gen = 'grubx64.efi';
282
+ }
283
+ else if (process.arch === 'ia32') {
284
+ gen = 'grub ia32.efi';
285
+ }
286
+ else if (process.arch === 'arm64') {
287
+ gen = 'grubaa64.efi';
288
+ }
289
+ return gen;
290
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ./src/classes/ovary.d/make-iso.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 Ovary from '../ovary.js';
9
+ /**
10
+ * makeIso
11
+ * cmd: cmd 4 xorriso
12
+ */
13
+ export declare function makeIso(this: Ovary, cmd: string, scriptOnly?: boolean): Promise<void>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ./src/classes/ovary.d/make-iso.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
+ // packages
9
+ import path from 'node:path';
10
+ // classes
11
+ import { exec } from '../../lib/utils.js';
12
+ import Utils from '../utils.js';
13
+ // _dirname
14
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
15
+ /**
16
+ * makeIso
17
+ * cmd: cmd 4 xorriso
18
+ */
19
+ export async function makeIso(cmd, scriptOnly = false) {
20
+ // echo = { echo: true, ignore: false }
21
+ if (this.verbose) {
22
+ console.log('Ovary: makeIso');
23
+ }
24
+ Utils.writeX(`${this.settings.work_dir.ovarium}mkisofs`, cmd);
25
+ // Create link to iso ALLWAYS
26
+ const src = this.settings.config.snapshot_mnt + this.settings.isoFilename;
27
+ const dest = this.settings.config.snapshot_dir + this.settings.isoFilename;
28
+ await exec(`ln -s ${src} ${dest}`);
29
+ if (!scriptOnly) {
30
+ const test = (await exec(cmd, Utils.setEcho(true))).code;
31
+ if (test !== 0) {
32
+ process.exit();
33
+ }
34
+ // Create link to iso
35
+ const src = this.settings.config.snapshot_mnt + this.settings.isoFilename;
36
+ const dest = this.settings.config.snapshot_dir + this.settings.isoFilename;
37
+ await exec(`ln -s ${src} ${dest}`);
38
+ // Create md5sum, sha256sum
39
+ if (this.settings.config.make_md5sum) {
40
+ Utils.warning('creating md5, sha256');
41
+ await exec(`md5sum ${src} > ${dest.replace('.iso', '.md5')}`);
42
+ await exec(`sha256sum ${src} > ${dest.replace('.iso', '.sha256')}`);
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ./src/classes/ovary.d/make-squashfs.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 Ovary from '../ovary.js';
9
+ /**
10
+ * squashFs: crea in live filesystem.squashfs
11
+ */
12
+ export declare function makeSquashfs(this: Ovary, scriptOnly?: boolean, includeRootHome?: boolean): Promise<string>;
13
+ /**
14
+ * Add or remove exclusion
15
+ * @param add {boolean} true = add, false remove
16
+ * @param exclusion {string} path to add/remove
17
+ */
18
+ export declare function addExclusion(this: Ovary, exclusion: string): void;