This is an old revision of the document!
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
- [http://perforce.freebsd.org/chv.cgi?CH=81195 Fixed spelling in Distributions screen]
- [http://perforce.freebsd.org/chv.cgi?CH=81232 Fix dhclient and Sendmail]
- [http://perforce.freebsd.org/chv.cgi?CH=81274 Explain how to get to a shell]
- [http://perforce.freebsd.org/chv.cgi?CH=81323 Save dmesg.boot to be viewed later]
- [http://perforce.freebsd.org/chv.cgi?CH=81330 Install the source dists]
- [http://perforce.freebsd.org/chv.cgi?CH=81331 Remove “Setup NetBoot Install Services”]
- [http://perforce.freebsd.org/chv.cgi?CH=81383 Add a kernel without PREEMPTION for Qemu and Vmware]
- [http://perforce.freebsd.org/chv.cgi?CH=81440 Install the ports tree if asked to]
- [http://perforce.freebsd.org/chv.cgi?CH=82814 Install packages from /usr/packages]
- [http://perforce.freebsd.org/chv.cgi?CH=82892 Select package dependencies]
- [http://perforce.freebsd.org/chv.cgi?CH=82899 Stop a repeatable segmentation fault]
- 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
- [http://perforce.freebsd.org/chv.cgi?CH=88060 Multiple fixes (see description)]
- [http://perforce.freebsd.org/chv.cgi?CH=88142 Allow boot1 to be used rather than boot0]
- [http://perforce.freebsd.org/chv.cgi?CH=88143 Remove unused options from the Select Task menu]
- [http://perforce.freebsd.org/chv.cgi?CH=88144 Remove two references to /README that imply there are install instructions there]
- [http://perforce.freebsd.org/chv.cgi?CH=88438 Rename the bsd_lua → bsdlua, libbsd_lua.so → libbsdlua.so, libbsd_lualib.so → libbsdlualib.so and install the header files]
Snapshot 2006-05-12
- Released 2006-05-15
- Fixes since snapshot 2006-05-12
- [http://perforce.freebsd.org/chv.cgi?CH=97242 Rename the FreeBSD/DragonFly slice type to FreeBSD]
- [http://perforce.freebsd.org/chv.cgi?CH=97243 Rename “Ports tree” to “Ports collection”]
- [http://perforce.freebsd.org/chv.cgi?CH=97611 Start the first partition on a slice at offset 16]
- [http://perforce.freebsd.org/chv.cgi?CH=97849 Replace “this disk” with the disk name, Change “formatted” → “created”, Change “primary partition” to “install partition”]
- 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?
- Will it support FTP/NFS/HTTP installs?
- 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
Todo
- Install from network
- 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.
Links
- [http://www.bsdinstaller.org The BSD Installer]
- [http://cvs.bsdinstaller.org/cgi-bin/cvsweb.cgi/ BSD Installer CVSweb]
- [http://meonstuff.blogspot.com/ My Blog]