This is the BSD Installer project from SummerOfCode2005
Project Name
Integrate BSD Installer into the FreeBSD install CD's
Synopsis
Integrating the BSD Installer into the FreeBSD release building process.
Building from Perforce
- Checkout the perforce tree
- cd to the scripts directory
- Copy the config.txt.eg to config.txt
- Change the variables to be correct for your system:
- PATCH_DIR is a directory where the patches are placed
- SRC_DIR is the location of the source code for the version of FreeBSD you are currently running
- BUILDNAME, CVSROOT and CHROOTDIR are to be set as for release(7)
- Run 'sh build_patch.sh'. This will create a patch, a script and tarballs to be used with LOCAL_PATCHES and LOCAL_SCRIPT during release
- The current release Makefile has extra changes. The first two chunks need to be removed or the new release Makefile needs to be intergrated.
- The release/Makefile needs to be patched to export the -DBSDINSTALLER to the child script. There is a patch in the scripts directory for RELENG_6 for rev. 1.853.2.16
- Run 'sh build_release.sh'. This will run 'make buildworld' in SRC_DIR from config.txt followed by 'cd release' and 'make release -DBSDINSTALLER ...'
- This dosn't add any packages to the ISO image. The BSD Installer can install them if you add them later (eg. rerelease)
Bugs
- Can only install to one drive, can't have / on ad0 and /usr on ad1
See also BSDInstaller/PrepareDisk
Releases
BETA 1
- Released 2005-07-29
- Based on the older C backend
- Fixes since BETA 1 release
- The backend has been changed to use the newer Lua version after change 82899
BETA 2
- Released 2005-12-11
- Based on the newer Lua backend
- Fixes since BETA 2 release
Snapshot 2006-05-12
- Released 2006-05-15
- Fixes since snapshot 2006-05-12
- This is a list of open questions/wants/problems with this release of the BSDInstaller on FreeBSD
- Change partition editor to allow setting the start offset of a fdisk slice
- Will it support PPPoE?
- Add support for dangerously dedicated disks? - No
- Will it support installing on multiple disks? - No
- Add a dialog to explain slices and partitions
- Does it support hotkeys bound to interface elements like sysinstall - Yes, eg. Esc is bound to back in many (all?) interfaces
Todo
- Install to multiple disks
- Create a scriptable backend for large scale installations
- Install on GVinum, GMirror, etc
- Update the building instructions to show how to install packages
Details
Parts
- Lua - All installed form packages.
- Lua 5.0 - The newer BSDInstaller backend is written in Lua. Lua is interpreted so will need to be on the install CD's
- compat-5.1 - Required as the BSDInstaller uses it
- posix - Used to call posix functions
- luasocket - Used to send emails when a problem is encountered
- BSDInstaller
- libaura - Required for libdfui and frontend
- libdfui - Required to communicate between backend and frontend
- backend - The actual work is done by this to install FreeBSD. Not installed from a package
- ncurses frontend - Provide interaction with the user
Installation locations
libaura -> /usr/local/lib/libaura3.so
libdfui -> /usr/local/lib/libdfui4.so
liblua -> /usr/local/lib/liblua.so
liblualib -> /usr/local/lib/liblualib.so
Lua -> /usr/local/bin/lua
lua modules -> /usr/local/lib/lib/lua/5.0/ and /usr/local/lib/share/lua/5.0/
BSDInstaller backend -> /usr/libexec/bsdinstaller/
ncurses frontend -> /usr/sbin/bsd_installer_ncurses
The Lua modules are all in the ports tree. The Lua modules are:
- app - devel/lua50-app
- compat-5.1 - devel/lua50-compat51
- dfui - devel/lua50-dfui
- filename - devel/lua50-filename
- luasocket - net/luasocket
- posix - devel/lua50-posix
- pty - devel/lua50-pty
Other parts:
- libaura - devel/libaura
- libdfui - devel/libdfui
- ncurses front end - devel/dfuife_curses
- Other frontends - Not yet
Virtual consoles
There are three virtual consoles:
- ttyv0: The frontend
- ttyv1: The backend
- ttyv2: A standard login screen to login as root with no password.
To see the installation log change to console ttyv1. It is also written to /var/log/install.log on the installed disk.
Packages
Packages are only installable from the first CD.
Architecture
BSD Installer is split into three main parts:
- A Frontend to display the menu to the user.
- A Backend to tell the Frontend what to display.
- A library to get the Frontend and Backend talking to each other.
The BSD Installer is installed from a minimal live CD. The front and back ends run from separate virtual consoles. This is to display any output from the backend to the console, eg. the results of newfs.