diff options
-rwxr-xr-x | adelie-build-cd | 93 | ||||
-rw-r--r-- | adelie-build-cd.8 | 60 |
2 files changed, 72 insertions, 81 deletions
diff --git a/adelie-build-cd b/adelie-build-cd index aa2464a..465bd02 100755 --- a/adelie-build-cd +++ b/adelie-build-cd @@ -33,37 +33,37 @@ fatal() { ensure_commands() { if ! type apk>/dev/null 2>/dev/null; then - fatal - printf 'You must have apk installed. On Gentoo, see sys-devel/apk-tools.\n' - exit -1 + fatal + printf 'You must have apk installed. On Gentoo, see sys-devel/apk-tools.\n' + exit -1 fi if ! type cpio>/dev/null 2>/dev/null; then - fatal - printf 'You must have cpio installed. On Gentoo, see app-arch/cpio.\n' - exit -1 + fatal + printf 'You must have cpio installed. On Gentoo, see app-arch/cpio.\n' + exit -1 fi if ! type mksquashfs>/dev/null 2>/dev/null; then - fatal - printf 'You must have mksquashfs installed. On Gentoo, see sys-fs/squashfs-tools.\n' - exit -1 + fatal + printf 'You must have mksquashfs installed. On Gentoo, see sys-fs/squashfs-tools.\n' + exit -1 fi if ! type xorriso>/dev/null 2>/dev/null; then - fatal - printf 'You must have xorriso installed:\n\n' + fatal + printf 'You must have xorriso installed:\n\n' printf '* cdrkit (Alpine, Gentoo) will not generate a usable PPC ISO.\n' printf '* wodim (Debian) will not generate a usable PPC64 ISO.\n' printf '* cdrtools (Schily) will overrun the PPC64 ISO and write junk to grubcore.img.\n' printf '\nSorry, but xorriso really is required.\n' - exit -1 + exit -1 fi } usage() { - printf 'usage: %s [-a ARCH] [-f|--full] [-p|--phase PHASE] [-v VERSION] [--help]\n\n' $PROGNAME + printf 'usage: %s [-a ARCH] [-f|--full] [-k|--kind KIND] [-p|--phase PHASE] [-v VERSION] [--help]\n\n' $PROGNAME printf 'Create an Adélie Linux CD image (.ISO) using the specified parameters.\n\n' printf 'Default ARCH: %s\n' $def_arch printf 'Default VERSION: %s\n' $def_ver @@ -73,38 +73,43 @@ usage() { while [ -n "$1" ]; do case $1 in - -a | --arch) - shift - declare -r MY_ARCH=$1 - ;; - -h | --help) - usage - exit - ;; - -f | --full) - declare -r DO_FULL=full - ;; - -p | --phase) - shift - declare -r MY_PHASE=$1 - ;; - -s | --sign) - declare -r SIGN=yes - ;; - -v | --version) - shift - declare -r MY_VER=$1 - ;; - *) - usage >&2 - exit -1 - ;; + -a | --arch) + shift + declare -r MY_ARCH=$1 + ;; + -h | --help) + usage + exit + ;; + -f | --full) + declare -r DO_FULL=full + ;; + -k | --kind) + shift + declare -r MY_KIND=$1 + ;; + -p | --phase) + shift + declare -r MY_PHASE=$1 + ;; + -s | --sign) + declare -r SIGN=yes + ;; + -v | --version) + shift + declare -r MY_VER=$1 + ;; + *) + usage >&2 + exit -1 + ;; esac shift done set -a declare -r ARCH=${MY_ARCH:-$def_arch} +declare -r KIND=${MY_KIND:-live} declare -r LDARCH=${LDARCH:-$ARCH} declare -r PHASE=${MY_PHASE:-all} declare -r VERSION=${MY_VER:-$def_ver} @@ -140,6 +145,7 @@ install_pkgs() { declare -r PACKAGES=$(cat packages 2>/dev/null || fatal 'No core packages specified') declare -r ARCH_PKGS=$(cat packages-$ARCH 2>/dev/null || echo '') + declare -r KIND_PKGS=$(cat packages-$KIND 2>/dev/null || echo '') mkdir -p squashroot-$ARCH/etc/apk/keys cp 'packages@adelielinux.org.pub' squashroot-$ARCH/etc/apk/keys/ @@ -151,7 +157,7 @@ install_pkgs() { apk --arch $ARCH \ -X "$URL/system/$EXTRA_MIRROR" \ -X "$URL/user/$EXTRA_MIRROR" \ - -U --root squashroot-$ARCH --initdb add $PACKAGES $ARCH_PKGS + -U --root squashroot-$ARCH --initdb add $PACKAGES $ARCH_PKGS $KIND_PKGS } make_structure() { @@ -177,6 +183,13 @@ make_structure() { squashroot-$ARCH/etc/runlevels/boot/$bootservice done + if [ -f services-$KIND ]; then + for service in $(cat services-$KIND 2>/dev/null || echo ''); do + ln -s /etc/init.d/$service \ + sqaushroot-$ARCH/etc/runlevels/default/$service + done + fi + cat >squashroot-$ARCH/etc/fstab <<- FSTAB # Welcome to Adélie Linux. # This fstab(5) is for the live media only. Do not edit or use for your installation. diff --git a/adelie-build-cd.8 b/adelie-build-cd.8 index 98651b6..26489d2 100644 --- a/adelie-build-cd.8 +++ b/adelie-build-cd.8 @@ -1,45 +1,41 @@ -.Dd August 13, 2017 +.Dd February 02, 2020 .Dt ADELIE-BUILD-CD 8 SMM .Os "Adélie Linux" - - .Sh NAME .Nm adelie-build-cd .Nd create an Adélie Linux live CD image or install media - - .Sh SYNOPSIS .Nm .Op Fl a Ar ARCH .Op Fl f +.Op Fl k Ar KIND .Op Fl p Ar PHASE .Op Fl s .Op Fl v Ar VERSION - - .Sh DESCRIPTION .Nm creates a live CD image or installer CD image for Adélie Linux using .Xr apk 8 and .Xr mkisofs 8 . - .Bl -tag -width "-v VERSION" -offset indent -compact .It Fl a Ar ARCH You may specify any architecture available in the Adélie repository for .Ar ARCH ; however, some architectures may require you to have additional utilities -present on your system to be made bootable. Specifically, x86 and x86_64 -require -.Xr syslinux 1 -to be installed. This defaults to the currently running system's architecture -as reported by +present on your system to be made bootable. This defaults to the currently +running system's architecture as reported by .Xr uname 1 . .It Fl f Specifies that a full installation image should be created, including a .Pa packages/ directory containing .apk files that can be used for an offline install. If this flag is not specified, a live image will be created instead. +.It Fl k Ar KIND +Specifies the 'kind' of image creation to make. This defaults to the 'live' +kind. Kinds are similar to a Fedora 'spin'; see the +.Sy Kinds +section. .It Fl p Ar PHASE Specifies the phase of image creation to make as specified in the .Sy Phases @@ -57,10 +53,7 @@ suite of utilities to be available. .It Fl v Ar VERSION Specifies the version of Adélie Linux to use for the created ISO. .El - - .Ss Phases - The .Nm utility defines the following phases for @@ -68,7 +61,6 @@ utility defines the following phases for which can be run independently, or can be run in order by specifying the special .Sy all phase. - .Bl -tag -width "install" -offset indent -compact .It clean Erase all temporary files. Typically required for predictable build results. @@ -93,10 +85,17 @@ Run all of the above phases in the above order. This is the default if .Fl p is not specified. .El - - +.Ss Kinds +Kinds are a specific set of packages and optional startup scripts that define +a specific 'kind' of CD image. Official Kinds include Horizon, KDE Live, and +MATE Live. You can specify your own by creating a +.Pa packages-$KIND +file containing the names of packages you wish (one per line). Additionally, +you may optionally create a +.Pa services-$KIND +file containing the names of services to start up in the default runlevel (one +per line). .Sh ENVIRONMENT - .Bl -tag -width "EXTRA_MIRROR" -offset indent -compact .It Ev Sy LDARCH If the musl ld library file is different from the apk arch (such as ppc vs @@ -113,10 +112,7 @@ Use a custom URL for downloading. This does not change the URLs written to For instance, a speedy way to generate a testing ISO on a builder would be to specify MY_URL=/srv/packages. .El - - .Sh FILES - .Bl -ohang -width "iso-params-$ARCH" -offset indent -compact .It Pa iso-params-$ARCH A list of additional parameters to provide to @@ -139,40 +135,22 @@ If this file exists and is executable, it will be run just before .Xr mkisofs 8 to do any final preparation to the disc root before creating the image. .El - - .Sh EXAMPLES - adelie-build-cd -a x86_64 .Pp LDARCH=powerpc adelie-build-cd -a ppc .Pp EXTRA_MIRROR=i525 LDARCH=i386 SIGNING_KEY=/etc/portage/adelie.key ./build-cd -a x86 - - .Sh SEE ALSO - .Xr mksquashfs 1 , .Xr apk 8 , .Xr mkisofs 8 . - - .Sh HISTORY - The .Nm command first appeared during the 1.0 ALPHA1 phase. It is written in portable .St -p1003.2a-92 shell language. Any deviation from the standard should be considered a bug. - - .Sh AUTHORS - .An A. Wilcox .Aq awilfox@adelielinux.org - - -.Sh BUGS - -There is no way to specify packages that should only be included on a full disc -or live disc. All disc types have the same packages installed. |