From 7c5ad3ffbc911867c0787b9b27f3c0cb0c522f7c Mon Sep 17 00:00:00 2001 From: stefan230 Date: Sat, 29 Feb 2020 15:02:50 +0100 Subject: [PATCH] add preseed-file for Linux Mint ISO and a shell script to create a custom Linux Mint ISO --- mint/computertruhe.seed | 76 +++++++++++++++++++++++++++++++++++ mint/linux_mint_custom_iso.sh | 38 ++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 mint/computertruhe.seed create mode 100755 mint/linux_mint_custom_iso.sh diff --git a/mint/computertruhe.seed b/mint/computertruhe.seed new file mode 100644 index 0000000..ca5db57 --- /dev/null +++ b/mint/computertruhe.seed @@ -0,0 +1,76 @@ +# My working preseed file for LinuxMint 18 Cinnamon + +d-i debian-installer/locale string de_DE +d-i localechooser/supported-locales de_DE.UTF-8 +d-i keyboard-configuration/xkb-keymap select de +d-i keyboard-configuration/layoutcode string de + +d-i debian-installer/splash boolean false +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string de +d-i console-setup/variantcode string + +### Partitioning +# If the system has free space you can choose to only partition that space. +# This is only honoured if partman-auto/method (below) is not set. +#d-i partman-auto/init_automatically_partition select biggest_free + +# Alternatively, you may specify a disk to partition. If the system has only +# one disk the installer will default to using that, but otherwise the device +# name must be given in traditional, non-devfs format (so e.g. /dev/sda +# and not e.g. /dev/discs/disc0/disc). +# For example, to use the first SCSI/SATA hard disk: +#d-i partman-auto/disk string /dev/sda +# In addition, you'll need to specify the method to use. +# The presently available methods are: +# - regular: use the usual partition types for your architecture +# - lvm: use LVM to partition the disk +# - crypto: use LVM within an encrypted partition +#d-i partman-auto/method string regular + +# You can choose one of the three predefined partitioning recipes: +# - atomic: all files in one partition +# - home: separate /home partition +# - multi: separate /home, /var, and /tmp partitions +#d-i partman-auto/choose_recipe select atomic + +#d-i partman/default_filesystem string ext3 +#d-i partman/choose_partition select finish + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +#d-i partman-lvm/device_remove_lvm boolean true +# The same applies to pre-existing software RAID array: +#d-i partman-md/device_remove_md boolean true +# And the same goes for the confirmation to write the lvm partitions. +#d-i partman-lvm/confirm boolean true +#d-i partman-lvm/confirm_nooverwrite boolean true + +# Just in case, the positive answer to all other imagineable conformation questions: +#d-i partman-partitioning/confirm_write_new_label boolean true +#d-i partman/confirm boolean true +#d-i partman/confirm_nooverwrite boolean true +#d-i partman/confirm_write_new_label boolean true +#d-i partman-md/confirm boolean true + +# Time +d-i time/zone string Europe/Berlin +d-i clock-setup/utc boolean true +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# LinuxMint will *demand* a user during installation, ignoring the value +# of the passwd/make-user flag, so we need to provide the user data here. +# You should not preseed the password in clear text, this is just an example! +d-i passwd/user-fullname string user +d-i passwd/username string user +d-i passwd/user-password-crypted password $6$8Wk7hOnUGc1ffBRY$nefXDPeChvZGK3B/bA4Hzv91sOU8IqmXE4IJATV.BRFtaWJtBQqJKtBQO.e092nf4Jg1.4L2TH5TaLtFy02x1. +d-i passwd/user-password-again password $6$8Wk7hOnUGc1ffBRY$nefXDPeChvZGK3B/bA4Hzv91sOU8IqmXE4IJATV.BRFtaWJtBQqJKtBQO.e092nf4Jg1.4L2TH5TaLtFy02x1. +d-i passwd/root-login boolean false +d-i user-setup/encrypt-home boolean false +d-i user-setup/allow-password-weak boolean true + + +# Use non-free packages +ubiquity ubiquity/use_nonfree boolean true diff --git a/mint/linux_mint_custom_iso.sh b/mint/linux_mint_custom_iso.sh new file mode 100755 index 0000000..760dafd --- /dev/null +++ b/mint/linux_mint_custom_iso.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +#the script needs superuser rights to work correctly for now. +#TO DO: maybe there is a way for the script to work as non-root? +[[ $UID -ne 0 ]] && exec sudo ./"$0" + +#creates some folders that are used during the process. These can be changed, but needed be to changed across the script. +mkdir /mnt/iso /opt/mintiso + +#Downloads latest* mint-iso from the fh-aachen mirror. +#TO DO: Maybe there is a way to use a more generic url here? As it stands now the url has to be changed when a new Linux Mint version is released down the line. Maybe variables are a possibility? +wget http://mirror.bauhuette.fh-aachen.de/linuxmint-cd/stable/19.3/linuxmint-19.3-cinnamon-64bit.iso + +#mounts the downloaded iso into a folder. * is added as a wildcard for the version number. +mount -o loop linuxmint-*-cinnamon-64bit.iso /mnt/iso + +#the contents of the iso have to be copied over to another folder, since the ISO is mounted read-only. all the steps below require root. +cp -rT /mnt/iso/ /opt/mintiso/ +cd /opt/mintiso/ + +#copies the computertruhe.seed from codeberg-repo so always the latest preseed-file is used. +curl https://codeberg.org/stefan230/Setup-Skripte/raw/branch/master/mint/computertruhe.seed > /opt/mintiso/preseed/computertruhe.seed + +#configures the bootloader to use the "custom" computertruhe-preseed. +sed -i 's/linuxmint.seed/computertruhe.seed/g' isolinux/isolinux.cfg + +#creates the custom-iso with the given parameters. +#TO DO: the outputpath right now is not generic enough. Maybe find a better name for the iso. +mkisofs -D -r -V "UNATTENDED_MINT" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /home/stefan/linuxmint-unattended.iso /opt/mintiso + +#umounts the iso and clears up the space we used to create the iso. +umount /mnt/iso +cd +rm -r /mnt/iso/ +rm -r /opt/mintiso/ + +#from here we are basically done and the iso can be "burned" on an USB ready for install. +echo "Die Custom ISO wurde fertiggestellt und kann nun verwendet werden. Die ISO ist unter /home/stefan/linuxmint-unattended.iso zu finden."