Discussion:
Personal Installer
(too old to reply)
Alfonso Sabato Siciliano
2024-07-09 14:51:31 UTC
Permalink
Hello,

I am going to write an installer *for me*. Of course it will be open source.
Perhaps it can be useful for others: tips, new ideas, and collaborations are
welcome. I know others have something in progress, if we match some
requirements
we can share some components/code.

Some project choices and requirements:

* Guidelines: simple, modularized and extendable.

* Server (backend) side written in lua, modularized in scripts. Independent
of
any frontend.

* A configuration file with variables, hooks, comments and examples.

* Multi-mode installation: Automatic, Simple, and Expert.

* Client (Graphic) side responsible only for drawing dialogs/windows.

* Multi-frontend. Implementation priority:
- TUI. Similar to bsdinstall with new features.
- File. Settings are read from file(s).
- CLI. Suitable for a screen reader for vision-impairments users. This is a
feature request.
- GUI.
- WEB. TBD (I am not a web-expert, lua seems to provide some option for
web programming).

* A menu to select: frontend, mode, and other options, at start-up.

* Frontends have to be totally separated from the server, eventually to be
easily added/deleted/changed/improved in the future. They could be
designed
and developed mainly for the installer, neither to be compatible with
other
tools nor to be general purpose.

* UI new features (something is related to server side):
- Navigation. New buttons: [Restart], [Prev], and [Next].
- Multi language.
- Dialogs for help, at start-up and during installation (F1 or [Help]
button).
- Options for color blind and low vision users. This is a feature request.
- Final step to install a desktop environment.
- Final step to install pkgs for accessibility. This is a feature request.

* Multi installation process:
- Synchronous. The server waits the user input from the dialog, then it
performs the "command".
- 2-steps. Frontend writes the user input to files. When the frontend
finishes
(showing all the dialogs) the server performs the actual installation by
reading files.
- Noninteractive. No user actions, server reads previously written files.
- TBD a mix of the above.

* Server <-> client communication: lua layer, files, and TBD server web.

* Logging and debug features similar to bsdinstall with extensions.

* Provide bsdinstall variables and configuration files. Ideally these
features
will be placed in the "centralized" configuration file above.
- All/most bsdinstall variables with extensions.
- All/most bsdinstall configuration files (or compliant solutions).

* A menu to select bsdinstall or this installer at start-up.

* Extras & TBD. sade extensions (feature request), pkgbase, and so on.


(I'll create a git repository and a wiki page with the Roadmap. The plan is
detaching bsdinstall from bsdconfig, then rewriting the scripts in lua.)

Again, to avoid any misunderstanding: this is a personal project, bsdinstall
will not be touched. I plan to end by 6-8 months providing a port with the
installer and a script to create the iso.


Thanks in advance for any reply.

Best regards,
Alfonso
lain.
2024-07-09 17:00:38 UTC
Permalink
Post by Alfonso Sabato Siciliano
Hello,
Not really sure what you exactly mean by "installer".
If you mean OS installer, I'd say play around with Linux distributions
that require you manually installing everything, like CRUX for example.
It teaches you what a typical OS installer does for you under the hood,
and frankly, it's not as hard and scary as it sounds like.
I have gone through this process multiple times before, and based on
that, you'll get the idea on how to make your own FreeBSD installer.

If you mean package installer, then that's even easier, since all an
installer shall do in this case is move files to their appropriate
directories, and create directories + set file permissions if necessary.
--
lain.
PGP public key: https://fair.moe/lain.asc
Juraj Lutter
2024-07-09 19:57:07 UTC
Permalink
Hi,
Post by Alfonso Sabato Siciliano
Hello,
* A configuration file with variables, hooks, comments and examples.
Could you also look on how a “JumpStart” in Solaris works? That would be a good way to
make an unattended and highly customizable installations.


Juraj Lutter
***@FreeBSD.org



--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
lain.
2024-07-10 08:28:32 UTC
Permalink
Post by Alfonso Sabato Siciliano
Hello,
Not really sure what you exactly mean by "installer".
If you mean OS installer, I'd say play around with Linux distributions
that require you manually installing everything, like CRUX for example.
It teaches you what a typical OS installer does for you under the hood,
and frankly, it's not as hard and scary as it sounds like.
I have gone through this process multiple times before, and based on
that, you'll get the idea on how to make your own FreeBSD installer.

If you mean package installer, then that's even easier, since all an
installer shall do in this case is move files to their appropriate
directories, and create directories + set file permissions if necessary.
--
lain.
PGP public key: https://fair.moe/lain.asc
Tomoaki AOKI
2024-07-10 09:18:58 UTC
Permalink
On Tue, 9 Jul 2024 16:51:31 +0200
Post by Alfonso Sabato Siciliano
Hello,
I am going to write an installer *for me*. Of course it will be open source.
Perhaps it can be useful for others: tips, new ideas, and collaborations are
welcome. I know others have something in progress, if we match some
requirements
we can share some components/code.
* Guidelines: simple, modularized and extendable.
* Server (backend) side written in lua, modularized in scripts. Independent
of
any frontend.
* A configuration file with variables, hooks, comments and examples.
* Multi-mode installation: Automatic, Simple, and Expert.
* Client (Graphic) side responsible only for drawing dialogs/windows.
- TUI. Similar to bsdinstall with new features.
- File. Settings are read from file(s).
- CLI. Suitable for a screen reader for vision-impairments users. This is a
feature request.
- GUI.
- WEB. TBD (I am not a web-expert, lua seems to provide some option for
web programming).
* A menu to select: frontend, mode, and other options, at start-up.
* Frontends have to be totally separated from the server, eventually to be
easily added/deleted/changed/improved in the future. They could be
designed
and developed mainly for the installer, neither to be compatible with
other
tools nor to be general purpose.
- Navigation. New buttons: [Restart], [Prev], and [Next].
- Multi language.
- Dialogs for help, at start-up and during installation (F1 or [Help]
button).
- Options for color blind and low vision users. This is a feature request.
- Final step to install a desktop environment.
- Final step to install pkgs for accessibility. This is a feature request.
- Synchronous. The server waits the user input from the dialog, then it
performs the "command".
- 2-steps. Frontend writes the user input to files. When the frontend
finishes
(showing all the dialogs) the server performs the actual installation by
reading files.
- Noninteractive. No user actions, server reads previously written files.
- TBD a mix of the above.
* Server <-> client communication: lua layer, files, and TBD server web.
* Logging and debug features similar to bsdinstall with extensions.
* Provide bsdinstall variables and configuration files. Ideally these
features
will be placed in the "centralized" configuration file above.
- All/most bsdinstall variables with extensions.
- All/most bsdinstall configuration files (or compliant solutions).
* A menu to select bsdinstall or this installer at start-up.
* Extras & TBD. sade extensions (feature request), pkgbase, and so on.
(I'll create a git repository and a wiki page with the Roadmap. The plan is
detaching bsdinstall from bsdconfig, then rewriting the scripts in lua.)
Again, to avoid any misunderstanding: this is a personal project, bsdinstall
will not be touched. I plan to end by 6-8 months providing a port with the
installer and a script to create the iso.
Thanks in advance for any reply.
Best regards,
Alfonso
Hi.

Maybe you'd better starting from porting existing bsdinstall.
It would already have some parts of your requirement, and
others wouldn't fit.
For anything fit your requirement, the logic behind would be usable.
Because resulting (installed) configurations should almost 100% match,
unless you are planning to introduce new mechanism.

Note that my only use-cases of bsdinstall is just to kick live
installation to fix broken installation, not using for actual
installations. (Last time I've used base installer for actual
installation was pre-bsdinstall era, sysinstall.)
--
Tomoaki AOKI <***@dec.sakura.ne.jp>


--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
Loading...