This is the BSD Installer project from [[SummerOfCode2005|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 * [[ftp://ftp.freebsd.org/pub/FreeBSD/SOC2005/bsdinstaller/6.0-BSDINSTALLER-BETA-1-i386.iso|ISO]] * 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 * [[ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/bsdinstaller/7.0-20060512-BSDINSTALLER-i386-disc1.iso|ISO]] * 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%%? * 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. ===== Links ===== * [[http://www.bsdinstaller.org|The BSD Installer]] * [[http://cvs.bsdinstaller.org/cgi-bin/cvsweb.cgi/|BSD Installer CVSweb]] * [[http://fubar.geek.nz/blog/|My Blog]]