summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.rst47
-rw-r--r--CONTRIBUTING.rst26
-rw-r--r--Makefile38
-rw-r--r--README.rst123
4 files changed, 228 insertions, 6 deletions
diff --git a/AUTHORS.rst b/AUTHORS.rst
new file mode 100644
index 0000000..0eebdea
--- /dev/null
+++ b/AUTHORS.rst
@@ -0,0 +1,47 @@
+===============
+Archiso Authors
+===============
+
+* Aaron Griffin <aaron@archlinux.org>
+* Adam Purkrt <adam@purkrt.net>
+* Chandan Singh <cks071g2@gmail.com>
+* Charles Vejnar <ce@vejnar.org>
+* Christian Hesse <mail@eworm.de>
+* Christopher Brannon <cmbrannon79@gmail.com>
+* Dan McGee <dan@archlinux.org>
+* David Runge <dvzrv@archlinux.org>
+* David Thurstenson <thurstylark@gmail.com>
+* Dieter Plaetinck <dieter@plaetinck.be>
+* Eli Schwartz <eschwartz@archlinux.org>
+* Florian Pritz <bluewind@xinu.at>
+* Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>
+* Gerhard Brauer <gerbra@archlinux.de>
+* James Sitegen <jamesm.sitegen@gmail.com>
+* Justin Kromlinger <hashworks@archlinux.org>
+* Keshav Amburay <the.ridikulus.rat@gmail.com>
+* Loui Chang <louipc.ist@gmail.com>
+* Lukas Fleischer <archlinux@cryptocrack.de>
+* Martin Damian Fernandez <martin.damian.fernandez@gmail.com>
+* Pierre Schmitz <pierre@archlinux.de>
+* Sean Enck <enckse@voidedtech.com>
+* Simo Leone <simo@archlinux.org>
+* Steffen Bönigk <boenki@gmx.de>
+* Sven-Hendrik Haase <sh@lutzhaase.com>
+* Thomas Bächler <thomas@archlinux.org>
+* Yu Li-Yu <afg984@gmail.com>
+* nl6720 <nl6720@gmail.com>
+* Øyvind Heggstad <heggstad@gmail.com>
+
+===================
+Parabolaiso Authors
+===================
+
+* Andreas Grapentin <andreas@grapentin.org>
+* André Fabian Silva Delgado <emulatorman@parabola.nu>
+* David P <megver83@parabola.nu>
+* Drtan Samos <drtan@lavabit.com>
+* Esteban Carnevale <alfplayer@mailoo.org>
+* Jorge Lopez <jorginho@riseup.net>
+* bill-auger <mr.j.spam.me@gmail.com>
+* chandan <cks071g2@gmail.com>
+* coadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu>
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 0000000..53ee73a
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,26 @@
+============
+Contributing
+============
+
+These are the contribution guidelines for parabolaiso.
+All contributions fall under the terms of the GPL-3.0-or-later (see `LICENSE <LICENSE>`_).
+
+Editorconfig
+============
+
+A top-level editorconfig file is provided. Please configure your text editor to use it.
+
+Linting
+=======
+
+All ash and bash scripts are linted using shellcheck:
+
+ .. code:: bash
+
+ make lint
+
+Testing
+=======
+
+Contributors are expected to test their contributions by building the releng profile and running the resulting image
+using `run_parabolaiso <scripts/run_parabolaiso.sh>`_.
diff --git a/Makefile b/Makefile
index 7dd4e36..7cfdda6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,6 @@
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
V=$(shell git describe --exact-match)
INSTALL_FILES=$(wildcard parabolaiso/initcpio/install/*)
@@ -8,17 +11,41 @@ INSTALL_DIR=$(DESTDIR)/usr/lib/initcpio/install
HOOKS_DIR=$(DESTDIR)/usr/lib/initcpio/hooks
SCRIPT_DIR=$(DESTDIR)/usr/lib/initcpio
-DOC_FILES=$(wildcard docs/*)
+DOC_FILES=$(wildcard docs/*) $(wildcard *.rst)
DOC_DIR=$(DESTDIR)/usr/share/doc/parabolaiso
all:
-install: install-program install-initcpio install-examples install-doc
+check: lint
+
+lint:
+ shellcheck -s bash parabolaiso/mkparabolaiso \
+ scripts/run_parabolaiso.sh \
+ $(INSTALL_FILES) \
+ $(wildcard configs/*/build.sh) \
+ configs/releng/airootfs/root/.automated_script.sh \
+ configs/releng/airootfs/usr/local/bin/choose-mirror \
+ configs/releng-openrc/airootfs/root/.automated_script.sh \
+ configs/releng-openrc/airootfs/etc/local.d/pacman-init.start \
+ configs/releng-openrc/airootfs/etc/NetworkManager/dispatcher.d/reflector \
+ configs/lxde-openrc/airootfs/root/.automated_script.sh \
+ configs/lxde-openrc/airootfs/root/.keymap.sh \
+ configs/lxde-openrc/airootfs/root/.language.sh \
+ configs/lxde-openrc/airootfs/etc/local.d/pacman-init.start \
+ configs/lxde-openrc/airootfs/etc/NetworkManager/dispatcher.d/reflector \
+ configs/talkingparabola/airootfs/root/.automated_script.sh \
+ configs/talkingparabola/airootfs/usr/bin/livecd-alsa-unmuter \
+ configs/talkingparabola/airootfs/usr/bin/pick-a-card \
+ configs/talkingparabola/airootfs/usr/bin/talk-to-me
+ shellcheck -s dash $(HOOKS_FILES) $(SCRIPT_FILES)
+
+install: install-program install-examples install-doc
install-program:
- install -D -m 755 parabolaiso/mkparabolaiso $(DESTDIR)/usr/bin/mkparabolaiso
+ install -vDm 755 parabolaiso/mkparabolaiso -t "$(DESTDIR)/usr/bin/"
+ install -vDm 755 scripts/run_parabolaiso.sh "$(DESTDIR)/usr/bin/run_parabolaiso"
install-initcpio:
install -d $(SCRIPT_DIR) $(HOOKS_DIR) $(INSTALL_DIR)
@@ -31,8 +58,7 @@ install-examples:
cp -a --no-preserve=ownership configs $(DESTDIR)/usr/share/parabolaiso/
install-doc:
- install -d $(DOC_DIR)
- install -m 644 -t $(DOC_DIR) $(DOC_FILES)
+ install -vDm 644 $(DOC_FILES) -t $(DOC_DIR)
dist:
git archive --format=tar --prefix=parabolaiso-$(V)/ $(V) | gzip -9 > parabolaiso-$(V).tar.gz
@@ -41,4 +67,4 @@ dist:
upload:
scp parabolaiso-$(V).tar.gz parabolaiso-$(V).tar.gz.sig repo.parabola.nu:/srv/repo/main/other/parabolaiso
-.PHONY: install install-program install-initcpio install-examples install-doc dist upload
+.PHONY: check install install-program install-initcpio install-examples install-doc lint dist upload
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..7b1b6e7
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,123 @@
+===========
+parabolaiso
+===========
+
+The parabolaiso project features scripts and configuration templates to build installation media (*.iso* images) for BIOS
+and UEFI based systems on the x86_64 and i686 architectures.
+Currently creating the images is only supported on Parabola GNU/Linux-libre.
+
+Requirements
+============
+
+The following packages need to be installed to be able to create an image with the included scripts:
+
+* arch-install-scripts
+* dosfstools
+* e2fsprogs
+* libisoburn
+* squashfs-tools
+
+For running the images in a virtualized test environment the following packages are required:
+
+* edk2-ovmf
+* qemu
+
+For linting the shell scripts the following package is required:
+
+* shellcheck
+
+Profiles
+========
+
+parabolaiso comes with the following profiles: **baseline**, **releng**, **releng-openrc**, **lxde-openrc** and **talkingparabola**.
+They can be found below `configs/baseline/ <configs/baseline/>`_, `configs/releng/ <configs/releng/>`_,
+`configs/releng-openrc/ <configs/releng-openrc/>`_, `configs/lxde-openrc/ <configs/lxde-openrc/>`_, `configs/talkingparabola/ <configs/talkingparabola/>`_
+(respectively). Profiles are defined by files to be placed into overlays (e.g. *airootfs* -> *the image's /*) and
+dynamic actions (i.e. *build.sh* scripts).
+
+Create images
+=============
+
+Usually the parabolaiso tools are installed as a package. However, it is also possible to clone this repository and create
+images without installing parabolaiso system-wide.
+
+As filesystems are created and various mount actions have to be done when creating an image, **root** is required to run
+the scripts.
+
+When parabolaiso is installed system-wide and the modification of a profile is desired, it is necessary to copy it to a
+writeable location, as */usr/share/parabolaiso* is tracked by the package manager and only writeable by root (changes will
+be lost on update).
+
+The examples below will assume an unmodified profile in a system location (unless noted otherwise).
+
+It is advised to check the help information of the **build.sh** scripts in the profiles:
+
+ .. code:: bash
+
+ /usr/share/parabolaiso/configs/releng/build.sh --help
+
+Create images with packaged parabolaiso
+---------------------------------------
+
+ .. code:: bash
+
+ /usr/share/parabolaiso/configs/releng/build.sh -w path/to/work_dir -o path/to/out_dir
+
+Create images with local clone
+------------------------------
+
+Clone this repository and make sure to run with the local `mkparabolaiso <parabolaiso/mkparabolaiso>`_ script in *PATH* (if it has
+been modified):
+
+ .. code:: bash
+
+ PATH="parabolaiso:$PATH" ./configs/releng/build.sh -w path/to/work_dir -o path/to/out_dir
+
+Testing
+=======
+
+The convenience script **run_parabolaiso** is provided to boot into the medium using qemu.
+It is advised to read its help information:
+
+ .. code:: bash
+
+ run_parabolaiso -h
+
+Run the following to boot the iso using BIOS:
+
+ .. code:: bash
+
+ run_parabolaiso -i path/to/an/parabola.iso
+
+Run the following to boot the iso using UEFI:
+
+ .. code:: bash
+
+ run_parabolaiso -i path/to/an/parabola.iso -u
+
+The script can of course also be executed from this repository:
+
+
+ .. code:: bash
+
+ ./scripts/run_parabolaiso.sh -i path/to/an/parabola.iso
+
+Installation
+============
+
+To install parabolaiso system-wide use the included **Makefile**:
+
+ .. code:: bash
+
+ make install
+
+Optionally install parabolaiso's mkinitcpio hooks:
+
+ .. code:: bash
+
+ make install-initcpio
+
+License
+=======
+
+parabolaiso is licensed under the terms of the **GPL-3.0-or-later** (see `LICENSE <LICENSE>`_).