penguins-eggs 10.1.1 → 25.7.10

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 (441) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +55 -60
  3. package/assets/calamares/install-system.sh +2 -1
  4. package/bootloaders/README.md +22 -0
  5. package/bootloaders/grub/x86_64-efi/acpi.mod +0 -0
  6. package/bootloaders/grub/x86_64-efi/adler32.mod +0 -0
  7. package/bootloaders/grub/x86_64-efi/affs.mod +0 -0
  8. package/bootloaders/grub/x86_64-efi/afs.mod +0 -0
  9. package/bootloaders/grub/x86_64-efi/afsplitter.mod +0 -0
  10. package/bootloaders/grub/x86_64-efi/ahci.mod +0 -0
  11. package/bootloaders/grub/x86_64-efi/all_video.mod +0 -0
  12. package/bootloaders/grub/x86_64-efi/aout.mod +0 -0
  13. package/bootloaders/grub/x86_64-efi/appleldr.mod +0 -0
  14. package/bootloaders/grub/x86_64-efi/archelp.mod +0 -0
  15. package/bootloaders/grub/x86_64-efi/at_keyboard.mod +0 -0
  16. package/bootloaders/grub/x86_64-efi/ata.mod +0 -0
  17. package/bootloaders/grub/x86_64-efi/backtrace.mod +0 -0
  18. package/bootloaders/grub/x86_64-efi/bfs.mod +0 -0
  19. package/bootloaders/grub/x86_64-efi/bitmap.mod +0 -0
  20. package/bootloaders/grub/x86_64-efi/bitmap_scale.mod +0 -0
  21. package/bootloaders/grub/x86_64-efi/blocklist.mod +0 -0
  22. package/bootloaders/grub/x86_64-efi/boot.mod +0 -0
  23. package/bootloaders/grub/x86_64-efi/bsd.mod +0 -0
  24. package/bootloaders/grub/x86_64-efi/bswap_test.mod +0 -0
  25. package/bootloaders/grub/x86_64-efi/btrfs.mod +0 -0
  26. package/bootloaders/grub/x86_64-efi/bufio.mod +0 -0
  27. package/bootloaders/grub/x86_64-efi/cat.mod +0 -0
  28. package/bootloaders/grub/x86_64-efi/cbfs.mod +0 -0
  29. package/bootloaders/grub/x86_64-efi/cbls.mod +0 -0
  30. package/bootloaders/grub/x86_64-efi/cbmemc.mod +0 -0
  31. package/bootloaders/grub/x86_64-efi/cbtable.mod +0 -0
  32. package/bootloaders/grub/x86_64-efi/cbtime.mod +0 -0
  33. package/bootloaders/grub/x86_64-efi/chain.mod +0 -0
  34. package/bootloaders/grub/x86_64-efi/cmdline_cat_test.mod +0 -0
  35. package/bootloaders/grub/x86_64-efi/cmp.mod +0 -0
  36. package/bootloaders/grub/x86_64-efi/cmp_test.mod +0 -0
  37. package/bootloaders/grub/x86_64-efi/command.lst +194 -0
  38. package/bootloaders/grub/x86_64-efi/config.h +69 -0
  39. package/bootloaders/grub/x86_64-efi/configfile.mod +0 -0
  40. package/bootloaders/grub/x86_64-efi/cpio.mod +0 -0
  41. package/bootloaders/grub/x86_64-efi/cpio_be.mod +0 -0
  42. package/bootloaders/grub/x86_64-efi/cpuid.mod +0 -0
  43. package/bootloaders/grub/x86_64-efi/crc64.mod +0 -0
  44. package/bootloaders/grub/x86_64-efi/crypto.lst +45 -0
  45. package/bootloaders/grub/x86_64-efi/crypto.mod +0 -0
  46. package/bootloaders/grub/x86_64-efi/cryptodisk.mod +0 -0
  47. package/bootloaders/grub/x86_64-efi/cs5536.mod +0 -0
  48. package/bootloaders/grub/x86_64-efi/ctz_test.mod +0 -0
  49. package/bootloaders/grub/x86_64-efi/date.mod +0 -0
  50. package/bootloaders/grub/x86_64-efi/datehook.mod +0 -0
  51. package/bootloaders/grub/x86_64-efi/datetime.mod +0 -0
  52. package/bootloaders/grub/x86_64-efi/disk.mod +0 -0
  53. package/bootloaders/grub/x86_64-efi/diskfilter.mod +0 -0
  54. package/bootloaders/grub/x86_64-efi/div.mod +0 -0
  55. package/bootloaders/grub/x86_64-efi/div_test.mod +0 -0
  56. package/bootloaders/grub/x86_64-efi/dm_nv.mod +0 -0
  57. package/bootloaders/grub/x86_64-efi/echo.mod +0 -0
  58. package/bootloaders/grub/x86_64-efi/efi_gop.mod +0 -0
  59. package/bootloaders/grub/x86_64-efi/efi_uga.mod +0 -0
  60. package/bootloaders/grub/x86_64-efi/efifwsetup.mod +0 -0
  61. package/bootloaders/grub/x86_64-efi/efinet.mod +0 -0
  62. package/bootloaders/grub/x86_64-efi/ehci.mod +0 -0
  63. package/bootloaders/grub/x86_64-efi/elf.mod +0 -0
  64. package/bootloaders/grub/x86_64-efi/eval.mod +0 -0
  65. package/bootloaders/grub/x86_64-efi/exfat.mod +0 -0
  66. package/bootloaders/grub/x86_64-efi/exfctest.mod +0 -0
  67. package/bootloaders/grub/x86_64-efi/ext2.mod +0 -0
  68. package/bootloaders/grub/x86_64-efi/extcmd.mod +0 -0
  69. package/bootloaders/grub/x86_64-efi/f2fs.mod +0 -0
  70. package/bootloaders/grub/x86_64-efi/fat.mod +0 -0
  71. package/bootloaders/grub/x86_64-efi/fdt.lst +0 -0
  72. package/bootloaders/grub/x86_64-efi/file.mod +0 -0
  73. package/bootloaders/grub/x86_64-efi/fixvideo.mod +0 -0
  74. package/bootloaders/grub/x86_64-efi/font.mod +0 -0
  75. package/bootloaders/grub/x86_64-efi/fs.lst +37 -0
  76. package/bootloaders/grub/x86_64-efi/fshelp.mod +0 -0
  77. package/bootloaders/grub/x86_64-efi/functional_test.mod +0 -0
  78. package/bootloaders/grub/x86_64-efi/gcry_arcfour.mod +0 -0
  79. package/bootloaders/grub/x86_64-efi/gcry_blowfish.mod +0 -0
  80. package/bootloaders/grub/x86_64-efi/gcry_camellia.mod +0 -0
  81. package/bootloaders/grub/x86_64-efi/gcry_cast5.mod +0 -0
  82. package/bootloaders/grub/x86_64-efi/gcry_crc.mod +0 -0
  83. package/bootloaders/grub/x86_64-efi/gcry_des.mod +0 -0
  84. package/bootloaders/grub/x86_64-efi/gcry_dsa.mod +0 -0
  85. package/bootloaders/grub/x86_64-efi/gcry_idea.mod +0 -0
  86. package/bootloaders/grub/x86_64-efi/gcry_md4.mod +0 -0
  87. package/bootloaders/grub/x86_64-efi/gcry_md5.mod +0 -0
  88. package/bootloaders/grub/x86_64-efi/gcry_rfc2268.mod +0 -0
  89. package/bootloaders/grub/x86_64-efi/gcry_rijndael.mod +0 -0
  90. package/bootloaders/grub/x86_64-efi/gcry_rmd160.mod +0 -0
  91. package/bootloaders/grub/x86_64-efi/gcry_rsa.mod +0 -0
  92. package/bootloaders/grub/x86_64-efi/gcry_seed.mod +0 -0
  93. package/bootloaders/grub/x86_64-efi/gcry_serpent.mod +0 -0
  94. package/bootloaders/grub/x86_64-efi/gcry_sha1.mod +0 -0
  95. package/bootloaders/grub/x86_64-efi/gcry_sha256.mod +0 -0
  96. package/bootloaders/grub/x86_64-efi/gcry_sha512.mod +0 -0
  97. package/bootloaders/grub/x86_64-efi/gcry_tiger.mod +0 -0
  98. package/bootloaders/grub/x86_64-efi/gcry_twofish.mod +0 -0
  99. package/bootloaders/grub/x86_64-efi/gcry_whirlpool.mod +0 -0
  100. package/bootloaders/grub/x86_64-efi/geli.mod +0 -0
  101. package/bootloaders/grub/x86_64-efi/gettext.mod +0 -0
  102. package/bootloaders/grub/x86_64-efi/gfxmenu.mod +0 -0
  103. package/bootloaders/grub/x86_64-efi/gfxterm.mod +0 -0
  104. package/bootloaders/grub/x86_64-efi/gfxterm_background.mod +0 -0
  105. package/bootloaders/grub/x86_64-efi/gfxterm_menu.mod +0 -0
  106. package/bootloaders/grub/x86_64-efi/gptsync.mod +0 -0
  107. package/bootloaders/grub/x86_64-efi/gzio.mod +0 -0
  108. package/bootloaders/grub/x86_64-efi/halt.mod +0 -0
  109. package/bootloaders/grub/x86_64-efi/hashsum.mod +0 -0
  110. package/bootloaders/grub/x86_64-efi/hdparm.mod +0 -0
  111. package/bootloaders/grub/x86_64-efi/hello.mod +0 -0
  112. package/bootloaders/grub/x86_64-efi/help.mod +0 -0
  113. package/bootloaders/grub/x86_64-efi/hexdump.mod +0 -0
  114. package/bootloaders/grub/x86_64-efi/hfs.mod +0 -0
  115. package/bootloaders/grub/x86_64-efi/hfsplus.mod +0 -0
  116. package/bootloaders/grub/x86_64-efi/hfspluscomp.mod +0 -0
  117. package/bootloaders/grub/x86_64-efi/http.mod +0 -0
  118. package/bootloaders/grub/x86_64-efi/iorw.mod +0 -0
  119. package/bootloaders/grub/x86_64-efi/iso9660.mod +0 -0
  120. package/bootloaders/grub/x86_64-efi/jfs.mod +0 -0
  121. package/bootloaders/grub/x86_64-efi/jpeg.mod +0 -0
  122. package/bootloaders/grub/x86_64-efi/json.mod +0 -0
  123. package/bootloaders/grub/x86_64-efi/kernel.img +0 -0
  124. package/bootloaders/grub/x86_64-efi/keylayouts.mod +0 -0
  125. package/bootloaders/grub/x86_64-efi/keystatus.mod +0 -0
  126. package/bootloaders/grub/x86_64-efi/ldm.mod +0 -0
  127. package/bootloaders/grub/x86_64-efi/legacy_password_test.mod +0 -0
  128. package/bootloaders/grub/x86_64-efi/legacycfg.mod +0 -0
  129. package/bootloaders/grub/x86_64-efi/linux.mod +0 -0
  130. package/bootloaders/grub/x86_64-efi/linux16.mod +0 -0
  131. package/bootloaders/grub/x86_64-efi/linuxefi.mod +0 -0
  132. package/bootloaders/grub/x86_64-efi/loadbios.mod +0 -0
  133. package/bootloaders/grub/x86_64-efi/loadenv.mod +0 -0
  134. package/bootloaders/grub/x86_64-efi/loopback.mod +0 -0
  135. package/bootloaders/grub/x86_64-efi/ls.mod +0 -0
  136. package/bootloaders/grub/x86_64-efi/lsacpi.mod +0 -0
  137. package/bootloaders/grub/x86_64-efi/lsefi.mod +0 -0
  138. package/bootloaders/grub/x86_64-efi/lsefimmap.mod +0 -0
  139. package/bootloaders/grub/x86_64-efi/lsefisystab.mod +0 -0
  140. package/bootloaders/grub/x86_64-efi/lsmmap.mod +0 -0
  141. package/bootloaders/grub/x86_64-efi/lspci.mod +0 -0
  142. package/bootloaders/grub/x86_64-efi/lssal.mod +0 -0
  143. package/bootloaders/grub/x86_64-efi/luks.mod +0 -0
  144. package/bootloaders/grub/x86_64-efi/luks2.mod +0 -0
  145. package/bootloaders/grub/x86_64-efi/lvm.mod +0 -0
  146. package/bootloaders/grub/x86_64-efi/lzopio.mod +0 -0
  147. package/bootloaders/grub/x86_64-efi/macbless.mod +0 -0
  148. package/bootloaders/grub/x86_64-efi/macho.mod +0 -0
  149. package/bootloaders/grub/x86_64-efi/mdraid09.mod +0 -0
  150. package/bootloaders/grub/x86_64-efi/mdraid09_be.mod +0 -0
  151. package/bootloaders/grub/x86_64-efi/mdraid1x.mod +0 -0
  152. package/bootloaders/grub/x86_64-efi/memdisk.mod +0 -0
  153. package/bootloaders/grub/x86_64-efi/memrw.mod +0 -0
  154. package/bootloaders/grub/x86_64-efi/minicmd.mod +0 -0
  155. package/bootloaders/grub/x86_64-efi/minix.mod +0 -0
  156. package/bootloaders/grub/x86_64-efi/minix2.mod +0 -0
  157. package/bootloaders/grub/x86_64-efi/minix2_be.mod +0 -0
  158. package/bootloaders/grub/x86_64-efi/minix3.mod +0 -0
  159. package/bootloaders/grub/x86_64-efi/minix3_be.mod +0 -0
  160. package/bootloaders/grub/x86_64-efi/minix_be.mod +0 -0
  161. package/bootloaders/grub/x86_64-efi/mmap.mod +0 -0
  162. package/bootloaders/grub/x86_64-efi/moddep.lst +267 -0
  163. package/bootloaders/grub/x86_64-efi/modinfo.sh +40 -0
  164. package/bootloaders/grub/x86_64-efi/monolithic/gcdx64.efi +0 -0
  165. package/bootloaders/grub/x86_64-efi/monolithic/grubnetx64-installer.efi +0 -0
  166. package/bootloaders/grub/x86_64-efi/monolithic/grubnetx64.efi +0 -0
  167. package/bootloaders/grub/x86_64-efi/monolithic/grubx64.efi +0 -0
  168. package/bootloaders/grub/x86_64-efi/morse.mod +0 -0
  169. package/bootloaders/grub/x86_64-efi/mpi.mod +0 -0
  170. package/bootloaders/grub/x86_64-efi/msdospart.mod +0 -0
  171. package/bootloaders/grub/x86_64-efi/mul_test.mod +0 -0
  172. package/bootloaders/grub/x86_64-efi/multiboot.mod +0 -0
  173. package/bootloaders/grub/x86_64-efi/multiboot2.mod +0 -0
  174. package/bootloaders/grub/x86_64-efi/nativedisk.mod +0 -0
  175. package/bootloaders/grub/x86_64-efi/net.mod +0 -0
  176. package/bootloaders/grub/x86_64-efi/newc.mod +0 -0
  177. package/bootloaders/grub/x86_64-efi/nilfs2.mod +0 -0
  178. package/bootloaders/grub/x86_64-efi/normal.mod +0 -0
  179. package/bootloaders/grub/x86_64-efi/ntfs.mod +0 -0
  180. package/bootloaders/grub/x86_64-efi/ntfscomp.mod +0 -0
  181. package/bootloaders/grub/x86_64-efi/odc.mod +0 -0
  182. package/bootloaders/grub/x86_64-efi/offsetio.mod +0 -0
  183. package/bootloaders/grub/x86_64-efi/ohci.mod +0 -0
  184. package/bootloaders/grub/x86_64-efi/part_acorn.mod +0 -0
  185. package/bootloaders/grub/x86_64-efi/part_amiga.mod +0 -0
  186. package/bootloaders/grub/x86_64-efi/part_apple.mod +0 -0
  187. package/bootloaders/grub/x86_64-efi/part_bsd.mod +0 -0
  188. package/bootloaders/grub/x86_64-efi/part_dfly.mod +0 -0
  189. package/bootloaders/grub/x86_64-efi/part_dvh.mod +0 -0
  190. package/bootloaders/grub/x86_64-efi/part_gpt.mod +0 -0
  191. package/bootloaders/grub/x86_64-efi/part_msdos.mod +0 -0
  192. package/bootloaders/grub/x86_64-efi/part_plan.mod +0 -0
  193. package/bootloaders/grub/x86_64-efi/part_sun.mod +0 -0
  194. package/bootloaders/grub/x86_64-efi/part_sunpc.mod +0 -0
  195. package/bootloaders/grub/x86_64-efi/partmap.lst +11 -0
  196. package/bootloaders/grub/x86_64-efi/parttool.lst +1 -0
  197. package/bootloaders/grub/x86_64-efi/parttool.mod +0 -0
  198. package/bootloaders/grub/x86_64-efi/password.mod +0 -0
  199. package/bootloaders/grub/x86_64-efi/password_pbkdf2.mod +0 -0
  200. package/bootloaders/grub/x86_64-efi/pata.mod +0 -0
  201. package/bootloaders/grub/x86_64-efi/pbkdf2.mod +0 -0
  202. package/bootloaders/grub/x86_64-efi/pbkdf2_test.mod +0 -0
  203. package/bootloaders/grub/x86_64-efi/pcidump.mod +0 -0
  204. package/bootloaders/grub/x86_64-efi/pgp.mod +0 -0
  205. package/bootloaders/grub/x86_64-efi/play.mod +0 -0
  206. package/bootloaders/grub/x86_64-efi/png.mod +0 -0
  207. package/bootloaders/grub/x86_64-efi/priority_queue.mod +0 -0
  208. package/bootloaders/grub/x86_64-efi/probe.mod +0 -0
  209. package/bootloaders/grub/x86_64-efi/procfs.mod +0 -0
  210. package/bootloaders/grub/x86_64-efi/progress.mod +0 -0
  211. package/bootloaders/grub/x86_64-efi/raid5rec.mod +0 -0
  212. package/bootloaders/grub/x86_64-efi/raid6rec.mod +0 -0
  213. package/bootloaders/grub/x86_64-efi/random.mod +0 -0
  214. package/bootloaders/grub/x86_64-efi/rdmsr.mod +0 -0
  215. package/bootloaders/grub/x86_64-efi/read.mod +0 -0
  216. package/bootloaders/grub/x86_64-efi/reboot.mod +0 -0
  217. package/bootloaders/grub/x86_64-efi/regexp.mod +0 -0
  218. package/bootloaders/grub/x86_64-efi/reiserfs.mod +0 -0
  219. package/bootloaders/grub/x86_64-efi/relocator.mod +0 -0
  220. package/bootloaders/grub/x86_64-efi/romfs.mod +0 -0
  221. package/bootloaders/grub/x86_64-efi/scsi.mod +0 -0
  222. package/bootloaders/grub/x86_64-efi/search.mod +0 -0
  223. package/bootloaders/grub/x86_64-efi/search_fs_file.mod +0 -0
  224. package/bootloaders/grub/x86_64-efi/search_fs_uuid.mod +0 -0
  225. package/bootloaders/grub/x86_64-efi/search_label.mod +0 -0
  226. package/bootloaders/grub/x86_64-efi/serial.mod +0 -0
  227. package/bootloaders/grub/x86_64-efi/setjmp.mod +0 -0
  228. package/bootloaders/grub/x86_64-efi/setjmp_test.mod +0 -0
  229. package/bootloaders/grub/x86_64-efi/setpci.mod +0 -0
  230. package/bootloaders/grub/x86_64-efi/sfs.mod +0 -0
  231. package/bootloaders/grub/x86_64-efi/shift_test.mod +0 -0
  232. package/bootloaders/grub/x86_64-efi/signature_test.mod +0 -0
  233. package/bootloaders/grub/x86_64-efi/sleep.mod +0 -0
  234. package/bootloaders/grub/x86_64-efi/sleep_test.mod +0 -0
  235. package/bootloaders/grub/x86_64-efi/smbios.mod +0 -0
  236. package/bootloaders/grub/x86_64-efi/spkmodem.mod +0 -0
  237. package/bootloaders/grub/x86_64-efi/squash4.mod +0 -0
  238. package/bootloaders/grub/x86_64-efi/strtoull_test.mod +0 -0
  239. package/bootloaders/grub/x86_64-efi/syslinuxcfg.mod +0 -0
  240. package/bootloaders/grub/x86_64-efi/tar.mod +0 -0
  241. package/bootloaders/grub/x86_64-efi/terminal.lst +9 -0
  242. package/bootloaders/grub/x86_64-efi/terminal.mod +0 -0
  243. package/bootloaders/grub/x86_64-efi/terminfo.mod +0 -0
  244. package/bootloaders/grub/x86_64-efi/test.mod +0 -0
  245. package/bootloaders/grub/x86_64-efi/test_blockarg.mod +0 -0
  246. package/bootloaders/grub/x86_64-efi/testload.mod +0 -0
  247. package/bootloaders/grub/x86_64-efi/testspeed.mod +0 -0
  248. package/bootloaders/grub/x86_64-efi/tftp.mod +0 -0
  249. package/bootloaders/grub/x86_64-efi/tga.mod +0 -0
  250. package/bootloaders/grub/x86_64-efi/time.mod +0 -0
  251. package/bootloaders/grub/x86_64-efi/tpm.mod +0 -0
  252. package/bootloaders/grub/x86_64-efi/tr.mod +0 -0
  253. package/bootloaders/grub/x86_64-efi/trig.mod +0 -0
  254. package/bootloaders/grub/x86_64-efi/true.mod +0 -0
  255. package/bootloaders/grub/x86_64-efi/udf.mod +0 -0
  256. package/bootloaders/grub/x86_64-efi/ufs1.mod +0 -0
  257. package/bootloaders/grub/x86_64-efi/ufs1_be.mod +0 -0
  258. package/bootloaders/grub/x86_64-efi/ufs2.mod +0 -0
  259. package/bootloaders/grub/x86_64-efi/uhci.mod +0 -0
  260. package/bootloaders/grub/x86_64-efi/usb.mod +0 -0
  261. package/bootloaders/grub/x86_64-efi/usb_keyboard.mod +0 -0
  262. package/bootloaders/grub/x86_64-efi/usbms.mod +0 -0
  263. package/bootloaders/grub/x86_64-efi/usbserial_common.mod +0 -0
  264. package/bootloaders/grub/x86_64-efi/usbserial_ftdi.mod +0 -0
  265. package/bootloaders/grub/x86_64-efi/usbserial_pl2303.mod +0 -0
  266. package/bootloaders/grub/x86_64-efi/usbserial_usbdebug.mod +0 -0
  267. package/bootloaders/grub/x86_64-efi/usbtest.mod +0 -0
  268. package/bootloaders/grub/x86_64-efi/video.lst +4 -0
  269. package/bootloaders/grub/x86_64-efi/video.mod +0 -0
  270. package/bootloaders/grub/x86_64-efi/video_bochs.mod +0 -0
  271. package/bootloaders/grub/x86_64-efi/video_cirrus.mod +0 -0
  272. package/bootloaders/grub/x86_64-efi/video_colors.mod +0 -0
  273. package/bootloaders/grub/x86_64-efi/video_fb.mod +0 -0
  274. package/bootloaders/grub/x86_64-efi/videoinfo.mod +0 -0
  275. package/bootloaders/grub/x86_64-efi/videotest.mod +0 -0
  276. package/bootloaders/grub/x86_64-efi/videotest_checksum.mod +0 -0
  277. package/bootloaders/grub/x86_64-efi/wrmsr.mod +0 -0
  278. package/bootloaders/grub/x86_64-efi/xfs.mod +0 -0
  279. package/bootloaders/grub/x86_64-efi/xnu.mod +0 -0
  280. package/bootloaders/grub/x86_64-efi/xnu_uuid.mod +0 -0
  281. package/bootloaders/grub/x86_64-efi/xnu_uuid_test.mod +0 -0
  282. package/bootloaders/grub/x86_64-efi/xzio.mod +0 -0
  283. package/bootloaders/grub/x86_64-efi/zfs.mod +0 -0
  284. package/bootloaders/grub/x86_64-efi/zfscrypt.mod +0 -0
  285. package/bootloaders/grub/x86_64-efi/zfsinfo.mod +0 -0
  286. package/bootloaders/grub/x86_64-efi/zstd.mod +0 -0
  287. package/bootloaders/grubnetx64.efi.signed +0 -0
  288. package/bootloaders/grubx64.efi +0 -0
  289. package/bootloaders/grubx64.efi.signed +0 -0
  290. package/bootloaders/ipxe.pxe +0 -0
  291. package/bootloaders/shimx64.efi +0 -0
  292. package/bootloaders/shimx64.efi.signed +0 -0
  293. package/bootloaders/undionly.kpxe +0 -0
  294. package/conf/derivatives.yaml +5 -1
  295. package/conf/distros/alpine/calamares/modules/packages.yml +1 -1
  296. package/conf/distros/alpine/calamares/settings.yml +16 -29
  297. package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
  298. package/conf/distros/buster/calamares/modules/mount.yml +4 -12
  299. package/conf/distros/fedora/calamares/modules/bootloader.yml +46 -17
  300. package/conf/distros/fedora/calamares/modules/fstab.yml +36 -11
  301. package/conf/distros/fedora/calamares/modules/mount.yml +101 -39
  302. package/conf/distros/fedora/calamares/modules/partition.yml +173 -23
  303. package/conf/distros/fedora/calamares/modules/users.yml +7 -9
  304. package/conf/distros/openmamba/calamares/settings.yml +0 -2
  305. package/conf/distros/opensuse/calamares/modules/bootloader.yml +46 -17
  306. package/conf/distros/opensuse/calamares/modules/displaymanager.yml +9 -5
  307. package/conf/distros/opensuse/calamares/modules/finished.yml +1 -1
  308. package/conf/distros/opensuse/calamares/modules/fstab.yml +36 -11
  309. package/conf/distros/opensuse/calamares/modules/grubcfg.yml +51 -0
  310. package/conf/distros/opensuse/calamares/modules/mount.yml +104 -39
  311. package/conf/distros/opensuse/calamares/modules/packages.yml +3 -3
  312. package/conf/distros/opensuse/calamares/modules/partition.yml +30 -237
  313. package/conf/distros/opensuse/calamares/modules/removeuser.yml +1 -14
  314. package/conf/distros/opensuse/calamares/modules/unpackfs.yml +0 -1
  315. package/conf/distros/opensuse/calamares/modules/users.yml +296 -16
  316. package/conf/distros/opensuse/calamares/modules/welcome.yml +91 -16
  317. package/conf/distros/opensuse/calamares/settings.yml +34 -120
  318. package/conf/distros/opensuse/calamares/zstd2lzo.sh +2 -0
  319. package/conf/distros/rolling/calamares/modules/shellprocess_sync.yml +5 -0
  320. package/conf/distros/rolling/calamares/settings.yml +4 -5
  321. package/dist/classes/bleach.d.ts +5 -0
  322. package/dist/classes/bleach.js +13 -0
  323. package/dist/classes/cli-autologin.js +14 -9
  324. package/dist/classes/daddy.js +9 -1
  325. package/dist/classes/distro.js +0 -9
  326. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  327. package/dist/classes/incubation/incubator.d/fedora.js +79 -0
  328. package/dist/classes/incubation/incubator.d/opensuse.js +4 -6
  329. package/dist/classes/incubation/incubator.d/rolling.js +1 -3
  330. package/dist/classes/incubation/incubator.js +6 -11
  331. package/dist/classes/ovary.d/fertilization.js +1 -0
  332. package/dist/classes/ovary.d/initrd.js +39 -10
  333. package/dist/classes/ovary.d/make-dot-disk.js +21 -11
  334. package/dist/classes/ovary.d/make-efi.d.ts +5 -1
  335. package/dist/classes/ovary.d/make-efi.js +60 -118
  336. package/dist/classes/ovary.d/merged.d.ts +1 -1
  337. package/dist/classes/ovary.d/merged.js +3 -2
  338. package/dist/classes/ovary.d/produce.js +7 -6
  339. package/dist/classes/ovary.d/syslinux.js +2 -1
  340. package/dist/classes/ovary.d/user-create-live.js +15 -11
  341. package/dist/classes/ovary.d.ts +2 -1
  342. package/dist/classes/ovary.js +2 -1
  343. package/dist/classes/pacman.d/alpine.js +12 -7
  344. package/dist/classes/pacman.d/opensuse.js +4 -3
  345. package/dist/classes/pacman.js +3 -12
  346. package/dist/classes/pxe.d.ts +21 -18
  347. package/dist/classes/pxe.js +194 -257
  348. package/dist/classes/tailor.js +69 -33
  349. package/dist/classes/utils.d/filesystem.js +2 -0
  350. package/dist/classes/utils.d/kernel.js +12 -2
  351. package/dist/classes/utils.d/snapshot.js +1 -1
  352. package/dist/classes/utils.d/system.js +2 -2
  353. package/dist/commands/cuckoo.js +4 -6
  354. package/dist/commands/export/pkg.js +28 -12
  355. package/dist/commands/wardrobe/wear.js +1 -1
  356. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  357. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  358. package/dist/dhcpd-proxy/index.d.ts +4 -0
  359. package/dist/dhcpd-proxy/index.js +4 -0
  360. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  361. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  362. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  363. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  364. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  365. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  366. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  367. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  368. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  369. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  370. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  371. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  372. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  373. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  374. package/dist/interfaces/i-pxe.d.ts +16 -16
  375. package/dist/krill/classes/sequence.d/add_user.d.ts +3 -3
  376. package/dist/krill/classes/sequence.d/add_user.js +34 -29
  377. package/dist/krill/classes/sequence.d/bootloader_config.js +3 -26
  378. package/dist/krill/classes/sequence.d/fstab.js +10 -22
  379. package/dist/krill/classes/sequence.d/grubcfg.js +5 -3
  380. package/dist/krill/classes/sequence.d/mkfs.d.ts +1 -1
  381. package/dist/krill/classes/sequence.d/mkfs.js +10 -11
  382. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +3 -4
  383. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +31 -16
  384. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -1
  385. package/dist/krill/lib/select_filesystem_type.js +2 -1
  386. package/dist/lib/utils.d.ts +2 -25
  387. package/dist/lib/utils.js +4 -27
  388. package/dist/penguins-eggs_25.7.10-1-linux-x64.tar.gz +0 -0
  389. package/dracut/README.md +14 -0
  390. package/dracut/dracut.conf +3 -3
  391. package/dracut/dracut.conf.d/10-persistent_policy.conf +1 -0
  392. package/dracut/dracut.conf.d/{01-live.conf → 50-live.conf} +3 -2
  393. package/mkinitcpio/arch/live.conf +3 -2
  394. package/mkinitcpio/manjaro/live.conf +1 -1
  395. package/mkinitfs/README.md +10 -49
  396. package/mkinitfs/live.conf +2 -0
  397. package/package.json +30 -28
  398. package/pods/ci/minimal/opensuse-container2host.sh +1 -1
  399. package/scripts/99clean +42 -0
  400. package/conf/distros/aldos/calamares/modules/bootloader.yml +0 -85
  401. package/conf/distros/aldos/calamares/modules/displaymanager.yml +0 -22
  402. package/conf/distros/aldos/calamares/modules/finished.yml +0 -5
  403. package/conf/distros/aldos/calamares/modules/fstab.yml +0 -12
  404. package/conf/distros/aldos/calamares/modules/locale.yml +0 -97
  405. package/conf/distros/aldos/calamares/modules/luksopenswaphookcfg.yml +0 -5
  406. package/conf/distros/aldos/calamares/modules/machineid.yml +0 -17
  407. package/conf/distros/aldos/calamares/modules/mount.yml +0 -56
  408. package/conf/distros/aldos/calamares/modules/packages.yml +0 -6
  409. package/conf/distros/aldos/calamares/modules/partition.yml +0 -242
  410. package/conf/distros/aldos/calamares/modules/removeuser.yml +0 -15
  411. package/conf/distros/aldos/calamares/modules/unpackfs.yml +0 -6
  412. package/conf/distros/aldos/calamares/modules/users.yml +0 -19
  413. package/conf/distros/aldos/calamares/modules/welcome.yml +0 -19
  414. package/conf/distros/aldos/calamares/settings.yml +0 -124
  415. package/conf/distros/fedora/calamares/modules/bootloader.conf +0 -85
  416. package/conf/distros/opensuse/calamares/modules/bootloader.conf +0 -86
  417. package/conf/distros/opensuse/calamares/modules/locale.yml +0 -98
  418. package/conf/distros/opensuse/calamares/modules/luksopenswaphookcfg.yml +0 -5
  419. package/conf/distros/opensuse/calamares/modules/machineid.yml +0 -17
  420. package/conf/distros/rolling/calamares/modules/shellprocess_removelink.yml +0 -8
  421. package/dist/index_old.d.ts +0 -8
  422. package/dist/index_old.js +0 -8
  423. package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
  424. package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +0 -1
  425. package/dracut/sidecar.sh +0 -19
  426. package/ipxe/ipxe.efi +0 -0
  427. package/mkinitfs/initramfs-init.in +0 -1051
  428. package/mkinitfs/sidecar.sh +0 -52
  429. /package/{syslinux → bootloaders/syslinux}/README.md +0 -0
  430. /package/{syslinux → bootloaders/syslinux}/chain.c32 +0 -0
  431. /package/{syslinux → bootloaders/syslinux}/isohdpfx.bin +0 -0
  432. /package/{syslinux → bootloaders/syslinux}/isolinux.bin +0 -0
  433. /package/{syslinux → bootloaders/syslinux}/ldlinux.c32 +0 -0
  434. /package/{syslinux → bootloaders/syslinux}/libcom32.c32 +0 -0
  435. /package/{syslinux → bootloaders/syslinux}/libutil.c32 +0 -0
  436. /package/{syslinux → bootloaders/syslinux}/lpxelinux.0 +0 -0
  437. /package/{syslinux → bootloaders/syslinux}/memdisk +0 -0
  438. /package/{syslinux → bootloaders/syslinux}/pxelinux.0 +0 -0
  439. /package/{syslinux → bootloaders/syslinux}/vesamenu.c32 +0 -0
  440. /package/dist/classes/ovary.d/{xorriso-commend.d.ts → xorriso-command.d.ts} +0 -0
  441. /package/dist/classes/ovary.d/{xorriso-commend.js → xorriso-command.js} +0 -0
@@ -6,18 +6,19 @@
6
6
  * license: MIT
7
7
  */
8
8
  import fs from 'node:fs';
9
- import http from 'node:http';
10
9
  import path from 'node:path';
11
- import { dhcpd } from 'node-proxy-dhcpd';
12
- import nodeStatic from 'node-static';
10
+ import { startSimpleProxy } from '../dhcpd-proxy/simple-proxy.js';
11
+ import express from 'express';
13
12
  // @ts-ignore
14
13
  import tftp from 'tftp';
15
14
  import { exec } from '../lib/utils.js';
16
15
  import Distro from './distro.js';
17
16
  import Settings from './settings.js';
18
17
  import Utils from './utils.js';
18
+ import Diversions from './diversions.js';
19
19
  // _dirname
20
20
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
21
+ const bootloaders = path.resolve(__dirname, `../../bootloaders`);
21
22
  /**
22
23
  * Pxe:
23
24
  */
@@ -29,6 +30,7 @@ export default class Pxe {
29
30
  isos = []; // cuckoo's eggs
30
31
  nest = '';
31
32
  pxeRoot = '';
33
+ distro = {};
32
34
  settings = {};
33
35
  verbose = false;
34
36
  vmlinuz = '';
@@ -41,44 +43,6 @@ export default class Pxe {
41
43
  this.nest = nest;
42
44
  this.pxeRoot = pxeRoot;
43
45
  }
44
- /**
45
- * build
46
- */
47
- async build() {
48
- if (fs.existsSync(this.pxeRoot)) {
49
- await this.tryCatch(`rm ${this.pxeRoot} -rf`);
50
- }
51
- await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
52
- await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
53
- await this.tryCatch(`ln -s ${this.eggRoot}live ${this.pxeRoot}/live`);
54
- await this.tryCatch(`ln -s ${this.nest}.disk ${this.pxeRoot}/.disk`);
55
- if (this.settings.distro.distroId === 'Manjaro') {
56
- await this.tryCatch(`ln -s ${this.eggRoot}manjaro ${this.pxeRoot}/manjaro`);
57
- }
58
- else if (this.settings.distro.distroId === 'Arch' || this.settings.distro.distroId === 'RebornOS') {
59
- await this.tryCatch(`ln -s ${this.eggRoot}arch ${this.pxeRoot}/arch`);
60
- }
61
- if (fs.existsSync(this.eggRoot)) {
62
- await this.tryCatch(`cp ${this.eggRoot}live/${this.vmlinuz} ${this.pxeRoot}/vmlinuz`, true);
63
- await this.tryCatch(`chmod 777 ${this.pxeRoot}/vmlinuz`);
64
- await this.tryCatch(`cp ${this.eggRoot}live/${this.initrdImg} ${this.pxeRoot}/initrd`, true);
65
- await this.tryCatch(`chmod 777 ${this.pxeRoot}/initrd`);
66
- }
67
- // link iso images in pxe
68
- for (const iso of this.isos) {
69
- await this.tryCatch(`ln -s ${this.nest}/${iso} ${this.pxeRoot}/${iso}`);
70
- }
71
- await this.bios();
72
- await this.ipxe();
73
- await this.http();
74
- }
75
- /**
76
- *
77
- * @param dhcpOptions
78
- */
79
- dhcpStart(dhcpOptions) {
80
- new dhcpd(dhcpOptions);
81
- }
82
46
  /**
83
47
  * fertilization()
84
48
  *
@@ -86,22 +50,10 @@ export default class Pxe {
86
50
  */
87
51
  async fertilization() {
88
52
  this.settings = new Settings();
89
- await this.settings.load();
53
+ this.settings.load();
54
+ this.distro = new Distro();
90
55
  if (Utils.isLive()) {
91
- this.eggRoot = this.settings.distro.liveMediumPath;
92
- if (
93
- // ArchisoCompatibles
94
- this.settings.distro.distroId === 'Arch' ||
95
- this.settings.distro.distroId === 'ArcoLinux' ||
96
- this.settings.distro.distroId === 'blendOS' ||
97
- this.settings.distro.distroId === 'EndeavourOS' ||
98
- this.settings.distro.distroId === 'Garuda' ||
99
- this.settings.distro.distroId === 'phyOS' ||
100
- this.settings.distro.distroId === 'RebornOS') {
101
- this.eggRoot = '/run/archiso/bootmnt/';
102
- await exec(`mkdir ${this.eggRoot} -p`);
103
- await exec(`mount /dev/sr0 ${this.eggRoot}`);
104
- }
56
+ this.eggRoot = this.distro.liveMediumPath;
105
57
  }
106
58
  else {
107
59
  this.eggRoot = this.settings.config.snapshot_mnt + 'iso/';
@@ -110,8 +62,6 @@ export default class Pxe {
110
62
  console.log('no image available, build an image with: sudo eggs produce');
111
63
  process.exit();
112
64
  }
113
- const settings = new Settings();
114
- settings.load();
115
65
  /**
116
66
  * se pxeRoot non esiste viene creato
117
67
  */
@@ -120,42 +70,19 @@ export default class Pxe {
120
70
  }
121
71
  /**
122
72
  * Ricerca delle ISOs
123
- */
124
- const isos = [];
125
- /*
126
- if (!Utils.isLive()) {
127
- const isos = fs.readdirSync(this.nest)
128
- for (const iso of isos) {
129
- if (path.extname(iso) === '.iso') {
130
- this.isos.push(iso)
131
- }
132
-
133
- this.isos = this.isos.sort()
134
- }
135
- }
136
- */
137
- /**
138
73
  * installed: /home/eggs/.mnt/iso/live
139
74
  * live: this.iso/live
140
75
  */
76
+ const isos = [];
141
77
  const pathFiles = this.eggRoot + 'live';
142
78
  const files = fs.readdirSync(pathFiles);
79
+ // rieva nome vmlinuz e initrdImg
143
80
  for (const file of files) {
144
- if (this.settings.distro.familyId === 'debian') {
145
- if (path.basename(file).slice(0, 7) === 'vmlinuz') {
146
- this.vmlinuz = path.basename(file);
147
- }
148
- if (path.basename(file).slice(0, 6) === 'initrd') {
149
- this.initrdImg = path.basename(file);
150
- }
81
+ if (path.basename(file).slice(0, 7) === 'vmlinuz') {
82
+ this.vmlinuz = path.basename(file);
151
83
  }
152
- else if (this.settings.distro.familyId === 'archlinux') {
153
- if (path.basename(file).slice(0, 7) === 'vmlinuz') {
154
- this.vmlinuz = path.basename(file);
155
- }
156
- if (path.basename(file).slice(0, 9) === 'initramfs') {
157
- this.initrdImg = path.basename(file);
158
- }
84
+ if (path.basename(file).slice(0, 4) === 'init') {
85
+ this.initrdImg = path.basename(file);
159
86
  }
160
87
  }
161
88
  /**
@@ -168,26 +95,67 @@ export default class Pxe {
168
95
  const c = b.slice(0, Math.max(0, b.indexOf(' ')));
169
96
  this.bootLabel = c.slice(Math.max(0, c.lastIndexOf('/') + 1));
170
97
  }
98
+ console.log(`eggRoot: ${this.eggRoot}`);
171
99
  console.log(`bootLabel: ${this.bootLabel}`);
172
100
  console.log(`vmlinuz: ${this.vmlinuz}`);
173
101
  console.log(`initrd: ${this.initrdImg}`);
174
102
  }
175
103
  /**
176
- * start http server for images
104
+ * build
105
+ */
106
+ async build() {
107
+ const echoYes = Utils.setEcho(true);
108
+ // pxeRoot erase
109
+ if (fs.existsSync(this.pxeRoot)) {
110
+ await exec(`rm ${this.pxeRoot} -rf`, this.echo);
111
+ }
112
+ // Struttura
113
+ await exec(`mkdir ${this.pxeRoot} -p`, this.echo);
114
+ await exec(`ln -s ${this.eggRoot}live ${this.pxeRoot}/live`, this.echo);
115
+ await exec(`ln -s ${this.nest}.disk ${this.pxeRoot}/.disk`, this.echo);
116
+ // Link supplementari distro
117
+ if (this.distro.familyId === 'archlinux') {
118
+ let filesystemName = `arch/x86_64/airootfs.sfs`;
119
+ if (Diversions.isManjaroBased(this.settings.distro.distroId)) {
120
+ filesystemName = `manjaro/x86_64/livefs.sfs`;
121
+ }
122
+ await exec(`mkdir ${this.pxeRoot}/${path.dirname(filesystemName)} -p`, this.echo);
123
+ await exec(`ln -s ${this.eggRoot}/live/filesystem.squashfs ${this.pxeRoot}/${filesystemName}`, this.echo);
124
+ }
125
+ // Firewall per fedora
126
+ if (this.distro.familyId === 'fedora' || this.distro.familyId === 'opensuse') {
127
+ await exec(`firewall-cmd --add-service=dhcp --permanent`, this.echo);
128
+ await exec(`firewall-cmd --add-service=tftp --permanent`, this.echo);
129
+ await exec(`firewall-cmd --add-service=http --permanent`, this.echo);
130
+ await exec(`firewall-cmd --reload`, this.echo);
131
+ }
132
+ await this.grubCfg();
133
+ await this.bios();
134
+ await this.uefi();
135
+ await this.http();
136
+ }
137
+ /**
177
138
  *
139
+ * @param dhcpOptions
140
+ */
141
+ dhcpdStart(dhcpOptions) {
142
+ startSimpleProxy(dhcpOptions);
143
+ }
144
+ /**
145
+ * start http server for images
178
146
  */
179
147
  async httpStart() {
180
148
  const port = 80;
181
149
  const httpRoot = this.pxeRoot + '/';
182
- console.log('http root: ' + httpRoot);
183
- console.log('http listening: 0.0.0.0:' + port);
184
- // const file = new nodeStatic.Server(httpRoot, { followSymlinks: true })
185
- const file = new nodeStatic.Server(httpRoot);
186
- http
187
- .createServer((req, res) => {
188
- file.serve(req, res);
189
- })
190
- .listen(port);
150
+ // 1. Crea un'applicazione Express
151
+ const app = express();
152
+ // 2. Usa il middleware di Express per servire i file statici.
153
+ app.use(express.static(httpRoot));
154
+ // 3. Avvia il server
155
+ app.listen(port, () => {
156
+ console.log(`HTTP server (Express) listening on 0.0.0.0:${port}`);
157
+ console.log(`Serving files from ${httpRoot}`);
158
+ });
191
159
  }
192
160
  /**
193
161
  * start tftp
@@ -209,90 +177,10 @@ export default class Pxe {
209
177
  });
210
178
  tftpServer.listen();
211
179
  }
212
- /**
213
- * Il resto PRIVATO
214
- */
215
- /**
216
- * configure PXE bios
217
- */
218
- async bios() {
219
- console.log('creating cuckoo configuration: BIOS');
220
- await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/isolinux.theme.cfg ${this.pxeRoot}/isolinux.theme.cfg`);
221
- await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/splash.png ${this.pxeRoot}/splash.png`);
222
- /**
223
- * ipxe.efi
224
- */
225
- await this.tryCatch(`ln -s ${__dirname}/../../ipxe/ipxe.efi ${this.pxeRoot}/ipxe.efi`);
226
- // pxe
227
- const distro = new Distro();
228
- await this.tryCatch(`ln -s ${distro.syslinuxPath}pxelinux.0 ${this.pxeRoot}/pxelinux.0`);
229
- await this.tryCatch(`ln -s ${distro.syslinuxPath}lpxelinux.0 ${this.pxeRoot}/lpxelinux.0`);
230
- // syslinux
231
- await this.tryCatch(`ln -s ${distro.syslinuxPath}ldlinux.c32 ${this.pxeRoot}/ldlinux.c32`);
232
- await this.tryCatch(`ln -s ${distro.syslinuxPath}vesamenu.c32 ${this.pxeRoot}/vesamenu.c32`);
233
- await this.tryCatch(`ln -s ${distro.syslinuxPath}libcom32.c32 ${this.pxeRoot}/libcom32.c32`);
234
- await this.tryCatch(`ln -s ${distro.syslinuxPath}libutil.c32 ${this.pxeRoot}/libutil.c32`);
235
- await this.tryCatch(`ln -s ${distro.syslinuxPath}memdisk ${this.pxeRoot}/memdisk`);
236
- await this.tryCatch(`mkdir ${this.pxeRoot}/pxelinux.cfg`);
237
- let content = '';
238
- content += '# eggs: pxelinux.cfg/default\n';
239
- content += '# search path for the c32 support libraries (libcom32, libutil etc.)\n';
240
- content += 'path\n';
241
- content += 'include isolinux.theme.cfg\n';
242
- content += 'UI vesamenu.c32\n';
243
- content += '\n';
244
- content += `menu title cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
245
- content += 'PROMPT 0\n';
246
- content += 'TIMEOUT 200\n';
247
- content += '\n';
248
- content += 'label egg\n';
249
- content += `menu label ${this.bootLabel.replace('.iso', '')}\n`;
250
- if (this.settings.distro.familyId === 'debian') {
251
- /**
252
- * DEBIAN
253
- */
254
- const clid = this.settings.distro.codenameLikeId;
255
- if (clid === 'bionic' || clid === 'stretch' || clid === 'jessie') {
256
- content += 'kernel vmlinuz\n';
257
- content += `append initrd=initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
258
- }
259
- else {
260
- content += `kernel http://${Utils.address()}/vmlinuz\n`;
261
- content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
262
- }
263
- }
264
- else if (distro.familyId === 'archlinux') {
265
- /**
266
- * ARCH LINUX
267
- */
268
- let tool = 'archiso';
269
- if (distro.distroId === 'Manjarolinux') {
270
- tool = 'miso';
271
- }
272
- content += `kernel http://${Utils.address()}/vmlinuz\n`;
273
- content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt ${tool}_http_srv=http://${Utils.address()}/\n`;
274
- content += 'sysappend 3\n';
275
- content += '\n';
276
- }
277
- if (this.isos.length > 0) {
278
- content += 'menu separator\n';
279
- for (const iso of this.isos) {
280
- content += '\n';
281
- content += `label ${iso}\n`;
282
- content += `menu label ${iso}\n`;
283
- content += `kernel http://${Utils.address()}/memdisk\n`;
284
- content += `initrd http://${Utils.address()}/${iso}\n`;
285
- content += 'append iso raw sysappend 3\n';
286
- }
287
- }
288
- const file = `${this.pxeRoot}/pxelinux.cfg/default`;
289
- fs.writeFileSync(file, content);
290
- }
291
180
  /**
292
181
  * configure PXE http server
293
182
  */
294
183
  async http() {
295
- console.log('creating cuckoo configuration: html');
296
184
  const file = `${this.pxeRoot}/index.html`;
297
185
  let content = '';
298
186
  content += "<html><title>Penguin's eggs PXE server</title>";
@@ -315,96 +203,145 @@ export default class Pxe {
315
203
  fs.writeFileSync(file, content);
316
204
  }
317
205
  /**
318
- *
206
+ * configure PXE bios
319
207
  */
320
- async ipxe() {
321
- console.log('creating cuckoo configuration: UEFI');
322
- let content = '#!ipxe\n';
323
- content += 'dhcp\n';
324
- content += 'set net0/ip=dhcp\n';
325
- content += `console --picture http://${Utils.address()}/splash.png -x 1024 -y 768\n`;
326
- content += 'goto start ||\n';
208
+ async bios() {
209
+ await exec(`cp ${__dirname}/../../addons/eggs/theme/livecd/isolinux.theme.cfg ${this.pxeRoot}/isolinux.theme.cfg`, this.echo);
210
+ await exec(`cp ${__dirname}/../../addons/eggs/theme/livecd/splash.png ${this.pxeRoot}/splash.png`, this.echo);
211
+ // ipxe.pxe
212
+ await exec(`ln -s ${bootloaders}ipxe.pxe ${this.pxeRoot}/ipxe.pxe`, this.echo);
213
+ // pxe
214
+ await exec(`cp ${bootloaders}/syslinux/pxelinux.0 ${this.pxeRoot}/pxelinux.0`, this.echo);
215
+ await exec(`cp ${bootloaders}/syslinux/lpxelinux.0 ${this.pxeRoot}/lpxelinux.0`, this.echo);
216
+ // syslinux
217
+ await exec(`ln -s ${bootloaders}/syslinux/ldlinux.c32 ${this.pxeRoot}/ldlinux.c32`, this.echo);
218
+ await exec(`ln -s ${bootloaders}/syslinux/vesamenu.c32 ${this.pxeRoot}/vesamenu.c32`, this.echo);
219
+ await exec(`ln -s ${bootloaders}/syslinux/libcom32.c32 ${this.pxeRoot}/libcom32.c32`, this.echo);
220
+ await exec(`ln -s ${bootloaders}/syslinux/libutil.c32 ${this.pxeRoot}/libutil.c32`, this.echo);
221
+ await exec(`ln -s ${bootloaders}/syslinux/memdisk ${this.pxeRoot}/memdisk`, this.echo);
222
+ await exec(`mkdir ${this.pxeRoot}/pxelinux.cfg`, this.echo);
223
+ let content = '';
224
+ content += '# eggs: pxelinux.cfg/default\n';
225
+ content += '# search path for the c32 support libraries (libcom32, libutil etc.)\n';
226
+ content += `path /\n`;
227
+ content += 'include isolinux.theme.cfg\n';
228
+ content += 'UI vesamenu.c32\n';
327
229
  content += '\n';
328
- content += ':start\n';
329
- content += `set server_root http://${Utils.address()}:80/\n`;
330
- const serverRootVars = '${server_root}';
331
- content += `menu cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
332
- content += 'item --gap boot from ovarium\n';
333
- content += `item egg-menu \${space} ${this.bootLabel.replaceAll('.iso', '')}\n\n`;
334
- if (this.isos.length > 0) {
335
- content += 'item --gap boot iso images\n';
336
- for (const iso of this.isos) {
337
- const menu = iso;
338
- const label = menu;
339
- content += `item ${menu} \${space} ${label}\n\n`;
340
- }
341
- }
342
- content += 'item --gap boot from internet\n';
343
- content += 'item netboot ${space} netboot\n';
344
- content += 'choose target || goto start\n';
345
- content += 'goto ${target}\n';
230
+ content += `menu title cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
231
+ content += 'PROMPT 0\n';
232
+ content += 'TIMEOUT 200\n';
346
233
  content += '\n';
347
- content += ':egg-menu\n';
348
- content += `kernel http://${Utils.address()}/vmlinuz\n`;
349
- content += `initrd http://${Utils.address()}/initrd\n`;
234
+ content += `label ${this.distro.distroId}\n`;
235
+ content += `menu label ${this.bootLabel.replace('.iso', '')}\n`;
236
+ content += `kernel http://${Utils.address()}/live/${path.basename(this.vmlinuz)}\n`;
237
+ const kernelParams = this._getKernelParameters();
238
+ content += `append initrd=http://${Utils.address()}/live/${path.basename(this.initrdImg)} ${kernelParams}\n`;
239
+ const file = `${this.pxeRoot}/pxelinux.cfg/default`;
240
+ fs.writeFileSync(file, content);
241
+ }
242
+ /**
243
+ * uefi: uso ipxe solo per chainload di grub
244
+ */
245
+ async uefi() {
246
+ let content = '#!ipxe\n';
247
+ content += 'dhcp\n';
248
+ content += `chain http://${Utils.address()}/grub.efi\n`;
249
+ const file = `${this.pxeRoot}/autoexec.ipxe`;
250
+ fs.writeFileSync(file, content);
251
+ }
252
+ /**
253
+ * grubCfg
254
+ * @param familyId
255
+ */
256
+ async grubCfg() {
257
+ const echoYes = Utils.setEcho(true);
350
258
  /**
351
- * CORRECT:
352
- * content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`
259
+ * On Debian bookworm:
260
+ * cd ~/penguins-eggs
261
+ * cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed ./bootloaders/
262
+ * cp -r /usr/lib/grub/x86_64-efi/ ./bootloaders/grub/x86_64-efi/
353
263
  */
354
- if (this.settings.distro.familyId === 'debian') {
355
- /**
356
- * DEBIAN
357
- */
358
- content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`;
359
- }
360
- else if (this.settings.distro.familyId === 'archlinux') {
361
- /**
362
- * ARCH LINUX
363
- */
364
- let tool = 'archiso';
365
- if (this.settings.distro.codenameId === 'Qonos' || this.settings.distro.codenameId === 'Ruah' || this.settings.distro.codenameId === 'Sikaris' || this.settings.distro.codenameId === 'UltimaThule') {
366
- tool = 'miso';
367
- }
368
- content += `imgargs vmlinuz ${tool}_http_srv=http://${Utils.address()}/ boot=live dhcp initrd=initrd ro\n`;
369
- // content += 'ipappend 3\n'
370
- }
371
- content += 'sleep 5\n';
372
- content += 'boot || goto start\n\n';
373
- if (this.isos.length > 0) {
374
- for (const iso of this.isos) {
375
- const menu = iso.replace('.iso', '');
376
- content += `:${menu}\n`;
377
- content += `sanboot ${serverRootVars}/${iso}\n`;
378
- content += 'boot || goto start\n\n';
379
- }
380
- }
264
+ await exec(`mkdir -p ${this.pxeRoot}/grub`, this.echo);
381
265
  /**
382
- * netboot.xyz
266
+ * Si potrebbe usare:
267
+ * ${bootloaders}/grub/x86_64-efi/monolithic/grubnetx64.efi
268
+ * come alternativa per distroname!=="Debian"
383
269
  */
384
- content += ':netboot\n';
385
- content += 'ifopen net0\n';
386
- content += 'set conn_type https\n';
387
- content += 'chain --autofree https://boot.netboot.xyz/menu.ipxe || echo HTTPS failed... attempting HTTP...\n';
388
- content += 'set conn_type http\n';
389
- content += 'chain --autofree http://boot.netboot.xyz/menu.ipxe || echo HTTP failed, localbooting...\n';
390
- content += 'goto start\n\n';
391
- const file = `${this.pxeRoot}/autoexec.ipxe`;
392
- fs.writeFileSync(file, content);
270
+ await exec(`cp ${bootloaders}/grubnetx64.efi.signed ${this.pxeRoot}/grub.efi`, this.echo);
271
+ await exec(`cp -r ${bootloaders}/grub/x86_64-efi ${this.pxeRoot}/grub`, this.echo);
272
+ // Genera il file grub.cfg
273
+ const grubName = `${this.pxeRoot}/grub/grub.cfg`; // Il file deve chiamarsi grub.cfg
274
+ let grubContent = '';
275
+ grubContent += `set timeout=10\n`;
276
+ grubContent += `set default=0\n\n`;
277
+ // Titolo del menu dinamico
278
+ grubContent += `menuentry "${this.bootLabel.replace('.iso', '')} via PXE" {\n`;
279
+ grubContent += ` echo "Booting ${this.bootLabel.replace('.iso', '')}..."\n`;
280
+ grubContent += ` echo "Loading Linux Kernel..."\n`;
281
+ const kernelParams = this._getKernelParameters();
282
+ grubContent += ` linux (http,${Utils.address()})/live/${path.basename(this.vmlinuz)} ${kernelParams}\n`;
283
+ grubContent += ` echo "Loading Initial Ramdisk..."\n`;
284
+ grubContent += ` initrd (http,${Utils.address()})/live/${path.basename(this.initrdImg)}\n`;
285
+ grubContent += `}\n`;
286
+ fs.writeFileSync(grubName, grubContent, 'utf-8');
393
287
  }
394
288
  /**
395
- *
396
- * @param cmd
289
+ * Metodo helper per ottenere i parametri corretti per GRUB
290
+ * in base alla famiglia della distribuzione.
397
291
  */
398
- async tryCatch(cmd = '', echo = false) {
399
- try {
400
- if (echo) {
401
- console.log(cmd);
402
- }
403
- await exec(cmd, this.echo);
404
- }
405
- catch (error) {
406
- console.log(`Error: ${error}`);
407
- await Utils.pressKeyToExit(cmd);
292
+ _getKernelParameters() {
293
+ let lp = '';
294
+ // .replaceAll(/\s\s+/g, ' ')
295
+ switch (this.distro.familyId) {
296
+ case 'alpine':
297
+ lp = `alpine_repo=http://${Utils.address()}/live/filesystem.squashfs \
298
+ modules=loop,squashfs,sd-mod,usb-storage,virtio-net,e1000e \
299
+ acpi=off \
300
+ ip=dhcp`;
301
+ break;
302
+ case 'archlinux':
303
+ let basedir = 'archisobasedir=arch';
304
+ let hook = 'archiso_http_srv';
305
+ if (Diversions.isManjaroBased(this.distro.distroId)) {
306
+ basedir = '';
307
+ hook = 'miso_http_srv';
308
+ }
309
+ lp = `${hook}=http://${Utils.address()}/ \
310
+ ${basedir} \
311
+ ip=dhcp \
312
+ copytoram=n`;
313
+ break;
314
+ case 'debian':
315
+ lp = `fetch=http://${Utils.address()}/live/filesystem.squashfs \
316
+ boot=live \
317
+ config \
318
+ noswap \
319
+ noprompt \
320
+ ip=dhcp`;
321
+ break;
322
+ case 'fedora':
323
+ lp = `initrd=http://${Utils.address()}/live/${path.basename(this.initrdImg)} \
324
+ root=live:http://${Utils.address()}/live/filesystem.squashfs \
325
+ rootfstype=auto \
326
+ ro \
327
+ rd.live.image \
328
+ rd.luks=0 \
329
+ rd.md=0 \
330
+ rd.dm=0\n`;
331
+ break;
332
+ case 'opensuse':
333
+ lp = `initrd=http://${Utils.address()}/live/${path.basename(this.initrdImg)} \
334
+ root=live:http://${Utils.address()}/live/filesystem.squashfs \
335
+ rootfstype=auto \
336
+ ro \
337
+ rd.live.image \
338
+ rd.luks=0 \
339
+ rd.md=0 \
340
+ rd.dm=0\n`;
341
+ break;
342
+ default:
343
+ console.warn(`Attenzione: famiglia distro '${this.distro.familyId}' non riconosciuta per GRUB.`);
408
344
  }
345
+ return lp.replaceAll(/\s\s+/g, ' ');
409
346
  }
410
347
  }