This is the BSD Installer project from SummerOfCode2005
Integrate BSD Installer into the FreeBSD install CD's
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)
- Can only install to one drive, can't have / on ad0 and /usr on ad1
See also BSDInstaller/PrepareDisk
- 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
- Released 2005-12-11
- Based on the newer Lua backend
- Fixes since BETA 2 release
- 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
- 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
- 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
- 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
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
- libaura - devel/libaura
- libdfui - devel/libdfui
- ncurses front end - devel/dfuife_curses
- Other frontends - Not yet
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 are only installable from the first CD.
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.