====== GRML ======
===== GRML 2022.11 customize USB boot =====
It is possibile to automatically customize the GRML environment at boot, so it become possibile to:
* Load a localized keyboard mapping.
* Define some aliases.
* Install some additional packages from the net or from the USB stick.
* Keep some SSH RSA keys to access remote hosts.
* Keep some scripts to be run.
The process is composed of the following steps:
- Create the USB boot stick from the **GRML ISO image**.
- Create a **new GRMLCFG partition** into the USB stick.
- Customize the GRML environment at your will and create a **config.tbz**. Copy the file into the new partition.
- Create a **scripts/** directory into the partition containing the scripts to be run at boot.
==== Create the USB stick from the ISO image ====
Download the ISO image from the **[[https://grml.org/download/|GRML Download Page]]**. As the root user copy the file into an empty USB stick (in the following example the kernel assigned the name ''/dev/sdc'' to it):
dd bs=4M status=progress conv=fdatasync if=grml64-full_2022.11.iso of=/dev/sdc
==== Create a new partition into the USB stick ====
Boot your PC using the newly crate GRML USB stick. The image supports the UEFI boot.
I had to use the **fdisk** tool to create a new partition into the GRML USB stick, because the ''parted'' program was unable to properly detect the partitions schema:
fdisk --wipe never /dev/sdc
The option **%%--wipe never%%** is required because the device contains an **iso9660 signature** that otherwise will be removed by the write command.
Using the **n** key to **add a new partition** it is possible to create the ''/dev/sdc3'' partition, which I decided to size at 5 Gb. Select **p** (//print the partition table//) and **w** (//write table to disk and exit//) to finalize the partitioning, using the following schema as a reference:
Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 0 1751039 1751040 855M 0 Empty
/dev/sdc2 596 8787 8192 4M ef EFI (FAT-12/16/32)
/dev/sdc3 1751040 12236799 10485760 5G 83 Linux
Now format the new partition using an ext4 filesytem:
mkfs.ext4 -F -F -L GRMLCFG /dev/sdc3
The double option **-F** is required because the system thinks that the whole device is in use and cannot be formatted. The special label **GRMLCFG** is required because GRML at boot searches for a device with that label and load the configuration from it.
==== Customize the environment and save the config.tbz ====
Now it is time to customize your environment; check the **[[https://grml.org/config/grml-autoconfig.1.html|grml-autoconfig]]** man page about the options to automatically install **Debs**, **Configuration** and **Scripts** into a freshly booted GRML environment.
You can for example:
* Generate an SSH RSA key running the **ssh-keygen** utility. The key will be saved into ''$HOME/.ssh/''.
* Customize the shell by editing the **$HOME/.zsrc** file, e.g. by adding alias commands, customizing the **PATH** or other environment variables. etc.
* Run and configure some programs that will save preferences into the **$HOME/**, e.g. the Midnight Commander **mc** will save its files into ''$HOME/.config/mc/''.
* Create an ''$HOME/config/'' directory and place what you want in it. You will find that directory again at the next boot.
At the end of the customization, run the GRML command:
save-config -all
A file named **config.tbz** will be saved into the current directory. The file is a //grml configuration archive//, which may contains several components: hidden files from the ''$HOME'' directory, modified files from the ''/etc/'' directory, etc.
Mount the custom partition and copy the file into its root directory:
mkdir /mnt/grmlcfg
mount /dev/sdc3 /mnt/grmlcfg
cp -p config.tbz /mnt/grmlcfg
If you want to modify the **config.tbz** archive without re-creating it via the ''save-config'' command, you can extract the archive and then re-create it:
mkdir config
cd config
tar jxvf ../config.tbz
# Do whatever you need to the extracted files...
mv ../config.tbz ../config.bak.tbz
tar jcvf ../config.tbz *
==== Add scripts and other files to the USB ====
If you want to have some scripts run at bootstrap by GRML, create a **script/** directory into the root of the custom USB partition, and place the scripts into it. During the execution of the script the partition will be mounted under **/mnt/grmlcfg/**.
You can place also files into the partition, so e.g. you can install additional deb packages on-the-fly.
====== Obsolete ======
:!: **WARNING**: The following notes were taken in 2018 and may be out of date.
===== Boot via PXE =====
Vedere [[pxe_boot]].
===== Installazione da Live-CD =====
Vedere [[install]].
===== Personalizzazione =====
La partizione VFAT quando il sistema live è avviato, risulta accessibile sotto **''/lib/live/mount/medium/''**.
La via più comoda di avere una GRML personalizzata è passare il parametro **''netconfig=server/archivio.tar.bz2''** al boot prompt. L'archivio viene scompattato subito dopo l'avvio a partire dalla directory radice, ovviamente è necessario che la macchina abbia accesso alla rete.
In alternativa è possibile creare una partizione opportuna sulla chiavetta USB oppure sul disco fisso, impostare su di essa la label **''GRMLCFG''** e metterci dentro l'archivio **''config.tbz''**.
Altri parametri di boot utili:
* ''lang=it''
* ''netconfig=10.0.1.253/grml/gca-$ARCH.tar.bz2''
* ''ssh=maidiremai''
* ''debs=*.deb''
Per impostare dei parametri //boot prompt// **permanenti** sulla chiavetta USB è sufficiente seguire le istruzioni **[[https://grml.org/config/grml-autoconfig.1.html|Permanently adjust boot parameters]]**. In pratica è sufficiente creare una directory **bootparams** nella directory radice della chiavetta e creare un file con nome a piacere che contenga i //boot parameters// desiderati, su una sola riga separati da spazi.
===== grml2usb =====
Con il tool **''grml2usb''** (omonimo pacchetto Debian) è possibile copiare una .ISO GRML su chiavetta USB. A differenza di **''unetbootin''** in questo caso è possibile specificare una serie di parametri per personalizzare il boot. Ecco un esempio:
grml2usb --bootoptions="lang=it ssh=mysecret" /home/niccolo/Downloads/grml_2011.05.iso /dev/sdb1
La partizione VFAT (**sdb1** nell'esempio) deve essere montata.
I parametri sono documentati in **[[http://grml.org/cheatcodes/]]**. Durante la creazione della chiavetta USB vengono scritti in numerosi file di configurazione nella directory **''/boot/''**.
===== Pacchetti aggiuntivi =====
Gran parte dei pacchetti aggiuntivi possono essere installati direttamente dal repository Debian. Quello usato dalla versione 2013.02 ad esempio è:
**''%%http://snapshot.debian.org/archive/debian/20130226/testing/main%%''**
Per installare automaticamente un pacchetto al bootstrap, basta creare una directory **''debs/''** nella radice della partizione VFAT e copiarci i file .deb. Quindi si aggiunge il parametro di boot (eventualmente anche sulla riga di comando di ''grlm2usb'', vedi sopra):
debs=*.deb
====== Web References ======
* [[https://grml.org/online-docs/grml-config.html|grml-config]]
* [[https://grml.org/config/grml-autoconfig.1.html|grml-autoconfig]]
* [[http://grml.org/cheatcodes/|CHEATCODES AND HINTS FOR GRML]]