Menu

Tree [4901ea] master /
 History

HTTPS access


File Date Author Commit
 .gitignore 2016-02-28 Ting-Wei Lan Ting-Wei Lan [f17821] Ignore common source and output directories
 LICENSE 2018-01-23 Ting-Wei Lan Ting-Wei Lan [664603] Update copyright year in license text
 README.asciidoc 2018-01-24 Ting-Wei Lan Ting-Wei Lan [ac4681] Fix the link to AvgLiveCD
 build-debug.sh 2019-05-30 Ting-Wei Lan Ting-Wei Lan [4901ea] Fix most warnings reported by shellcheck
 build-release.sh 2019-05-30 Ting-Wei Lan Ting-Wei Lan [4901ea] Fix most warnings reported by shellcheck
 build.sh 2019-05-30 Ting-Wei Lan Ting-Wei Lan [4901ea] Fix most warnings reported by shellcheck
 gnome-debug-pkgs 2018-01-23 Ting-Wei Lan Ting-Wei Lan [d25c19] Add Google Noto fonts and fix fontconfig cache
 gnome-release-pkgs 2018-01-23 Ting-Wei Lan Ting-Wei Lan [d25c19] Add Google Noto fonts and fix fontconfig cache
 init.sh.in 2019-05-30 Ting-Wei Lan Ting-Wei Lan [4901ea] Fix most warnings reported by shellcheck
 loader.conf 2018-01-17 Ting-Wei Lan Ting-Wei Lan [c6d6ab] Force-enable graphics mode of vt
 rc.conf 2014-07-17 Ting-Wei Lan Ting-Wei Lan [caf6d4] Initial commit - import sources for the first r...

Read Me

= Build your own FreeBSD LiveCD


This project provides a simple and easy-to-understand script that can be used
to build a LiveCD for FreeBSD. The implementation is largely based on
https://wiki.freebsd.org/AndriyGapon/AvgLiveCD[AvgLiveCD] article written by
https://wiki.freebsd.org/AndriyGapon[Andriy Gapon].

Unlike most other scripts to automate the process of building LiveCD, it
doesn't try to hide the complexity behind a fancy user interface. Instead,
users can easily configure steps needed to run and see commands run in each
step. Modification and debugging is very easy once you know how to use it.

It is called "FreeBSD GNOME LiveCD" because it was originally made to test
and preview the next version of GNOME. There is no GNOME-specific things in
the script, and it can be used to build LiveCD for any other environments.


== Prepare required sources and tools
 - Install `sysutils/cdrtools` to get `mkisofs` program.

-----------------------------------------------------------------------
   pkg install sysutils/cdrtools
-----------------------------------------------------------------------

 - Download and build FreeBSD source code of the version you want to use.

-----------------------------------------------------------------------
   svn co https://svn.freebsd.org/base/head freebsd-base
   cd freebsd-base
   make buildworld buildkernel
-----------------------------------------------------------------------

 - Get a local copy of the pkgng repository you want to use. You can build
   your own repository with programs like `poudriere`.

-----------------------------------------------------------------------
   poudriere jail ...
   poudriere ports ...
   poudriere bulk ...
-----------------------------------------------------------------------

== Set required variables
 - The build script read configuration from shell variables.
 - Create a copy of `build-release.sh` or `build-debug.sh` and set the
   following required variables in it:
  * `src`: path to FreeBSD source code.
  * `repo`: path to pkgng repository.
  * `pkgs`: list of packages to be installed.
  * `image`: path to the output LiveCD image.
  * `vol`: volume name of the output LiveCD image.
  * `root`: empty directory used to prepare the root filesystem.
  * `cdroot`: empty directory used to prepare files on LiveCD.

== Run the script
 - Remember to set environment variables like `MAKEOBJDIRPREFIX` if you use
   it during build of FreeBSD source code.
 - Run the script you created in the previous part to start the build. It will
   read the real build script `build.sh` and execute commands in it.
 - The build process is split into several steps, so a failed step can be
   restarted without re-run the complete build process. Choose "Run" to do
   all steps or choose "Edit" to enter steps you want to run.

== Possible future improvement
 - An easy way to set the size of memory disk without interrupting the boot.
 - Allow using prebuilt binaries to install base.
 - Allow using `freebsd-update` to apply binary patches.
 - Support memory stick. Use FAT32, UFS, or ext2 instead of ISO9660.
 - Support GRUB2 to enable booting multiple operating systems on single medium.
 - Support UEFI boot.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.