Date: Fri, 16 Jul 2021 13:28:20 -0700 From: Yang Zhong via freebsd-arch <freebsd-arch@freebsd.org> To: freebsd-arch@freebsd.org Subject: Experimental FreeBSD installer work Message-ID: <CABKYNzZmTRpocizdUeDyCLsLEGWRscAaHBkPbtwGV0QBMeAsxg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
For the past several weeks as part of my internship at the FreeBSD Foundation, I've been working on an experimental FreeBSD installer. It's intended to test out several different ideas. Here is a repository for the installer itself, with screenshots: https://github.com/yangzhong-freebsd/lua-httpd, and a repository for a live ISO containing the installer: https://yangzhong-freebsd/ISO. Right now, the installer is very rough, but can handle installs with basic configuration options. It would be very helpful for me if you try using the installer and give feedback on the process. The most prominent feature of this installer is that it uses a graphical, web interface. It works by running a server from the installation medium; you configure and execute the install through a browser on localhost. This work was started by Ryan Moeller: https://gitlab.com/freqlabs/lua-httpd/-/tree/freebsd-install, and my installer work adds on to it. Another possible benefit of this interface is that it could support a 'remote install' option where the server runs on the target machine, but you configure the install over a network from some other computer. I haven=E2=80=99t done much work or research on this idea, so I don=E2=80= =99t have many concrete things to say here. The remote-install version of the installer would be different in several ways: for instance, the keymap configuration would no longer be changing the keymap in the actual install interface. There are some other problems that I=E2=80=99ve noted bu= t not explored, such as the problem of sending passwords over the internet. An installation in this installer proceeds as follows: The user completes a configuration form in the browser and the backend writes the configuration to a text file. When the user clicks the final install button, the installer runs a program that converts that config file into one that bsdinstall accepts, and then runs bsdinstall with that script. I'm also thinking about improvements that can be made to the user-friendliness of the installer. From what I've read and discussed with others about, more automatic configuration would make a big improvement to the installation process. There are several ways this could be achieved: Ed Maste suggested a choice of 'pre-set' configurations, designed for different use cases. This page explores this idea, calling them 'profiles': www.wonkity.com/~wblock/docs/html/installers.html. As for future work, here are some problems I have with this installer's current design: 1. bsdinstall offers many different ways to configure partitions, one way being to open a terminal and manually do it. This works because bsdinstall does the partitioning immediately after partitions have been configured. In the experimental installer, the partitioning options get written to the configuration file, and everything is done at the end, all at once. It doesn't seem possible to offer the manual partitioning option while keeping this property of the experimental installer. 2. Because the keymap configurator in the installer sets keymap on demand, it sets the X keymap but not the console one. I intend to add the option to install a graphical environment in the installer, but haven't done that work yet. So, if you change the layout, it'll be set for the rest of the installation process, but not in the final installed system which boots to the console. There does not seem to be a straightforward way to map X keymap/variant options to console keymap layouts. While this is not an enormous problem, I'd like to come up with a good way to configure both layouts at the same time, especially because I use a non-standard layout myself. 3. This is less of a concrete issue, but I feel is a problem with operating system installers in general. I'm a fairly new FreeBSD user, and I've experienced this situation several times: I would want to configure some setting on my machine and I'd recall that this setting was an option in bsdinstall, so it must be possible, but I don't know how bsdinstall does it. It feels like the installer does a lot of convenient things that then have to be 're-discovered' once you start using the operating system post-install. To help with this, I'd like the installer to have a 'teaching' component to it, where each option has some text describing how the installer actually does the configuration. I think something like that would help new users understand that the installer isn't magic, it's just running simple commands for most configuration options. Something like that would certainly have helped me. 4. Things like setting the date and time could also benefit from a more automatic process. Selecting a timezone is one of the more convoluted parts of the current installer, as it first asks you the cryptic "Is your hardware clock set to UTC?" question, and then makes you go down some deeply nested menus. There are several web-based timezone selection interfaces where you simply pick your location on a world map, though the ones I've tried have not been very good. The installer could also geolocate your timezone using your IP address. --- As you can see, the installer is nowhere near ready for serious use, and is currently more of a testing ground for a bunch of interesting ideas. I said this earlier, but I'd appreciate any testing of the installer as it is, as I have not tested it myself very comprehensively. I'd also like to hear any of your thoughts on the direction of this work, or any ideas on installer design/implementation in general. Finally, the installer doesn't yet have a name, so let me know if you can think of a fitting name for it.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABKYNzZmTRpocizdUeDyCLsLEGWRscAaHBkPbtwGV0QBMeAsxg>