penguins-eggs 9.5.21 → 9.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":"9.5.21","commands":{"adapt":{"id":"adapt","description":"adapt monitor resolution for VM only","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs adapt"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"analyze":{"id":"analyze","description":"analyze for syncto","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs analyze"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"calamares":{"id":"calamares","description":"configure calamares or install or configure it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs calamares","sudo eggs calamares --install","sudo eggs calamares --install --theme=/path/to/theme","sudo eggs calamares --remove"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"install":{"name":"install","type":"boolean","char":"i","description":"install calamares and its dependencies","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons","allowNo":false},"release":{"name":"release","type":"boolean","char":"r","description":"release: remove calamares and all its dependencies after the installation","allowNo":false},"remove":{"name":"remove","type":"boolean","description":"remove calamares and its dependencies","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme/branding for eggs and calamares","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"config":{"id":"config","description":"Configure and install prerequisites deb packages to run it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs config","sudo eggs config --clean","sudo eggs config --clean --nointeractive"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create new one","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"cuckoo":{"id":"cuckoo","description":"PXE start with proxy-dhcp","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs cuckoo"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"dad":{"id":"dad","description":"ask help from daddy - TUI configuration helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo dad","sudo dad --clean","sudo dad --default"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create","allowNo":false},"default":{"name":"default","type":"boolean","char":"d","description":"remove old configuration and force default","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"install":{"id":"install","description":"krill: the CLI system installer - the egg became a penguin!","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs install","sudo eggs install --unattended --halt","sudo eggs install --custom it"],"flags":{"crypted":{"name":"crypted","type":"boolean","char":"k","description":"Crypted CLI installation","allowNo":false},"custom":{"name":"custom","type":"option","char":"c","description":"custom unattended configuration","multiple":false},"domain":{"name":"domain","type":"option","char":"d","description":"Domain name, defult: .local","multiple":false},"halt":{"name":"halt","type":"boolean","char":"H","description":"Halt the system after installation","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"ip":{"name":"ip","type":"boolean","char":"i","description":"hostname as ip, eg: ip-192-168-1-33","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"none":{"name":"none","type":"boolean","char":"N","description":"Swap none: 256M","allowNo":false},"pve":{"name":"pve","type":"boolean","char":"p","description":"Proxmox VE install","allowNo":false},"random":{"name":"random","type":"boolean","char":"r","description":"Add random to hostname, eg: colibri-ay412dt","allowNo":false},"small":{"name":"small","type":"boolean","char":"s","description":"Swap small: RAM","allowNo":false},"suspend":{"name":"suspend","type":"boolean","char":"S","description":"Swap suspend: RAM x 2","allowNo":false},"unattended":{"name":"unattended","type":"boolean","char":"u","description":"Unattended installation","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"Verbose","allowNo":false}},"args":[]},"kill":{"id":"kill","description":"kill the eggs/free the nest","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs kill"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"mom":{"id":"mom","description":"ask help from mommy - TUI helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs mom"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"produce":{"id":"produce","description":"produce a live image from your system whithout your data","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs produce","sudo eggs produce --standard","sudo eggs produce --max","sudo eggs produce --max --basename=colibri","sudo eggs produce --cryptedclone","sudo eggs produce --clone","sudo eggs produce --basename=colibri","sudo eggs produce --basename=colibri --theme theme --addons adapt"],"flags":{"addons":{"name":"addons","type":"option","description":"addons to be used: adapt, ichoice, pve, rsupport","multiple":true},"basename":{"name":"basename","type":"option","description":"basename","multiple":false},"clone":{"name":"clone","type":"boolean","char":"c","description":"clone","allowNo":false},"cryptedclone":{"name":"cryptedclone","type":"boolean","char":"C","description":"crypted clone","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"max":{"name":"max","type":"boolean","char":"m","description":"max compression","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons on desktop","allowNo":false},"prefix":{"name":"prefix","type":"option","char":"p","description":"prefix","multiple":false},"release":{"name":"release","type":"boolean","description":"release: max compression, remove penguins-eggs and calamares after installation","allowNo":false},"script":{"name":"script","type":"boolean","char":"s","description":"script mode. Generate scripts to manage iso build","allowNo":false},"standard":{"name":"standard","type":"boolean","char":"f","description":"standard compression","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme for livecd, calamares branding and partitions","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false},"yolk":{"name":"yolk","type":"boolean","char":"y","description":"-y force yolk renew","allowNo":false}},"args":[]},"status":{"id":"status","description":"informations about eggs status","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs status"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"syncfrom":{"id":"syncfrom","description":"restore users and user data from a LUKS volumes","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncfrom","sudo eggs syncfrom --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"rootdir":{"name":"rootdir","type":"option","char":"r","description":"rootdir of the installed system, when used from live","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"syncto":{"id":"syncto","description":"saves users and user data in a LUKS volume inside the iso","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncto","sudo eggs syncto --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"update":{"id":"update","description":"update the Penguins' eggs tool","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs update"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:deb":{"id":"export:deb","description":"export deb/docs/iso to the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export deb","eggs export deb --clean","eggs export deb --all"],"flags":{"all":{"name":"all","type":"boolean","char":"a","description":"export all archs","allowNo":false},"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old .deb before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:iso":{"id":"export:iso","description":"export iso in the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export iso","eggs export iso --clean"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"delete old ISOs before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:clean":{"id":"tools:clean","description":"clean system log, apt, etc","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools clean"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:ppa":{"id":"tools:ppa","description":"add/remove repo","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools ppa --add","sudo eggs tools ppa --remove"],"flags":{"add":{"name":"add","type":"boolean","char":"a","description":"add penguins-eggs PPA repository","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"remove":{"name":"remove","type":"boolean","char":"r","description":"remove penguins-eggs PPA repository","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:skel":{"id":"tools:skel","description":"update skel from home configuration","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools skel","sudo eggs tools skel --user user-to-be-copied"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"user":{"name":"user","type":"option","char":"u","description":"user to be used","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"tools:stat":{"id":"tools:stat","description":"get statistics from sourceforge","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs tools stat","eggs tools stat --month","eggs tools stat --year"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"month":{"name":"month","type":"boolean","char":"m","description":"current month","allowNo":false},"year":{"name":"year","type":"boolean","char":"y","description":"current year","allowNo":false}},"args":[]},"tools:yolk":{"id":"tools:yolk","description":"configure eggs to install without internet","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools yolk"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[],"dir":"/var/local/yolk"},"wardrobe:get":{"id":"wardrobe:get","description":"get warorobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe get","eggs wardrobe get your-wardrobe"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"repo","description":"repository to get","required":false}]},"wardrobe:list":{"id":"wardrobe:list","description":"list costumes and accessoires in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe list","eggs wardrobe list your-wardrobe","eggs wardrobe list --distro arch"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"distro":{"name":"distro","type":"option","char":"d","description":"distro","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"wardrobe","description":"wardrobe","required":false}]},"wardrobe:show":{"id":"wardrobe:show","description":"show costumes/accessories in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"json":{"name":"json","type":"boolean","char":"j","description":"output JSON","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}],"example":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"]},"wardrobe:wear":{"id":"wardrobe:wear","description":"wear costume/accessories from wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs wardrobe wear duck","sudo eggs wardrobe wear accessories/firmwares","sudo eggs wardrobe wear wagtail/waydroid"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"no_accessories":{"name":"no_accessories","type":"boolean","char":"a","description":"not install accessories","allowNo":false},"no_firmwares":{"name":"no_firmwares","type":"boolean","char":"f","description":"not install firmwares","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}]}}}
1
+ {"version":"9.5.23","commands":{"adapt":{"id":"adapt","description":"adapt monitor resolution for VM only","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs adapt"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"analyze":{"id":"analyze","description":"analyze for syncto","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs analyze"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"calamares":{"id":"calamares","description":"configure calamares or install or configure it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs calamares","sudo eggs calamares --install","sudo eggs calamares --install --theme=/path/to/theme","sudo eggs calamares --remove"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"install":{"name":"install","type":"boolean","char":"i","description":"install calamares and its dependencies","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons","allowNo":false},"release":{"name":"release","type":"boolean","char":"r","description":"release: remove calamares and all its dependencies after the installation","allowNo":false},"remove":{"name":"remove","type":"boolean","description":"remove calamares and its dependencies","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme/branding for eggs and calamares","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"config":{"id":"config","description":"Configure and install prerequisites deb packages to run it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs config","sudo eggs config --clean","sudo eggs config --clean --nointeractive"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create new one","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"cuckoo":{"id":"cuckoo","description":"PXE start with proxy-dhcp","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs cuckoo"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"dad":{"id":"dad","description":"ask help from daddy - TUI configuration helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo dad","sudo dad --clean","sudo dad --default"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create","allowNo":false},"default":{"name":"default","type":"boolean","char":"d","description":"remove old configuration and force default","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"install":{"id":"install","description":"krill: the CLI system installer - the egg became a penguin!","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs install","sudo eggs install --unattended --halt","sudo eggs install --custom it"],"flags":{"crypted":{"name":"crypted","type":"boolean","char":"k","description":"Crypted CLI installation","allowNo":false},"custom":{"name":"custom","type":"option","char":"c","description":"custom unattended configuration","multiple":false},"domain":{"name":"domain","type":"option","char":"d","description":"Domain name, defult: .local","multiple":false},"halt":{"name":"halt","type":"boolean","char":"H","description":"Halt the system after installation","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"ip":{"name":"ip","type":"boolean","char":"i","description":"hostname as ip, eg: ip-192-168-1-33","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"none":{"name":"none","type":"boolean","char":"N","description":"Swap none: 256M","allowNo":false},"pve":{"name":"pve","type":"boolean","char":"p","description":"Proxmox VE install","allowNo":false},"random":{"name":"random","type":"boolean","char":"r","description":"Add random to hostname, eg: colibri-ay412dt","allowNo":false},"small":{"name":"small","type":"boolean","char":"s","description":"Swap small: RAM","allowNo":false},"suspend":{"name":"suspend","type":"boolean","char":"S","description":"Swap suspend: RAM x 2","allowNo":false},"unattended":{"name":"unattended","type":"boolean","char":"u","description":"Unattended installation","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"Verbose","allowNo":false}},"args":[]},"kill":{"id":"kill","description":"kill the eggs/free the nest","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs kill"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"mom":{"id":"mom","description":"ask help from mommy - TUI helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs mom"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"produce":{"id":"produce","description":"produce a live image from your system whithout your data","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs produce","sudo eggs produce --standard","sudo eggs produce --max","sudo eggs produce --max --basename=colibri","sudo eggs produce --cryptedclone","sudo eggs produce --clone","sudo eggs produce --basename=colibri","sudo eggs produce --basename=colibri --theme theme --addons adapt"],"flags":{"addons":{"name":"addons","type":"option","description":"addons to be used: adapt, ichoice, pve, rsupport","multiple":true},"basename":{"name":"basename","type":"option","description":"basename","multiple":false},"clone":{"name":"clone","type":"boolean","char":"c","description":"clone","allowNo":false},"cryptedclone":{"name":"cryptedclone","type":"boolean","char":"C","description":"crypted clone","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"max":{"name":"max","type":"boolean","char":"m","description":"max compression","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"noicons":{"name":"noicons","type":"boolean","char":"N","description":"no icons on desktop","allowNo":false},"prefix":{"name":"prefix","type":"option","char":"p","description":"prefix","multiple":false},"release":{"name":"release","type":"boolean","description":"release: max compression, remove penguins-eggs and calamares after installation","allowNo":false},"script":{"name":"script","type":"boolean","char":"s","description":"script mode. Generate scripts to manage iso build","allowNo":false},"standard":{"name":"standard","type":"boolean","char":"f","description":"standard compression","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme for livecd, calamares branding and partitions","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false},"yolk":{"name":"yolk","type":"boolean","char":"y","description":"-y force yolk renew","allowNo":false}},"args":[]},"status":{"id":"status","description":"informations about eggs status","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs status"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"syncfrom":{"id":"syncfrom","description":"restore users and user data from a LUKS volumes","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncfrom","sudo eggs syncfrom --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"rootdir":{"name":"rootdir","type":"option","char":"r","description":"rootdir of the installed system, when used from live","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"syncto":{"id":"syncto","description":"saves users and user data in a LUKS volume inside the iso","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncto","sudo eggs syncto --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"update":{"id":"update","description":"update the Penguins' eggs tool","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs update"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:deb":{"id":"export:deb","description":"export deb/docs/iso to the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export deb","eggs export deb --clean","eggs export deb --all"],"flags":{"all":{"name":"all","type":"boolean","char":"a","description":"export all archs","allowNo":false},"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old .deb before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:iso":{"id":"export:iso","description":"export iso in the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export iso","eggs export iso --clean"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"delete old ISOs before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:clean":{"id":"tools:clean","description":"clean system log, apt, etc","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools clean"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:ppa":{"id":"tools:ppa","description":"add/remove repo","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools ppa --add","sudo eggs tools ppa --remove"],"flags":{"add":{"name":"add","type":"boolean","char":"a","description":"add penguins-eggs PPA repository","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"remove":{"name":"remove","type":"boolean","char":"r","description":"remove penguins-eggs PPA repository","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:skel":{"id":"tools:skel","description":"update skel from home configuration","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools skel","sudo eggs tools skel --user user-to-be-copied"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"user":{"name":"user","type":"option","char":"u","description":"user to be used","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"tools:stat":{"id":"tools:stat","description":"get statistics from sourceforge","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs tools stat","eggs tools stat --month","eggs tools stat --year"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"month":{"name":"month","type":"boolean","char":"m","description":"current month","allowNo":false},"year":{"name":"year","type":"boolean","char":"y","description":"current year","allowNo":false}},"args":[]},"tools:yolk":{"id":"tools:yolk","description":"configure eggs to install without internet","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools yolk"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[],"dir":"/var/local/yolk"},"wardrobe:get":{"id":"wardrobe:get","description":"get warorobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe get","eggs wardrobe get your-wardrobe"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"repo","description":"repository to get","required":false}]},"wardrobe:list":{"id":"wardrobe:list","description":"list costumes and accessoires in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe list","eggs wardrobe list your-wardrobe","eggs wardrobe list --distro arch"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"distro":{"name":"distro","type":"option","char":"d","description":"distro","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"wardrobe","description":"wardrobe","required":false}]},"wardrobe:show":{"id":"wardrobe:show","description":"show costumes/accessories in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"json":{"name":"json","type":"boolean","char":"j","description":"output JSON","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}],"example":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"]},"wardrobe:wear":{"id":"wardrobe:wear","description":"wear costume/accessories from wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs wardrobe wear duck","sudo eggs wardrobe wear accessories/firmwares","sudo eggs wardrobe wear wagtail/waydroid"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"no_accessories":{"name":"no_accessories","type":"boolean","char":"a","description":"not install accessories","allowNo":false},"no_firmwares":{"name":"no_firmwares","type":"boolean","char":"f","description":"not install firmwares","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}]}}}
package/README.md CHANGED
@@ -105,7 +105,7 @@ There are more than a way to install eggs as .deb package, the most practical is
105
105
  The simplest way to install eggs is download the [package eggs](https://sourceforge.net/projects/penguins-eggs/files/DEBS/) from [sourceforge page of the project](https://sourceforge.net/projects/penguins-eggs/) and install it
106
106
 
107
107
  ```
108
- sudo dpkg -i eggs_9.5.21_amd64.deb
108
+ sudo dpkg -i eggs_9.5.23_amd64.deb
109
109
  ```
110
110
 
111
111
  or, on a i386 system:
@@ -88,7 +88,8 @@ class Archlinux {
88
88
  static async calamaresInstall(verbose = false) {
89
89
  verbose = true; // serve per pacman
90
90
  const echo = utils_1.default.setEcho(verbose);
91
- const cal_eggs = 'calamares-eggs-3.3.0.r10616.11e1659ca-1-x86_64.pkg.tar.zst';
91
+ // const cal_eggs = 'calamares-eggs-3.3.0.r10616.11e1659ca-1-x86_64.pkg.tar.zst'
92
+ const cal_eggs = 'calamares-eggs-3.3.0.r10707.4b3278058-1-x86_64.pkg.tar.zst'; // 2023-09-04
92
93
  let cmd = `wget -O /tmp/${cal_eggs} https://sourceforge.net/projects/penguins-eggs/files/PKGBUILD/${cal_eggs}/download`;
93
94
  try {
94
95
  await (0, utils_2.exec)(cmd, echo);
@@ -166,6 +166,7 @@ class Ovary {
166
166
  * put reCreate = true in release
167
167
  */
168
168
  const reCreate = true;
169
+ let mksquashfsCmd = '';
169
170
  if (reCreate) { // start pre-clone
170
171
  /**
171
172
  * installer
@@ -189,6 +190,7 @@ class Ovary {
189
190
  await this.makeEfi(this.theme);
190
191
  }
191
192
  await this.bindLiveFs();
193
+ await this.copyBoot();
192
194
  if (!this.clone) {
193
195
  /**
194
196
  * ANCHE per cryptedclone
@@ -212,7 +214,7 @@ class Ovary {
212
214
  this.cliAutologin.addAutologin(this.settings.distro.distroId, this.settings.distro.codenameId, this.settings.config.user_opt, this.settings.config.user_opt_passwd, this.settings.config.root_passwd, this.settings.work_dir.merged);
213
215
  }
214
216
  await this.editLiveFs(clone, cryptedclone);
215
- await this.makeSquashfs(scriptOnly);
217
+ mksquashfsCmd = await this.makeSquashfs(scriptOnly);
216
218
  await this.uBindLiveFs(); // Lo smonto prima della fase di backup
217
219
  }
218
220
  if (cryptedclone) {
@@ -222,38 +224,37 @@ class Ovary {
222
224
  utils_2.default.warning(`moving ${luksFile} in ${this.ovarium}iso/live`);
223
225
  await (0, utils_1.exec)(`mv ${luksFile} ${this.ovarium}iso/live`, this.echo);
224
226
  }
225
- const xorrisoCommand = this.makeDotDisk(clone, cryptedclone);
227
+ const mkIsofsCmd = this.xorrisoCommand(clone, cryptedclone).replace(/\s\s+/g, ' ');
228
+ const info = utils_2.default.getVolid(this.settings.remix.name);
229
+ this.makeDotDisk(info, mksquashfsCmd, mkIsofsCmd);
226
230
  /**
227
231
  * patch to emulate miso/archiso on archilinux
228
232
  */
229
233
  if (this.familyId === 'archlinux') {
234
+ let pathName = `arch/x86_64/airootfs`;
235
+ let hashCmd = 'sha512sum';
236
+ let hashExt = '.sha512';
230
237
  if (this.settings.distro.distroId === 'ManjaroLinux') {
231
- await (0, utils_1.exec)(`mkdir ${this.settings.iso_work}manjaro/x86_64 -p`, this.echo);
232
- await (0, utils_1.exec)(`ln ${this.settings.iso_work}live/filesystem.squashfs ${this.settings.iso_work}manjaro/x86_64/livefs.sfs`, this.echo);
233
- await (0, utils_1.exec)(`md5sum ${this.settings.iso_work}live/filesystem.squashfs > ${this.settings.iso_work}manjaro/x86_64/livefs.md5`, this.echo);
234
- }
235
- else if (this.settings.distro.distroId === 'Arch' ||
236
- this.settings.distro.distroId === 'blendOS' ||
237
- this.settings.distro.distroId === 'Garuda' ||
238
- this.settings.distro.distroId === 'phyOS' ||
239
- this.settings.distro.distroId === 'RebornOS' ||
240
- this.settings.distro.distroId === 'EndeavourOS') {
241
- await (0, utils_1.exec)(`mkdir ${this.settings.iso_work}arch/x86_64 -p`, this.echo);
242
- await (0, utils_1.exec)(`ln ${this.settings.iso_work}live/filesystem.squashfs ${this.settings.iso_work}arch/x86_64/airootfs.sfs`, this.echo);
243
- await (0, utils_1.exec)(`sha512sum ${this.settings.iso_work}live/filesystem.squashfs > ${this.settings.iso_work}arch/x86_64/airootfs.sha512`, this.echo);
238
+ pathName = `manjaro/x86_64/livefs`;
239
+ hashCmd = `md5sum`;
240
+ hashExt = '.md5';
244
241
  }
242
+ await (0, utils_1.exec)(`mkdir ${this.settings.iso_work}${pathName}/x86_64 -p`, this.echo);
243
+ // await exec(`ln -s ${this.settings.iso_work}live/filesystem.squashfs ${this.settings.iso_work}${pathName}.sfs`, this.echo)
244
+ await (0, utils_1.exec)(`mv ${this.settings.iso_work}live/filesystem.squashfs ${this.settings.iso_work}${pathName}.sfs`, this.echo);
245
+ await (0, utils_1.exec)(`${hashCmd} ${this.settings.iso_work}${pathName}.sfs > ${this.settings.iso_work}${pathName}${hashExt}`, this.echo);
245
246
  }
246
- await this.makeIso(xorrisoCommand, scriptOnly);
247
+ await this.makeIso(mkIsofsCmd, scriptOnly);
247
248
  }
248
249
  }
249
250
  /**
250
251
  * Crea la struttura della workdir
251
252
  */
252
253
  async liveCreateStructure() {
253
- // efi-work iso memdiskDir sotto mountpoint
254
254
  if (this.verbose) {
255
255
  console.log('Ovary: liveCreateStructure');
256
256
  }
257
+ // efi-work iso memdiskDir sotto mountpoint
257
258
  utils_2.default.warning(`Creating egg in ${this.settings.config.snapshot_dir}`);
258
259
  let cmd;
259
260
  if (!fs_1.default.existsSync(this.settings.config.snapshot_dir)) {
@@ -284,11 +285,11 @@ class Ovary {
284
285
  * Creo le directory di destinazione per boot, efi, isolinux e live
285
286
  */
286
287
  if (!fs_1.default.existsSync(this.settings.iso_work)) {
287
- cmd = `mkdir -p ${this.settings.iso_work}/boot/grub/${utils_2.default.machineUEFI()}`;
288
+ cmd = `mkdir -p ${this.settings.iso_work}boot/grub/${utils_2.default.machineUEFI()}`;
288
289
  this.tryCatch(cmd);
289
- cmd = `mkdir -p ${this.settings.iso_work}/efi/boot`;
290
+ cmd = `mkdir -p ${this.settings.iso_work}efi/boot`;
290
291
  this.tryCatch(cmd);
291
- cmd = `mkdir -p ${this.settings.iso_work}/isolinux`;
292
+ cmd = `mkdir -p ${this.settings.iso_work}isolinux`;
292
293
  this.tryCatch(cmd);
293
294
  cmd = `mkdir -p ${this.settings.iso_work}live`;
294
295
  this.tryCatch(cmd);
@@ -299,6 +300,9 @@ class Ovary {
299
300
  * @param cmd
300
301
  */
301
302
  async tryCatch(cmd = '') {
303
+ if (this.verbose) {
304
+ console.log('Ovary: tryCatch');
305
+ }
302
306
  try {
303
307
  await (0, utils_1.exec)(cmd, this.echo);
304
308
  }
@@ -319,7 +323,7 @@ class Ovary {
319
323
  */
320
324
  async editLiveFs(clone = false, cryptedclone = false) {
321
325
  if (this.verbose) {
322
- console.log('ovary: editLiveFs');
326
+ console.log('Ovary: editLiveFs');
323
327
  }
324
328
  /**
325
329
  * /etc/penguins-eggs.d/is_clone file created on live
@@ -527,8 +531,7 @@ class Ovary {
527
531
  */
528
532
  async syslinux() {
529
533
  if (this.verbose) {
530
- console.log('ovary: syslinux');
531
- console.log('syslinux path: ' + this.settings.distro.syslinuxPath);
534
+ console.log('Ovary: syslinux');
532
535
  }
533
536
  await (0, utils_1.exec)(`cp ${this.settings.distro.syslinuxPath}/vesamenu.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
534
537
  await (0, utils_1.exec)(`cp ${this.settings.distro.syslinuxPath}/chain.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
@@ -548,7 +551,7 @@ class Ovary {
548
551
  */
549
552
  async isolinux(theme = 'eggs') {
550
553
  if (this.verbose) {
551
- console.log('ovary: isolinux');
554
+ console.log('Ovary: isolinux');
552
555
  }
553
556
  /**
554
557
  * isolinux.bin
@@ -605,6 +608,9 @@ class Ovary {
605
608
  * @returns kernelParameters
606
609
  */
607
610
  kernelParameters() {
611
+ if (this.verbose) {
612
+ console.log('Ovary: kernelParameters');
613
+ }
608
614
  const distroId = this.settings.distro.distroId;
609
615
  let kp = `boot=live components locales=${process.env.LANG}`;
610
616
  if (this.familyId === 'archlinux') {
@@ -629,11 +635,11 @@ class Ovary {
629
635
  */
630
636
  async kernelCopy() {
631
637
  if (this.verbose) {
632
- console.log('ovary: kernelCopy');
638
+ console.log('Ovary: kernelCopy');
633
639
  }
634
640
  let lackVmlinuzImage = false;
635
641
  if (fs_1.default.existsSync(this.settings.kernel_image)) {
636
- await (0, utils_1.exec)(`cp ${this.settings.kernel_image} ${this.settings.iso_work}/live/`, this.echo);
642
+ await (0, utils_1.exec)(`cp ${this.settings.kernel_image} ${this.settings.iso_work}live/`, this.echo);
637
643
  }
638
644
  else {
639
645
  utils_2.default.error(`Cannot find ${this.settings.kernel_image}`);
@@ -649,9 +655,12 @@ class Ovary {
649
655
  * necessita di echoYes
650
656
  */
651
657
  async initrdCreate() {
658
+ if (this.verbose) {
659
+ console.log('Ovary: initrdCreate');
660
+ }
652
661
  let initrdImg = utils_2.default.initrdImg();
653
662
  initrdImg = initrdImg.slice(Math.max(0, initrdImg.lastIndexOf('/') + 1));
654
- utils_2.default.warning(`Creating ${initrdImg} in ${this.settings.iso_work}/live/`);
663
+ utils_2.default.warning(`Creating ${initrdImg} in ${this.settings.iso_work}live/`);
655
664
  const distroId = this.settings.distro.distroId;
656
665
  let fileConf = 'archlinux';
657
666
  if (distroId === 'Arch' ||
@@ -672,13 +681,16 @@ class Ovary {
672
681
  fileConf = distroId.toLowerCase();
673
682
  }
674
683
  let pathConf = node_path_1.default.resolve(__dirname, `../../mkinitcpio/${fileConf}/live.conf`);
675
- await (0, utils_1.exec)(`mkinitcpio -c ${pathConf} -g ${this.settings.iso_work}/live/${initrdImg}`, utils_2.default.setEcho(true));
684
+ await (0, utils_1.exec)(`mkinitcpio -c ${pathConf} -g ${this.settings.iso_work}live/${initrdImg}`, utils_2.default.setEcho(true));
676
685
  }
677
686
  /**
678
687
  * We must upgrade to initrdCreate for Debian/Ubuntu
679
688
  * @returns
680
689
  */
681
690
  async initrdCopy(verbose = false) {
691
+ if (this.verbose) {
692
+ console.log('Ovary: initrdCopy');
693
+ }
682
694
  let isCrypted = false;
683
695
  utils_2.default.warning('initrdCreate');
684
696
  if (fs_1.default.existsSync('/etc/crypttab')) {
@@ -715,7 +727,7 @@ class Ovary {
715
727
  */
716
728
  async makeSquashfs(scriptOnly = false) {
717
729
  if (this.verbose) {
718
- console.log('ovary: makeSquashfs');
730
+ console.log('Ovary: makeSquashfs');
719
731
  }
720
732
  /**
721
733
  * exclude all the accurence of cryptdisks in rc0.d, etc
@@ -753,14 +765,17 @@ class Ovary {
753
765
  fs_1.default.unlinkSync(`${this.settings.iso_work}/live/filesystem.squashfs`);
754
766
  }
755
767
  const compression = `-comp ${this.settings.config.compression}`;
756
- //let cmd = `mksquashfs ${this.settings.work_dir.merged} ${this.settings.iso_work}live/filesystem.squashfs ${compression} -wildcards -ef ${this.settings.session_excludes}`
757
768
  let cmd = `mksquashfs ${this.settings.work_dir.merged} ${this.settings.iso_work}live/filesystem.squashfs ${compression} -wildcards -ef ${this.settings.config.snapshot_excludes} ${this.settings.session_excludes}`;
758
769
  cmd = cmd.replace(/\s\s+/g, ' ');
759
770
  utils_2.default.writeX(`${this.settings.work_dir.ovarium}mksquashfs`, cmd);
760
771
  if (!scriptOnly) {
761
772
  utils_2.default.warning('squashing filesystem: ' + compression);
762
- await (0, utils_1.exec)(cmd, utils_2.default.setEcho(true));
773
+ const test = (await (0, utils_1.exec)(cmd, utils_2.default.setEcho(true))).code;
774
+ if (test !== 0) {
775
+ process.exit();
776
+ }
763
777
  }
778
+ return cmd;
764
779
  }
765
780
  /**
766
781
  * Restituisce true per le direcory da montare con overlay
@@ -773,7 +788,10 @@ class Ovary {
773
788
  *
774
789
  * @param dir
775
790
  */
776
- mergedAndOvelay(dir) {
791
+ mergedAndOverlay(dir) {
792
+ if (this.verbose) {
793
+ console.log('Ovary: mergedAndOverlay');
794
+ }
777
795
  const mountDirs = ['boot', 'etc', 'usr', 'var'];
778
796
  let mountDir = '';
779
797
  let overlay = false;
@@ -792,14 +810,19 @@ class Ovary {
792
810
  * - normal solo la creazione della directory, nessun mount
793
811
  * - merged creazione della directory e mount ro
794
812
  * - mergedAndOverlay creazione directory, overlay e mount rw
813
+ * - copied: creazione directory e copia
795
814
  */
796
815
  merged(dir) {
816
+ if (this.verbose) {
817
+ console.log('Ovary: merged');
818
+ }
797
819
  let merged = true;
798
820
  if (dir === 'home') {
799
821
  merged = this.clone;
800
822
  }
801
823
  else {
802
824
  const noMergeDirs = [
825
+ 'boot',
803
826
  'cdrom',
804
827
  'dev',
805
828
  'media',
@@ -828,14 +851,14 @@ class Ovary {
828
851
  */
829
852
  async bindLiveFs() {
830
853
  if (this.verbose) {
831
- console.log('ovary: bindLiveFs');
854
+ console.log('Ovary: bindLiveFs');
832
855
  }
833
856
  /**
834
857
  * Attenzione:
835
858
  * fs.readdirSync('/', { withFileTypes: true })
836
859
  * viene ignorato da Node8, ma da problemi da Node10 in poi
837
860
  */
838
- const dirs = fs_1.default.readdirSync('/');
861
+ const dirs = fs_1.default.readdirSync('/'); // we must remove boot and
839
862
  const startLine = '#############################################################';
840
863
  const titleLine = '# -----------------------------------------------------------';
841
864
  const endLine = '# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n';
@@ -847,36 +870,38 @@ class Ovary {
847
870
  for (const dir of dirs) {
848
871
  cmds.push(startLine);
849
872
  if (n8_1.default.isDirectory(dir)) {
850
- if (dir !== 'lost+found') {
851
- cmd = `# /${dir} is a directory`;
852
- if (this.mergedAndOvelay(dir)) {
853
- /**
854
- * mergedAndOverlay creazione directory, overlay e mount rw
855
- */
856
- cmds.push(`${cmd} need to be presente, and rw`, titleLine, '# create mountpoint lower');
857
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.lowerdir}/${dir}`), `# first: mount /${dir} rw in ${this.settings.work_dir.lowerdir}/${dir}`);
858
- cmds.push(await rexec(`mount --bind --make-slave /${dir} ${this.settings.work_dir.lowerdir}/${dir}`, this.verbose), '# now remount it ro');
859
- cmds.push(await rexec(`mount -o remount,bind,ro ${this.settings.work_dir.lowerdir}/${dir}`, this.verbose), `\n# second: create mountpoint upper, work and ${this.settings.work_dir.merged} and mount ${dir}`);
860
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.upperdir}/${dir}`, this.verbose));
861
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.workdir}/${dir}`, this.verbose));
862
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose), `\n# thirth: mount /${dir} rw in ${this.settings.work_dir.merged}`);
863
- cmds.push(await rexec(`mount -t overlay overlay -o lowerdir=${this.settings.work_dir.lowerdir}/${dir},upperdir=${this.settings.work_dir.upperdir}/${dir},workdir=${this.settings.work_dir.workdir}/${dir} ${this.settings.work_dir.merged}/${dir}`, this.verbose));
864
- }
865
- else if (this.merged(dir)) {
866
- /*
867
- * merged creazione della directory e mount ro
868
- */
869
- cmds.push(`${cmd} need to be present, mount ro`, titleLine);
870
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose));
871
- cmds.push(await rexec(`mount --bind --make-slave /${dir} ${this.settings.work_dir.merged}/${dir}`, this.verbose));
872
- cmds.push(await rexec(`mount -o remount,bind,ro ${this.settings.work_dir.merged}/${dir}`, this.verbose));
873
- }
874
- else {
875
- /**
876
- * normal solo la creazione della directory, nessun mount
877
- */
878
- cmds.push(`${cmd} need to be present, no mount`, titleLine);
879
- cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose), `# mount -o bind /${dir} ${this.settings.work_dir.merged}/${dir}`);
873
+ if (dir !== 'boot') {
874
+ if (dir !== 'lost+found') {
875
+ cmd = `# /${dir} is a directory`;
876
+ if (this.mergedAndOverlay(dir)) {
877
+ /**
878
+ * mergedAndOverlay creazione directory, overlay e mount rw
879
+ */
880
+ cmds.push(`${cmd} need to be presente, and rw`, titleLine, '# create mountpoint lower');
881
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.lowerdir}/${dir}`), `# first: mount /${dir} rw in ${this.settings.work_dir.lowerdir}/${dir}`);
882
+ cmds.push(await rexec(`mount --bind --make-slave /${dir} ${this.settings.work_dir.lowerdir}/${dir}`, this.verbose), '# now remount it ro');
883
+ cmds.push(await rexec(`mount -o remount,bind,ro ${this.settings.work_dir.lowerdir}/${dir}`, this.verbose), `\n# second: create mountpoint upper, work and ${this.settings.work_dir.merged} and mount ${dir}`);
884
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.upperdir}/${dir}`, this.verbose));
885
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.workdir}/${dir}`, this.verbose));
886
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose), `\n# thirth: mount /${dir} rw in ${this.settings.work_dir.merged}`);
887
+ cmds.push(await rexec(`mount -t overlay overlay -o lowerdir=${this.settings.work_dir.lowerdir}/${dir},upperdir=${this.settings.work_dir.upperdir}/${dir},workdir=${this.settings.work_dir.workdir}/${dir} ${this.settings.work_dir.merged}/${dir}`, this.verbose));
888
+ }
889
+ else if (this.merged(dir)) {
890
+ /*
891
+ * merged creazione della directory e mount ro
892
+ */
893
+ cmds.push(`${cmd} need to be present, mount ro`, titleLine);
894
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose));
895
+ cmds.push(await rexec(`mount --bind --make-slave /${dir} ${this.settings.work_dir.merged}/${dir}`, this.verbose));
896
+ cmds.push(await rexec(`mount -o remount,bind,ro ${this.settings.work_dir.merged}/${dir}`, this.verbose));
897
+ }
898
+ else {
899
+ /**
900
+ * normal solo la creazione della directory, nessun mount
901
+ */
902
+ cmds.push(`${cmd} need to be present, no mount`, titleLine);
903
+ cmds.push(await makeIfNotExist(`${this.settings.work_dir.merged}/${dir}`, this.verbose), `# mount -o bind /${dir} ${this.settings.work_dir.merged}/${dir}`);
904
+ }
880
905
  }
881
906
  }
882
907
  }
@@ -909,18 +934,26 @@ class Ovary {
909
934
  // Utils.writeXs(`${this.settings.config.snapshot_dir}bind`, cmds)
910
935
  utils_2.default.writeXs(`${this.settings.work_dir.ovarium}bind`, cmds);
911
936
  }
937
+ /**
938
+ * copyBoot
939
+ */
940
+ async copyBoot() {
941
+ if (this.verbose) {
942
+ console.log('Ovary: copyBoot');
943
+ }
944
+ await rexec(`cp -r /boot ${this.settings.config.snapshot_mnt}filesystem.squashfs`, this.verbose);
945
+ }
912
946
  /**
913
947
  * ubind del fs live
914
948
  * @param verbose
915
949
  */
916
950
  async uBindLiveFs() {
917
951
  if (this.verbose) {
918
- console.log('ovary: uBindLiveFs');
952
+ console.log('Ovary: uBindLiveFs');
919
953
  }
920
954
  const cmds = [];
921
955
  cmds.push('# NOTE: home, cdrom, dev, live, media, mnt, proc, run, sys and tmp', `# need just to be removed in ${this.settings.work_dir.merged}`);
922
956
  cmds.push(`# host: ${node_os_1.default.hostname()} user: ${await utils_2.default.getPrimaryUser()}\n`);
923
- // await exec(`/usr/bin/pkill mksquashfs; /usr/bin/pkill md5sum`, {echo: true})
924
957
  if (fs_1.default.existsSync(this.settings.work_dir.merged)) {
925
958
  const bindDirs = fs_1.default.readdirSync(this.settings.work_dir.merged, {
926
959
  withFileTypes: true,
@@ -930,7 +963,7 @@ class Ovary {
930
963
  cmds.push('#############################################################');
931
964
  if (n8_1.default.isDirectory(dirname)) {
932
965
  cmds.push(`\n# directory: ${dirname}`);
933
- if (this.mergedAndOvelay(dirname)) {
966
+ if (this.mergedAndOverlay(dirname)) {
934
967
  cmds.push(`\n# ${dirname} has overlay`, `\n# First, umount it from ${this.settings.config.snapshot_dir}`);
935
968
  cmds.push(await rexec(`umount ${this.settings.work_dir.merged}/${dirname}`, this.verbose), `\n# Second, umount it from ${this.settings.work_dir.lowerdir}`);
936
969
  cmds.push(await rexec(`umount ${this.settings.work_dir.lowerdir}/${dirname}`, this.verbose));
@@ -967,6 +1000,9 @@ class Ovary {
967
1000
  * bind dei virtual file system
968
1001
  */
969
1002
  async bindVfs() {
1003
+ if (this.verbose) {
1004
+ console.log('Ovary: bindVfs');
1005
+ }
970
1006
  const cmds = [];
971
1007
  cmds.push(`mount -o bind /dev ${this.settings.work_dir.merged}/dev`, `mount -o bind /dev/pts ${this.settings.work_dir.merged}/dev/pts`, `mount -o bind /proc ${this.settings.work_dir.merged}/proc`, `mount -o bind /sys ${this.settings.work_dir.merged}/sys`, `mount -o bind /run ${this.settings.work_dir.merged}/run`);
972
1008
  // Utils.writeXs(`${this.settings.config.snapshot_dir}bindvfs`, cmds)
@@ -977,6 +1013,9 @@ class Ovary {
977
1013
  * @param verbose
978
1014
  */
979
1015
  async ubindVfs() {
1016
+ if (this.verbose) {
1017
+ console.log('Ovary: ubindVfs');
1018
+ }
980
1019
  const cmds = [];
981
1020
  cmds.push(`umount ${this.settings.work_dir.merged}/dev/pts`, `umount ${this.settings.work_dir.merged}/dev`, `umount ${this.settings.work_dir.merged}/proc`, `umount ${this.settings.work_dir.merged}/run`, `umount ${this.settings.work_dir.merged}/sys`);
982
1021
  // Utils.writeXs(`${this.settings.config.snapshot_dir}ubindvfs`, cmds)
@@ -987,6 +1026,9 @@ class Ovary {
987
1026
  * @param verbose
988
1027
  */
989
1028
  async cleanUsersAccounts() {
1029
+ if (this.verbose) {
1030
+ console.log('Ovary: cleanUsersAccounts');
1031
+ }
990
1032
  /**
991
1033
  * delete all user in chroot
992
1034
  */
@@ -1010,13 +1052,14 @@ class Ovary {
1010
1052
  */
1011
1053
  async createUserLive() {
1012
1054
  if (this.verbose) {
1013
- console.log('ovary: createUserLive');
1055
+ console.log('Ovary: createUserLive');
1014
1056
  }
1015
1057
  const cmds = [];
1016
1058
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' rm /home/' + this.settings.config.user_opt + ' -rf', this.verbose));
1017
1059
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' mkdir /home/' + this.settings.config.user_opt, this.verbose));
1018
1060
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' useradd ' + this.settings.config.user_opt + ' --home-dir /home/' + this.settings.config.user_opt + ' --shell /bin/bash ', this.verbose));
1019
1061
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' cp /etc/skel/. /home/' + this.settings.config.user_opt + ' -R', this.verbose));
1062
+ // da problemi con il mount sshfs
1020
1063
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' chown ' + this.settings.config.user_opt + ':users' + ' /home/' + this.settings.config.user_opt + ' -R', this.verbose));
1021
1064
  // live password
1022
1065
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' echo ' + this.settings.config.user_opt + ':' + this.settings.config.user_opt_passwd + '| chroot ' + this.settings.work_dir.merged + ' chpasswd', this.verbose));
@@ -1051,7 +1094,7 @@ class Ovary {
1051
1094
  */
1052
1095
  async createXdgAutostart(theme = 'eggs', myAddons, noicons = false) {
1053
1096
  if (this.verbose) {
1054
- console.log('ovary: createXdgAutostart()');
1097
+ console.log('Ovary: createXdgAutostart');
1055
1098
  }
1056
1099
  const pathHomeLive = `/home/${this.settings.config.user_opt}`;
1057
1100
  if (noicons) { // NO icone
@@ -1188,6 +1231,9 @@ class Ovary {
1188
1231
  * @param icon
1189
1232
  */
1190
1233
  lxdeLink(file, name, icon) {
1234
+ if (this.verbose) {
1235
+ console.log('Ovary: lxdeLink');
1236
+ }
1191
1237
  const lnk = `lnk-${file}`;
1192
1238
  let text = '';
1193
1239
  text += `echo "[Desktop Entry]" >$DESKTOP/${lnk}\n`;
@@ -1203,6 +1249,9 @@ class Ovary {
1203
1249
  * @param exclusion {atring} path to add/remove
1204
1250
  */
1205
1251
  addRemoveExclusion(add, exclusion) {
1252
+ if (this.verbose) {
1253
+ console.log('Ovary: addRemoveExclusion');
1254
+ }
1206
1255
  if (exclusion.startsWith('/')) {
1207
1256
  exclusion = exclusion.slice(1); // remove / initial Non compatible with rsync
1208
1257
  }
@@ -1223,11 +1272,8 @@ class Ovary {
1223
1272
  // #######################################################################################
1224
1273
  async makeEfi(theme = 'eggs') {
1225
1274
  if (this.verbose) {
1226
- console.log('ovary: makeEfi');
1275
+ console.log('Ovary: makeEfi');
1227
1276
  }
1228
- // const memdiskDir = this.settings.work_dir.path + 'memdiskDir'
1229
- // const efiWorkDir = this.settings.efi_work
1230
- // const isoDir = this.settings.iso_work
1231
1277
  const memdiskDir = this.settings.config.snapshot_mnt + 'memdiskDir';
1232
1278
  const efiWorkDir = this.settings.efi_work;
1233
1279
  const isoDir = this.settings.iso_work;
@@ -1267,15 +1313,15 @@ class Ovary {
1267
1313
  }
1268
1314
  utils_2.default.warning('creating efiWordDir: ' + efiWorkDir);
1269
1315
  await (0, utils_1.exec)(`mkdir ${efiWorkDir}`, this.echo);
1270
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/boot`, this.echo);
1271
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/boot/grub`, this.echo);
1272
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/boot/grub/${utils_2.default.machineUEFI()}`, this.echo);
1273
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/efi`, this.echo);
1274
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/efi/boot`, this.echo);
1316
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}boot`, this.echo);
1317
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}boot/grub`, this.echo);
1318
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}boot/grub/${utils_2.default.machineUEFI()}`, this.echo);
1319
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}efi`, this.echo);
1320
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}efi/boot`, this.echo);
1275
1321
  /**
1276
1322
  * copy splash to efiWorkDir
1277
1323
  */
1278
- const splashDest = `${efiWorkDir}/boot/grub/splash.png`;
1324
+ const splashDest = `${efiWorkDir}boot/grub/splash.png`;
1279
1325
  let splashSrc = node_path_1.default.resolve(__dirname, `../../addons/${theme}/theme/livecd/splash.png`);
1280
1326
  if (this.theme.includes('/')) {
1281
1327
  splashSrc = `${theme}/theme/livecd/splash.png`;
@@ -1288,7 +1334,7 @@ class Ovary {
1288
1334
  /**
1289
1335
  * copy theme
1290
1336
  */
1291
- const themeDest = `${efiWorkDir}/boot/grub/theme.cfg`;
1337
+ const themeDest = `${efiWorkDir}boot/grub/theme.cfg`;
1292
1338
  let themeSrc = node_path_1.default.resolve(__dirname, `../../addons/${theme}/theme/livecd/grub.theme.cfg`);
1293
1339
  if (this.theme.includes('/')) {
1294
1340
  themeSrc = `${theme}/theme/livecd/grub.theme.cfg`;
@@ -1304,10 +1350,10 @@ class Ovary {
1304
1350
  // for i in $(ls /usr/lib/grub/x86_64-efi |grep part_|grep \.mod|sed 's/.mod//'); do echo "insmod $i" >> boot/grub/x86_64-efi/grub.cfg; done
1305
1351
  let cmd = `for i in $(ls /usr/lib/grub/${utils_2.default.machineUEFI()}|grep part_|grep \.mod|sed 's/.mod//'); do echo "insmod $i" >> ${efiWorkDir}boot/grub/${utils_2.default.machineUEFI()}/grub.cfg; done`;
1306
1352
  await (0, utils_1.exec)(cmd, this.echo);
1307
- // for i in efi_gop efi_uga ieee1275_fb vbe vga video_bochs video_cirrus jpeg png gfxterm ; do echo "insmod $i" >> boot/grub/x86_64-efi/grub.cfg ; done
1308
- cmd = `for i in efi_gop efi_uga ieee1275_fb vbe vga video_bochs video_cirrus jpeg png gfxterm ; do echo "insmod $i" >> ${efiWorkDir}/boot/grub/${utils_2.default.machineUEFI()}/grub.cfg ; done`;
1353
+ //cmd = `for i in efi_gop efi_uga ieee1275_fb vbe vga video_bochs video_cirrus jpeg png gfxterm ; do echo "insmod $i" >> ${efiWorkDir}boot/grub/${Utils.machineUEFI()}/grub.cfg ; done`
1354
+ cmd = `for i in efi_gop efi_uga ieee1275_fb vbe vga video_bochs video_cirrus jpeg png gfxterm ; do echo "insmod $i" >> ${efiWorkDir}boot/grub/${utils_2.default.machineUEFI()}/grub.cfg ; done`;
1309
1355
  await (0, utils_1.exec)(cmd, this.echo);
1310
- await (0, utils_1.exec)(`echo "source /boot/grub/grub.cfg" >> ${efiWorkDir}/boot/grub/${utils_2.default.machineUEFI()}/grub.cfg`, this.echo);
1356
+ await (0, utils_1.exec)(`echo "source /boot/grub/grub.cfg" >> ${efiWorkDir}boot/grub/${utils_2.default.machineUEFI()}/grub.cfg`, this.echo);
1311
1357
  /**
1312
1358
  * andiamo in memdiskDir
1313
1359
  */
@@ -1330,41 +1376,41 @@ class Ovary {
1330
1376
  await (0, utils_1.exec)(`${grubName}-mkimage -O "${utils_2.default.machineUEFI()}" -m "${memdiskDir}/memdisk" -o "${memdiskDir}/bootx64.efi" -p '(memdisk)/boot/grub' search iso9660 configfile normal memdisk tar cat part_msdos part_gpt fat ext2 ntfs ntfscomp hfsplus chain boot linux`, this.echo);
1331
1377
  // popd torna in efiWorkDir
1332
1378
  // copy the grub image to efi/boot (to go later in the device's root)
1333
- await (0, utils_1.exec)(`cp ${memdiskDir}/bootx64.efi ${efiWorkDir}/efi/boot`, this.echo);
1379
+ await (0, utils_1.exec)(`cp ${memdiskDir}/bootx64.efi ${efiWorkDir}efi/boot`, this.echo);
1334
1380
  // #######################
1335
1381
  // Do the boot image "boot/grub/efiboot.img"
1336
- await (0, utils_1.exec)(`dd if=/dev/zero of=${efiWorkDir}/boot/grub/efiboot.img bs=1K count=1440`, this.echo);
1337
- await (0, utils_1.exec)(`/sbin/mkdosfs -F 12 ${efiWorkDir}/boot/grub/efiboot.img`, this.echo);
1338
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/img-mnt`, this.echo);
1339
- await (0, utils_1.exec)(`mount -o loop ${efiWorkDir}/boot/grub/efiboot.img ${efiWorkDir}/img-mnt`, this.echo);
1340
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/img-mnt/efi`, this.echo);
1341
- await (0, utils_1.exec)(`mkdir ${efiWorkDir}/img-mnt/efi/boot`, this.echo);
1382
+ await (0, utils_1.exec)(`dd if=/dev/zero of=${efiWorkDir}boot/grub/efiboot.img bs=1K count=1440`, this.echo);
1383
+ await (0, utils_1.exec)(`/sbin/mkdosfs -F 12 ${efiWorkDir}boot/grub/efiboot.img`, this.echo);
1384
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}img-mnt`, this.echo);
1385
+ await (0, utils_1.exec)(`mount -o loop ${efiWorkDir}boot/grub/efiboot.img ${efiWorkDir}img-mnt`, this.echo);
1386
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}img-mnt/efi`, this.echo);
1387
+ await (0, utils_1.exec)(`mkdir ${efiWorkDir}img-mnt/efi/boot`, this.echo);
1342
1388
  // era cp -r
1343
- await (0, utils_1.exec)(`cp ${memdiskDir}/bootx64.efi ${efiWorkDir}/img-mnt/efi/boot`, this.echo);
1389
+ await (0, utils_1.exec)(`cp ${memdiskDir}/bootx64.efi ${efiWorkDir}img-mnt/efi/boot`, this.echo);
1344
1390
  // #######################
1345
1391
  // copy modules and font
1346
- await (0, utils_1.exec)(`cp -r /usr/lib/grub/${utils_2.default.machineUEFI()}/* ${efiWorkDir}/boot/grub/${utils_2.default.machineUEFI()}/`, this.echo);
1392
+ await (0, utils_1.exec)(`cp -r /usr/lib/grub/${utils_2.default.machineUEFI()}/* ${efiWorkDir}boot/grub/${utils_2.default.machineUEFI()}/`, this.echo);
1347
1393
  // if this doesn't work try another font from the same place (grub's default, unicode.pf2, is much larger)
1348
1394
  // Either of these will work, and they look the same to me. Unicode seems to work with qemu. -fsr
1349
1395
  if (fs_1.default.existsSync('/usr/share/grub/font.pf2')) {
1350
- await (0, utils_1.exec)(`cp /usr/share/grub/font.pf2 ${efiWorkDir}/boot/grub/font.pf2`, this.echo);
1396
+ await (0, utils_1.exec)(`cp /usr/share/grub/font.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
1351
1397
  }
1352
1398
  else if (fs_1.default.existsSync('/usr/share/grub/unicode.pf2')) {
1353
- await (0, utils_1.exec)(`cp /usr/share/grub/unicode.pf2 ${efiWorkDir}/boot/grub/font.pf2`, this.echo);
1399
+ await (0, utils_1.exec)(`cp /usr/share/grub/unicode.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
1354
1400
  }
1355
1401
  else if (fs_1.default.existsSync('/usr/share/grub/ascii.pf2')) {
1356
- await (0, utils_1.exec)(`cp /usr/share/grub/ascii.pf2 ${efiWorkDir}/boot/grub/font.pf2`, this.echo);
1402
+ await (0, utils_1.exec)(`cp /usr/share/grub/ascii.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
1357
1403
  }
1358
1404
  // doesn't need to be root-owned
1359
1405
  // chown -R 1000:1000 $(pwd) 2>/dev/null
1360
1406
  // Cleanup efi temps
1361
- await (0, utils_1.exec)(`umount ${efiWorkDir}/img-mnt`, this.echo);
1362
- await (0, utils_1.exec)(`rmdir ${efiWorkDir}/img-mnt`, this.echo);
1407
+ await (0, utils_1.exec)(`umount ${efiWorkDir}img-mnt`, this.echo);
1408
+ await (0, utils_1.exec)(`rmdir ${efiWorkDir}img-mnt`, this.echo);
1363
1409
  await (0, utils_1.exec)(`rm ${memdiskDir}/img-mnt -rf`, this.echo);
1364
1410
  // popd
1365
1411
  // Copy efi files to iso
1366
- await (0, utils_1.exec)(`rsync -avx ${efiWorkDir}/boot ${isoDir}/`, this.echo);
1367
- await (0, utils_1.exec)(`rsync -avx ${efiWorkDir}/efi ${isoDir}/`, this.echo);
1412
+ await (0, utils_1.exec)(`rsync -avx ${efiWorkDir}boot ${isoDir}/`, this.echo);
1413
+ await (0, utils_1.exec)(`rsync -avx ${efiWorkDir}efi ${isoDir}/`, this.echo);
1368
1414
  // Do the main grub.cfg (which gets loaded last):
1369
1415
  // grub.theme.cfg
1370
1416
  let grubThemeSrc = node_path_1.default.resolve(__dirname, `../../addons/${theme}/theme/livecd/grub.theme.cfg`);
@@ -1404,27 +1450,24 @@ class Ovary {
1404
1450
  // #######################################################################################
1405
1451
  /**
1406
1452
  * makeDotDisk
1407
- * create .disk/info, .disk/mksquashfs, .disk/mkiso
1408
- * return mkiso
1409
1453
  */
1410
- makeDotDisk(clone = false, cryptedclone = false) {
1411
- const dotDisk = this.settings.iso_work + '/.disk';
1454
+ makeDotDisk(info = '', mksquashfs = '', mkisofs = '') {
1455
+ if (this.verbose) {
1456
+ console.log('Ovary: makeDotDisk');
1457
+ }
1458
+ const dotDisk = this.settings.iso_work + '.disk';
1412
1459
  if (fs_1.default.existsSync(dotDisk)) {
1413
1460
  shelljs_1.default.rm('-rf', dotDisk);
1414
1461
  }
1415
1462
  shelljs_1.default.mkdir('-p', dotDisk);
1463
+ let text = `# Created at: ${utils_2.default.formatDate(new Date())}\n`;
1464
+ text += `# penguins_eggs v. ${utils_2.default.getPackageVersion()}\n`;
1416
1465
  // .disk/info
1417
- let file = dotDisk + '/info';
1418
- let content = utils_2.default.getVolid(this.settings.remix.name);
1419
- fs_1.default.writeFileSync(file, content, 'utf-8');
1466
+ fs_1.default.writeFileSync(dotDisk + '/info', info, 'utf-8');
1420
1467
  // .disk/mksquashfs
1421
- const scripts = this.settings.config.snapshot_dir;
1422
- shelljs_1.default.cp(scripts + '/mksquashfs', dotDisk + '/mksquashfs');
1468
+ fs_1.default.writeFileSync(dotDisk + '/mksquashfs', text + mksquashfs, 'utf-8');
1423
1469
  // .disk/mkisofs
1424
- content = this.xorrisoCommand(clone, cryptedclone).replace(/\s\s+/g, ' ');
1425
- file = dotDisk + '/mkisofs';
1426
- fs_1.default.writeFileSync(file, content, 'utf-8');
1427
- return content;
1470
+ fs_1.default.writeFileSync(dotDisk + '/mkisofs', text + mkisofs, 'utf-8');
1428
1471
  }
1429
1472
  /**
1430
1473
  *
@@ -1432,6 +1475,9 @@ class Ovary {
1432
1475
  * @returns cmd 4 mkiso
1433
1476
  */
1434
1477
  xorrisoCommand(clone = false, cryptedclone = false) {
1478
+ if (this.verbose) {
1479
+ console.log('Ovary: xorrisoCommand');
1480
+ }
1435
1481
  const volid = utils_2.default.getVolid(this.settings.remix.name);
1436
1482
  let prefix = this.settings.config.snapshot_prefix;
1437
1483
  if (prefix.endsWith('rolling-')) {
@@ -1585,7 +1631,7 @@ class Ovary {
1585
1631
  async makeIso(cmd, scriptOnly = false) {
1586
1632
  // echo = { echo: true, ignore: false }
1587
1633
  if (this.verbose) {
1588
- console.log('ovary: makeIso');
1634
+ console.log('Ovary: makeIso');
1589
1635
  }
1590
1636
  //Utils.writeX(`${this.settings.config.snapshot_dir}mkisofs`, cmd)
1591
1637
  utils_2.default.writeX(`${this.settings.work_dir.ovarium}mkisofs`, cmd);
@@ -1629,6 +1675,9 @@ class Ovary {
1629
1675
  * fill
1630
1676
  */
1631
1677
  async usersFill() {
1678
+ if (this.verbose) {
1679
+ console.log('Ovary: usersFill');
1680
+ }
1632
1681
  const usersArray = [];
1633
1682
  await (0, promises_1.access)('/etc/passwd', fs_2.constants.R_OK | fs_2.constants.W_OK);
1634
1683
  const passwd = fs_1.default.readFileSync('/etc/passwd', 'utf-8').split('\n');
@@ -1650,7 +1699,7 @@ exports.default = Ovary;
1650
1699
  */
1651
1700
  async function makeIfNotExist(path, verbose = false) {
1652
1701
  if (verbose) {
1653
- console.log(`ovary: makeIfNotExist(${path})`);
1702
+ console.log(`Ovary: makeIfNotExist(${path})`);
1654
1703
  }
1655
1704
  const echo = utils_2.default.setEcho(verbose);
1656
1705
  let cmd = `# ${path} alreasy exist`;
@@ -1666,6 +1715,9 @@ async function makeIfNotExist(path, verbose = false) {
1666
1715
  * @param echo
1667
1716
  */
1668
1717
  async function rexec(cmd, verbose = false) {
1718
+ if (verbose) {
1719
+ console.log(`Ovary: rexec(${cmd})`);
1720
+ }
1669
1721
  const echo = utils_2.default.setEcho(verbose);
1670
1722
  const check = await (0, utils_1.exec)(cmd, echo);
1671
1723
  if (!cmd.startsWith('umount')) { // skip umount errors
@@ -50,13 +50,14 @@ class Pxe {
50
50
  }
51
51
  }
52
52
  else {
53
- this.eggRoot = node_path_1.default.dirname(this.settings.config.snapshot_dir) + '/ovarium/iso/';
53
+ //this.eggRoot = path.dirname(this.settings.config.snapshot_mnt) + '/iso/'
54
+ this.eggRoot = this.settings.config.snapshot_mnt + 'iso/';
54
55
  }
55
- if (!utils_2.default.isLive() && !fs_1.default.existsSync(this.settings.config.snapshot_dir)) {
56
+ if (!utils_2.default.isLive() && !fs_1.default.existsSync(this.settings.config.snapshot_mnt)) {
56
57
  console.log('no image available, build an image with: sudo eggs produce');
57
58
  process.exit();
58
59
  }
59
- this.nest = '/home/eggs';
60
+ this.nest = this.settings.config.snapshot_mnt;
60
61
  this.pxeRoot = this.nest + '/pxe';
61
62
  /**
62
63
  * se pxeRoot non esiste viene creato
@@ -81,7 +82,7 @@ class Pxe {
81
82
  }
82
83
  */
83
84
  /**
84
- * installed: /home/eggs/ovarium/iso/live
85
+ * installed: /home/eggs/mnt/iso/live
85
86
  * live: this.iso/live
86
87
  */
87
88
  const pathFiles = this.eggRoot + 'live';
@@ -346,7 +346,7 @@ class Utils {
346
346
  static getVolid(volid = 'unknown') {
347
347
  // // 28 + 4 .iso = 32 lunghezza max di volid
348
348
  if (volid.length >= 32) {
349
- volid = volid.substr(0, 32);
349
+ volid = volid.substring(0, 32);
350
350
  }
351
351
  return volid;
352
352
  }
@@ -10,7 +10,7 @@ const utils_1 = tslib_1.__importDefault(require("../classes/utils"));
10
10
  const pxe_1 = tslib_1.__importDefault(require("../classes/pxe"));
11
11
  const tftp = require('tftp');
12
12
  class Cuckoo extends core_1.Command {
13
- async run(nest = '/home/eggs') {
13
+ async run(nest = '/home/eggs/mnt') {
14
14
  const { args, flags } = await this.parse(Cuckoo);
15
15
  utils_1.default.titles(this.id + ' ' + this.argv);
16
16
  if (utils_1.default.isRoot()) {
@@ -9,23 +9,29 @@ const utils_2 = require("./utils");
9
9
  */
10
10
  async function killMeSoftly(eggsRoot = `/home/eggs`, eggsMnt = '/home/eggs/mnt') {
11
11
  const echo = utils_1.default.setEcho(false);
12
+ const liveFs = `${eggsMnt}filesystem.squashfs`;
13
+ /**
14
+ * refuse if /home/eggs/mnt/filesystem.squashfs
15
+ */
16
+ if (haveBindedDirs(liveFs)) {
17
+ utils_1.default.warning(`You have binded dirs under ${liveFs}, kill is not possible!`);
18
+ process.exit(1);
19
+ }
20
+ /**
21
+ * if eggsMnt is mountpoint
22
+ */
12
23
  if (utils_1.default.isMountpoint(eggsMnt)) {
13
- if (isBinded(eggsMnt + `filesystem.squashfs`)) {
14
- utils_1.default.warning(`You have binded dirs under ${eggsMnt}, kill is not possible!`);
15
- process.exit(1);
16
- }
17
- // cancello SOLO:
24
+ // Just delete
18
25
  await (0, utils_2.exec)(`rm -rf ${eggsMnt}efi-work`);
19
- await (0, utils_2.exec)(`rm -rf ${eggsMnt}filesystem.squashfs`);
20
26
  await (0, utils_2.exec)(`rm -rf ${eggsMnt}iso`);
21
27
  await (0, utils_2.exec)(`rm -rf ${eggsMnt}memdiskDir`);
22
28
  await (0, utils_2.exec)(`rm -rf ${eggsRoot}ovarium`);
23
- console.log(`\nJust cleaned!\nPlease, run:\nsudo umount ${eggsMnt}\nif you want to kill`);
29
+ // double check !haveBindedDirs
30
+ if (!haveBindedDirs(liveFs)) {
31
+ await (0, utils_2.exec)(`rm -rf ${liveFs}`);
32
+ }
24
33
  process.exit(0);
25
34
  }
26
- if (isBinded(eggsRoot)) {
27
- console.log(`Please, run:\nsudo umount ${eggsRoot}\nbefore to kill`);
28
- }
29
35
  await (0, utils_2.exec)(`rm ${eggsRoot} -rf`, echo);
30
36
  }
31
37
  exports.default = killMeSoftly;
@@ -34,7 +40,7 @@ exports.default = killMeSoftly;
34
40
  * @param path
35
41
  * @returns
36
42
  */
37
- function isBinded(path) {
43
+ function haveBindedDirs(path) {
38
44
  let retVal = false;
39
45
  const dirs = [
40
46
  'bin',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "penguins-eggs",
3
3
  "description": "Perri's Brewery edition: remaster your system and distribuite it",
4
- "version": "9.5.21",
4
+ "version": "9.5.23",
5
5
  "author": "Piero Proietti @pieroproietti",
6
6
  "bin": {
7
7
  "eggs": "bin/run"