X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=docs%2Fgrml-live.txt;h=639ad88a8ec8da9595e975292ba4c2e4801c60d5;hp=25c2b47aba00ad2b9e0629d7bbdf7c386623e04c;hb=HEAD;hpb=1aec7397965ee3164b455cfb763bcc936f65377e diff --git a/docs/grml-live.txt b/docs/grml-live.txt index 25c2b47..46f4890 100644 --- a/docs/grml-live.txt +++ b/docs/grml-live.txt @@ -43,8 +43,7 @@ completely independent at the same time! Please notice that you should have a fast network connection as all the Debian packages will be downloaded and installed via network. If you want to use a local mirror (strongly recommended if you plan to use grml-live more than once) -checkout mkdebmirror (see /usr/share/doc/grml-live/examples/mkdebmirror), -debmirror(1), reprepro(1) (see /usr/share/doc/grml-live/examples/reprepro/ for a +checkout debmirror(1), reprepro(1) (see /usr/share/doc/grml-live/examples/reprepro/ for a sample configuration), apt-cacher(1) and approx(8). To avoid downloading the base system again and again check out <>. @@ -63,8 +62,8 @@ Use the specified architecture instead of the currently running one. This allows building a 32bit system on a 64bit host (though you can't build a 64bit system on a 32bit system/kernel of course). Please notice that real crosscompiling (like building a ppc system on x86) isn't possible due to the -nature and the need of working in a chroot. Currently supported values: i386 -and amd64. +nature and the need of working in a chroot. Currently supported values: i386, +amd64 and arm64. -b:: @@ -83,13 +82,11 @@ really know that you do not want to update the chroot. -c **CLASSES**:: Specify the CLASSES to be used for building the ISO via FAI. By default only -the classes GRMLBASE, GRML_FULL and I386/AMD64 (depending on system -architecture) are assumed, resulting in a base system of about 350MB -total ISO size. If using a non-I386 system (like AMD64) you should specify the -appropriate architecture as well. Additionally you can specify a class providing -a grml-kernel (see <> for -details about available classes). So instead of GRML_FULL you can also use -GRML_SMALL and GRML_FULL. +the classes GRMLBASE, GRML_FULL and I386/AMD64/ARM64 (depending on system +architecture) are assumed. Additionally you can specify a class providing a +(grml-)kernel (see <> for +details about available classes). So instead of GRML_FULL you can also use e.g. +GRML_SMALL. [IMPORTANT] All class names should be written in uppercase letters. Do not use a dash, use @@ -205,7 +202,7 @@ Specify name of the release. Specify the Debian suite you want to use for your live-system. If unset defaults to "testing". Supported values are: stable, testing, unstable (or their -corresponding release names like "jessie"). Please be aware that recent Debian +corresponding release names like "bookworm"). Please be aware that recent Debian suites might require a recent base.tgz (${GRML_FAI_CONFIG}/config/basefiles/$CLASSNAME.tar.gz) or a recent version of debootstrap. @@ -256,7 +253,7 @@ Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process. Usage examples -------------- -To get a Debian-stable and Grml-based Live-CD using /grml/grml-live +To get a Debian-stable and Grml-based Live-CD using ./grml as build and output directory just run: # grml-live @@ -300,9 +297,9 @@ losing the simplicity in the build process. The main and base class provided by grml-live is named GRMLBASE. It's strongly recommended to **always** use the class GRMLBASE when building an ISO using grml-live, as well as the architecture dependent class which provides the kernel -(being 'I386' for x86_32 and 'AMD64' for x86_64) and a GRML_* class (like -GRML_SMALL or GRML_FULL). The following files and directories are -relevant for class GRMLBASE by default: +(being 'I386' for x86_32, 'AMD64' for x86_64 and 'ARM64' for arm64) and a GRML_* +class (like GRML_SMALL or GRML_FULL). +The following files and directories are relevant for class GRMLBASE by default: ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/ ${GRML_FAI_CONFIG}/config/debconf/GRMLBASE @@ -315,10 +312,10 @@ files/directories. If you want to use your own configuration, extend an existing configuration and/or add additional packages to your ISO just invent a new class (or extend an -existing one). For example if you want to use your own class named "FOOBAR" just -set CLASSES="GRMLBASE,GRML_SMALL,AMD64,FOOBAR" inside /etc/grml/grml-live.local -or invoke grml-live using the classes option: "grml-live -c -GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...". +existing one). For example if you want to use your own class named "FOOBAR" on +your amd64 build, et CLASSES="GRMLBASE,GRML_SMALL,AMD64,FOOBAR" inside +/etc/grml/grml-live.local or invoke grml-live using the classes option: +"grml-live -c GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...". More details regarding the class concept can be found in the documentation of FAI itself (being available at /usr/share/doc/fai-doc/). @@ -333,15 +330,14 @@ ${GRML_FAI_CONFIG}/config/package_config whereas some further classes are define example in ${GRML_FAI_CONFIG}/config/scripts/ so specific feature sets can be selected. The following classes are predefined: -* DEBORPHAN: get rid of all packages listed in output of deborphan - -* FILE_RC: instead of using systemd as init system use file-rc instead. file-rc -was the init system used by Grml until and including stable release 2014.11, -starting with beginning of 2016 Grml switched to systemd instead. If you want to -build a live system in the old style using file-rc instead of systemd then enable -this class. Please notice that support for file-rc is no longer being actively -maintained (the Grml team happily accepts patches though) and file-rc (upstream -wise) might disappear too. +* DEBORPHAN: get rid of "autoremove" and "removed-but-not-yet-purged" packages; +also all packages listed in output of deborphan (only if deborphan is actually +present, note that grml-live no longer installs deborphan by default as it's not +present since Debian/trixie!). This class is called as such for historic +reasons, and while deborphan itself is no longer relevant nowadays, the name of +the class was kept as such for backwards compatibility reasons. This class is +thought to be used *before* any further `GRML*` classes, like +`DEBORPHAN,GRMLBASE,GRML_FULL,RELEASE,...` to get proper Grml releases. * FRESHCLAM: execute freshclam (if it's present) to update clamav definitions (increases resulting ISO size ~70MB). By default it's skipped to avoid bigger @@ -350,12 +346,18 @@ ISO size. * GRMLBASE: the main class responsible for getting a minimal subset of what's defining a Grml system. Important parts of the buildprocess are specified in this class as well, so unless you have a really good reason you should always -use this class. +use this class. Please be aware that using *just* the GRMLBASE class won't be +enough, because the kernel packages (e.g. linux-image-pass:[*]) are chosen in +further GRML_pass:[*] classes (to provide maximum flexibility with kernel +selection). If you don't want to use the existing GRML_FULL or GRML_SMALL +classes, define your own CLASS file choosing the kernel package you want to use +(and don't forget to include your CLASS in the arguments of grml-live's `-c...` +command line option). * GRML_FULL: full featured Grml, also known as the "normal", full grml as -introduced in December 2011 (~460MB ISO size). +introduced in December 2011 (~750 ISO size). -* GRML_SMALL: minimum sized Grml version, known as grml-small (~230MB ISO +* GRML_SMALL: minimum sized Grml version, known as grml-small (~360MB ISO size). * LATEX: LaTeX(-related) packages like auctex, texlive,... @@ -383,6 +385,8 @@ placed in the output directory under grml_sources. * XORG: providing important packages for use with a base grml-featured X.org setup +* ZFS: package selection to add support for OpenZFS/zfsonlinux + [[files]] Files ----- @@ -448,7 +452,7 @@ installation process. Directory with lists of software packages to be installed or removed. The different classes describe what should find its way to your ISO. When running "grml-live -c GRMLBASE,GRML_SMALL,AMD64 ..." only the configuration of GRMLBASE, -GRML_SMALL and and AMD64 will be taken. If you use 'grml-live -c +GRML_SMALL and AMD64 will be taken. If you use 'grml-live -c GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL, AMD64 **plus** the files from FOOBAR will be taken. So just create a new class to adjust the package selection according to your needs. Please notice that the @@ -483,15 +487,19 @@ please send us a bug report then). Check out <> for details how to set up grml-live on a plain, original Debian system. -* enough free disk space; at least 800MB are required for a minimal grml-live -run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target -[$BUILD_OUTPUT] and \~150MB for the resulting ISO [$ISO_OUTPUT] plus some -temporary files), if you plan to use GRML_FULL you should have at least 4GB of -total free disk space +* enough free disk space; at least ~2GB are required for a minimal grml-live +run (\~1GB for the chroot [$CHROOT_OUTPUT], \~400MB for the build target +[$BUILD_OUTPUT], \~35MB for the netboot files and \~350MB for the resulting ISO +[$ISO_OUTPUT] plus some temporary files), if you plan to use GRML_FULL you +should have at least 4GB of total free disk space * fast network access for retrieving the Debian packages used for creating the chroot (check out "local mirror" to workaround this problem as far as possible) +* your output directory should not be mounted with any of the "nodev", "noexec" +or "nosuid" mount options. (/tmp typically is at least "nodev" and "nosuid" on +most systems.) + For further information see next section. [[X8]] @@ -514,9 +522,9 @@ The easiest way to get a running grml-live setup is to just use Grml. Of course using grml-live on a plain, original Debian installation is supported as well. So there we go. -What we have: plain, original Debian jessie (8.x). +What we have: plain, original Debian bookworm (v12). -What we want: build a Grml ISO based on Debian/jessie for the amd64 architecture +What we want: build a Grml ISO based on Debian/bookworm for the amd64 architecture using grml-live. Instructions @@ -535,7 +543,7 @@ Instructions EOF # get keyring for apt: - apt-get update + apt-get -o Acquire::AllowInsecureRepositories=true update apt-get --allow-unauthenticated install grml-debian-keyring # optionally(!) install basefile so we don't have to build basic @@ -543,6 +551,7 @@ Instructions # mkdir -p /etc/grml/fai/config/basefiles/ # mv I386.tar.gz /etc/grml/fai/config/basefiles/ # mv AMD64.tar.gz /etc/grml/fai/config/basefiles/ + # mv ARM64.tar.gz /etc/grml/fai/config/basefiles/ # install relevant tools apt-get --no-install-recommends install grml-live @@ -556,9 +565,9 @@ Instructions # SQUASHFS_BINARY='/usr/bin/mksquashfs' ## install local files into the chroot # CHROOT_INSTALL="/etc/grml/fai/chroot_install" - ## adjust if necessary (defaults to /grml/grml-live): + ## adjust if necessary (defaults to ./grml/): ## OUTPUT="/srv/grml-live" - FAI_DEBOOTSTRAP="jessie http://ftp.debian.org/debian/" + FAI_DEBOOTSTRAP="bookworm http://deb.debian.org/debian/" # ARCH="amd64" CLASSES="GRMLBASE,GRML_FULL,AMD64" EOF @@ -604,6 +613,12 @@ If you need help with grml-live or would like to see new features as part of grml-live you can get commercial support via link:http://grml-solutions.com/[Grml Solutions]. +Note that FAI doesn't abort immediately on errors that will ultimately cause +the build to fail. Be sure to look through the logs and find the actual error; +look for lines that start with "E: " or contain "FAILED" or "exit code 1". +Some messages that may look like errors are actually benign; e.g. +"/tmp/grml64/grml_chroot/var/lib/dpkg is not a mounted ramdisk" is not an error. + [[install-local-files]] How do I install further files into the chroot/ISO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -675,7 +690,7 @@ FAI_DEBOOTSTRAP: [...] APT_PROXY="http://localhost:3142/" [...] - FAI_DEBOOTSTRAP="jessie http://localhost:3142/ftp.debian.org/debian jessie main contrib non-free" + FAI_DEBOOTSTRAP="bookworm http://localhost:3142/ftp.debian.org/debian bookworm main contrib non-free" Make sure apt-cacher-ng is running ('/etc/init.d/apt-cacher-ng restart'). That's it. All downloaded files will be cached in /var/cache/apt-cacher-ng then. @@ -684,38 +699,41 @@ That's it. All downloaded files will be cached in /var/cache/apt-cacher-ng then How do I revert the manifold feature from an ISO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The so called manifold feature Grml ISOs use by default allows one to use the same -ISO for CD boot and USB boot. If you notice any problems when booting just -revert the manifold feature running: +By default, Grml ISOs use isohybrid to allow them to be booted from CDs as +well as USB sticks. Manifold is an alternative to isohybrid. + +If you notice any problems +when booting manifold-crafted media, just revert the manifold feature running: % dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc To switch from manifold to isohybrid mode (an alternative approach provided by -syslinux) then just execute: +syslinux, used by default for official Grml images) then just execute: % isohybrid grml.iso [[create-a-base-tgz]] -How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz or ARM64.tar.gz) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [[basetgz]] First of all create the chroot using debootstrap (requires root): BASECHROOT='/tmp/basefile' # path where the chroot gets generated - SUITE='jessie' # using the current stable release should always work - debootstrap --exclude=info,tasksel,tasksel-data "$SUITE" "$BASECHROOT" http://ftp.debian.org/debian - tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf "${SUITE}".tar.gz ./ + SUITE='bookworm' # using the current stable release should always work + debootstrap --exclude=info,tasksel,tasksel-data,isc-dhcp-client,isc-dhcp-common "${SUITE}" "${BASECHROOT}" http://deb.debian.org/debian + tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' --exclude 'var/lib/apt/lists/*_*' --xattrs --xattrs-include='*.*' --acls -zcf "${SUITE}".tar.gz ./ [TIP] By default debootstrap builds a chroot matching the architecture of the running host system. If you're using an amd64 system and want to build an i386 base.tgz then invoke debootstrap using the '--arch i386' option. Disclaimer: building an AMD64 base.tgz won't work if you are using a 32bit kernel system of course. +Also building an ARM64 base.tgz requires an arm64 system. Finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note that it needs to be uppercase letters matching the class names, so: e.g. -AMD64.tar.gz for amd64 and I386.tar.gz for i386). +AMD64.tar.gz for amd64, I386.tar.gz for i386 or ARM64.tar.gz for arm64). Then executing grml-live should use this file as base system instead of executing debootstrap. Check out the output for something like: @@ -809,6 +827,7 @@ Usage example: # export GRML_FAI_CONFIG=$(pwd)/etc/grml/fai # export SCRIPTS_DIRECTORY=$(pwd)/scripts + # export TEMPLATE_DIRECTORY=$(pwd)/templates # ./grml-live -s sid -a amd64 -c GRMLBASE,GRML_FULL,AMD64 [[source]]