commit
d4e544edac
@ -0,0 +1,18 @@ |
||||
The MIT-Zero License |
||||
|
||||
Copyright (c) 2020 Meliurwen |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
THE SOFTWARE. |
@ -0,0 +1,60 @@ |
||||
|
||||
|
||||
```sh |
||||
wget -O debian-netinst.iso http://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/mini.iso |
||||
``` |
||||
```sh |
||||
wget -O debian-netinst.iso http://ftp.debian.org/debian/dists/sid/main/installer-amd64/current/images/netboot/mini.iso |
||||
``` |
||||
|
||||
wget -O debian-netinst.iso https://d-i.debian.org/daily-images/amd64/daily/netboot/mini.iso |
||||
|
||||
wget -O debian-netinst.iso http://ftp.debian.org/debian/dists/unstable/main/installer-amd64/current/images/netboot/mini.iso |
||||
|
||||
|
||||
``` |
||||
systemctl stop wpa_supplicant |
||||
systemctl disable wpa_supplicant |
||||
``` |
||||
|
||||
``` |
||||
systemctl disable wpa_supplicant && apt-get purge -qq dbus && apt-get autoremove --purge -qq && apt-get clean -qq |
||||
``` |
||||
|
||||
## Guides |
||||
|
||||
+ Unattended Install |
||||
+ https://wiki.debian.org/DebianInstaller/Preseed/EditIso |
||||
+ https://haydenjames.io/direct-install-debian-sid-rolling-release-using-mini-iso-w-screenshots/ |
||||
+ https://nx3d.org/ubuntu-1804-preseed/ |
||||
+ https://wiki.debian.org/DebianInstaller/Preseed |
||||
+ https://wiki.debian.org/DebianInstaller/Remote |
||||
+ https://gist.github.com/zuzzas/a1695344162ac7fa124e15855ce0768f |
||||
+ https://wiki.debian.org/ManipulatingISOs#Remaster_an_Installation_Image |
||||
+ https://www.debian.org/CD/faq/ |
||||
+ https://github.com/thblt/dotfiles |
||||
+ https://wiki.debian.org/ReduceDebian#Remove_unnecessary_kernel_modules |
||||
+ https://www.debian.org/releases/stretch/amd64/ch05s03.html.en |
||||
+ https://wiki.debian.org/KernelModuleBlacklisting |
||||
+ https://linux-audit.com/kernel-hardening-disable-and-blacklist-linux-modules/ |
||||
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=931368 |
||||
+ https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/1553147 |
||||
+ https://wiki.debian.org/AutomatedInstallation |
||||
+ https://wiki.debian.org/DebianInstaller/Preseed |
||||
+ https://www.system-rescue.org/ |
||||
+ https://www.debian.org/releases/jessie/amd64/ch05s03.html.en |
||||
+ https://www.debian.org/releases/stretch/amd64/ch05s03.html.en |
||||
+ https://wiki.debian.org/BootUsbWithGrubRescue#mini.iso |
||||
+ https://unix.stackexchange.com/questions/219994/how-to-edit-debian-installer-boot-paramaters |
||||
+ https://wiki.syslinux.org/wiki/index.php?title=Isolinux.cfg |
||||
+ https://wiki.debian.org/DebianInstaller/Remote |
||||
+ https://www.debian.org/doc/manuals/debian-handbook/sect.automated-installation.it.html |
||||
+ Minimal Install |
||||
+ https://old.reddit.com/r/debian/comments/6zya8v/debian_without_the_bloat/dmz2uhz/ |
||||
+ https://wiki.debian.org/Debootstrap |
||||
+ http://forums.debian.net/viewtopic.php?f=5&t=96146 |
||||
+ https://wiki.debian.org/Proposals/EssentialOnDiet |
||||
+ https://wiki.debian.org/BusterPriorityRequalification |
||||
+ https://wiki.debian.org/Teams/Dpkg/Spec/ProtectedField?action=show&redirect=Teams%2FDpkg%2FSpec%2FImportantField |
||||
|
||||
|
@ -0,0 +1,11 @@ |
||||
#!/bin/sh |
||||
|
||||
if [ $(id -u) -ne 0 ]; then |
||||
echo "This script should be run as root. Aborting..." > /dev/stderr |
||||
exit 1 |
||||
fi |
||||
|
||||
apt-get update |
||||
|
||||
apt-get install software-properties-common python3-pip |
||||
|
@ -0,0 +1,20 @@ |
||||
#!/bin/sh |
||||
|
||||
set -eu |
||||
|
||||
if [ $(id -u) -ne 0 ]; then |
||||
echo "This script should be run as root. Aborting..." > /dev/stderr |
||||
exit 1 |
||||
fi |
||||
|
||||
echo "Updating apt package index..." |
||||
apt-get update > /dev/null |
||||
|
||||
echo "Installing dependencies..." |
||||
apt-get -q -y -o Dpkg::Use-Pty=0 install python3-pip |
||||
|
||||
echo "Installing docker-compose via pip..." |
||||
pip3 install -q docker-compose |
||||
|
||||
echo "Done." |
||||
exit 0 |
@ -0,0 +1,64 @@ |
||||
#!/bin/sh |
||||
|
||||
set -eu |
||||
|
||||
if [ $(id -u) -ne 0 ]; then |
||||
echo "This script should be run as root. Aborting..." > /dev/stderr |
||||
exit 1 |
||||
fi |
||||
|
||||
SUPPORTED_ARCH="amd64 armhf arm64" |
||||
ARCH=$(dpkg --print-architecture) |
||||
|
||||
echo "Checking system architecture..." |
||||
if echo $SUPPORTED_ARCH | grep -w $ARCH > /dev/null; then |
||||
echo "Architecture ${ARCH} supported." |
||||
else |
||||
echo "Architecture ${ARCH} not supported! Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
# REPO SETUP |
||||
|
||||
# Update the apt package index and install packages to allow apt to use a |
||||
# repository over HTTPS: |
||||
echo "Updating apt package index..." |
||||
apt-get update > /dev/null |
||||
|
||||
echo "Installing prerequisites..." |
||||
apt-get -q -y -o Dpkg::Use-Pty=0 install \ |
||||
apt-transport-https \ |
||||
ca-certificates \ |
||||
curl \ |
||||
gnupg-agent \ |
||||
software-properties-common |
||||
|
||||
# Add Docker’s official GPG key: |
||||
echo "Adding Docker's repo key..." |
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - |
||||
|
||||
# Verify that you now have the key with the fingerprint |
||||
# 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching for the last |
||||
# 8 characters of the fingerprint. |
||||
apt-key fingerprint 0EBFCD88 |
||||
|
||||
# Use the following command to set up the stable repository. To add the |
||||
# nightly or test repository, add the word nightly or test (or both) after |
||||
# the word stable in the commands below. |
||||
echo "Adding Docker repo..." |
||||
add-apt-repository \ |
||||
"deb [arch=${ARCH}] https://download.docker.com/linux/debian \ |
||||
$(lsb_release -cs) \ |
||||
stable" |
||||
|
||||
# INSTALLATION |
||||
|
||||
# Update the apt package index, and install the latest version of Docker Engine |
||||
# and containerd, or go to the next step to install a specific version: |
||||
echo "Updating apt package index again..." |
||||
apt-get update > /dev/null |
||||
echo "Installing Docker..." |
||||
apt-get -q -y -o Dpkg::Use-Pty=0 install docker-ce docker-ce-cli containerd.io |
||||
|
||||
echo "Done." |
||||
exit 0 |
@ -0,0 +1,12 @@ |
||||
#!/bin/sh |
||||
|
||||
if [ $(id -u) -ne 0 ]; then |
||||
echo "This script should be run as root. Aborting..." > /dev/stderr |
||||
exit 1 |
||||
fi |
||||
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" |
||||
|
||||
eval "${SCRIPTPATH}/install_packages.sh" |
||||
eval "${SCRIPTPATH}/install_docker.sh" |
||||
eval "${SCRIPTPATH}/install_docker_compose.sh" |
@ -0,0 +1,467 @@ |
||||
#_preseed_V1 |
||||
#### Contents of the preconfiguration file (for buster) |
||||
### Localization |
||||
# Preseeding only locale sets language, country and locale. |
||||
#d-i debian-installer/locale string it_IT |
||||
|
||||
# The values can also be preseeded individually for greater flexibility. |
||||
d-i debian-installer/language string it |
||||
d-i debian-installer/country string IT |
||||
d-i debian-installer/locale string it_IT.UTF-8 |
||||
# Optionally specify additional locales to be generated. |
||||
#d-i localechooser/supported-locales multiselect en_US.UTF-8 |
||||
|
||||
# Keyboard selection. |
||||
# Usare Ctrl+Alt+Backspace per terminare il server X? |
||||
d-i keyboard-configuration/ctrl_alt_bksp boolean true |
||||
|
||||
d-i keyboard-configuration/modelcode string pc105 |
||||
d-i keyboard-configuration/toggle select No toggling |
||||
d-i keyboard-configuration/altgr select The default for the keyboard layout |
||||
d-i keyboard-configuration/layoutcode string it |
||||
d-i keyboard-configuration/variant select Italiana |
||||
d-i keyboard-configuration/compose select No compose key |
||||
d-i keyboard-configuration/switch select No temporary switch |
||||
d-i console-setup/variantcode string qwerty |
||||
d-i keyboard-configuration/model select Generic 105-key PC (intl.) |
||||
d-i keyboard-configuration/xkb-keymap select it |
||||
|
||||
# What a pain... after moths I have discevered that if you want this to work |
||||
# the packages "console-setup" and "keyboard-configuration" are mandatory. |
||||
# But I don't understand why since that with the manual install (with the |
||||
# preseed included) everything goes fine. |
||||
# Analyzing the `debconf-get-selections --installer` of my laptop which had |
||||
# a manual installation (without preseed included) I see this pattern that |
||||
# seems to reflect some sort of lazy hack to make only the manual install |
||||
# work as expected; basically these 4 lines below are littered around the |
||||
# preseed file in order to (I guess) to forcefully prevent the installer to |
||||
# roll back to the US layout. |
||||
d-i keyboard-configuration/unsupported_config_options boolean true |
||||
d-i keyboard-configuration/unsupported_config_layout boolean true |
||||
d-i keyboard-configuration/unsupported_layout boolean true |
||||
d-i keyboard-configuration/unsupported_options boolean true |
||||
|
||||
### Network configuration |
||||
# Disable network configuration entirely. This is useful for cdrom |
||||
# installations on non-networked devices where the network questions, |
||||
# warning and long timeouts are a nuisance. |
||||
#d-i netcfg/enable boolean false |
||||
|
||||
# netcfg will choose an interface that has link if possible. This makes it |
||||
# skip displaying a list if there is more than one interface. |
||||
d-i netcfg/choose_interface select auto |
||||
|
||||
# To pick a particular interface instead: |
||||
#d-i netcfg/choose_interface select eth1 |
||||
|
||||
# To set a different link detection timeout (default is 3 seconds). |
||||
# Values are interpreted as seconds. |
||||
#d-i netcfg/link_wait_timeout string 10 |
||||
|
||||
# If you have a slow dhcp server and the installer times out waiting for |
||||
# it, this might be useful. |
||||
#d-i netcfg/dhcp_timeout string 60 |
||||
#d-i netcfg/dhcpv6_timeout string 60 |
||||
|
||||
# If you prefer to configure the network manually, uncomment this line and |
||||
# the static network configuration below. |
||||
#d-i netcfg/disable_autoconfig boolean true |
||||
|
||||
# If you want the preconfiguration file to work on systems both with and |
||||
# without a dhcp server, uncomment these lines and the static network |
||||
# configuration below. |
||||
#d-i netcfg/dhcp_failed note |
||||
#d-i netcfg/dhcp_options select Configure network manually |
||||
|
||||
# Static network configuration. |
||||
# |
||||
# IPv4 example |
||||
#d-i netcfg/get_ipaddress string 192.168.1.42 |
||||
#d-i netcfg/get_netmask string 255.255.255.0 |
||||
#d-i netcfg/get_gateway string 192.168.1.1 |
||||
#d-i netcfg/get_nameservers string 192.168.1.1 |
||||
#d-i netcfg/confirm_static boolean true |
||||
# |
||||
# IPv6 example |
||||
#d-i netcfg/get_ipaddress string fc00::2 |
||||
#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff:: |
||||
#d-i netcfg/get_gateway string fc00::1 |
||||
#d-i netcfg/get_nameservers string fc00::1 |
||||
#d-i netcfg/confirm_static boolean true |
||||
|
||||
# Any hostname and domain names assigned from dhcp take precedence over |
||||
# values set here. However, setting the values still prevents the questions |
||||
# from being shown, even if values come from dhcp. |
||||
d-i netcfg/get_hostname string debian-test |
||||
d-i netcfg/get_domain string dominio-test |
||||
|
||||
# If you want to force a hostname, regardless of what either the DHCP |
||||
# server returns or what the reverse DNS entry for the IP is, uncomment |
||||
# and adjust the following line. |
||||
#d-i netcfg/hostname string somehost |
||||
|
||||
# Disable that annoying WEP key dialog. |
||||
d-i netcfg/wireless_wep string |
||||
# The wacky dhcp hostname that some ISPs use as a password of sorts. |
||||
#d-i netcfg/dhcp_hostname string radish |
||||
|
||||
# If non-free firmware is needed for the network or other hardware, you can |
||||
# configure the installer to always try to load it, without prompting. Or |
||||
# change to false to disable asking. |
||||
d-i hw-detect/load_firmware boolean true |
||||
|
||||
### Network console |
||||
# Use the following settings if you wish to make use of the network-console |
||||
# component for remote installation over SSH. This only makes sense if you |
||||
# intend to perform the remainder of the installation manually. |
||||
#d-i anna/choose_modules string network-console |
||||
#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key |
||||
#d-i network-console/password password r00tme |
||||
#d-i network-console/password-again password r00tme |
||||
|
||||
### Mirror settings |
||||
# If you select ftp, the mirror/country string does not need to be set. |
||||
#d-i mirror/protocol string ftp |
||||
d-i mirror/country string manual |
||||
d-i mirror/http/hostname string debian.mirror.garr.it |
||||
d-i mirror/http/directory string /debian |
||||
d-i mirror/http/proxy string |
||||
|
||||
# Suite to install. |
||||
#d-i mirror/suite string sid |
||||
# Suite to use for loading installer components (optional). |
||||
#d-i mirror/udeb/suite string sid |
||||
|
||||
### Account setup |
||||
# Skip creation of a root account (normal user account will be able to |
||||
# use sudo). |
||||
d-i passwd/root-login boolean false |
||||
# Alternatively, to skip creation of a normal user account. |
||||
#d-i passwd/make-user boolean false |
||||
|
||||
# Root password, either in clear text |
||||
#d-i passwd/root-password password r00tme |
||||
#d-i passwd/root-password-again password r00tme |
||||
# or encrypted using a crypt(3) hash. |
||||
#d-i passwd/root-password-crypted password [crypt(3) hash] |
||||
|
||||
# To create a normal user account. |
||||
d-i passwd/user-fullname string Meli |
||||
d-i passwd/username string meli |
||||
# Normal user's password, either in clear text |
||||
#d-i passwd/user-password password insecure |
||||
#d-i passwd/user-password-again password insecure |
||||
# or encrypted using a crypt(3) hash. |
||||
d-i passwd/user-password-crypted password $6$SmihMODnNymjr40/$YAkRABY.qE8tOjXmg0Z6X5e.mdLOUsUseNaPwaLyCjK17LzV/NLE3IfcmkQgwGjBeeQ7peGEfurqe.SBY7JHU1 |
||||
# Create the first user with the specified UID instead of the default. |
||||
#d-i passwd/user-uid string 1010 |
||||
|
||||
# The user account will be added to some standard initial groups. To |
||||
# override that, use this. |
||||
#d-i passwd/user-default-groups string audio cdrom video |
||||
|
||||
### Clock and time zone setup |
||||
# Controls whether or not the hardware clock is set to UTC. |
||||
d-i clock-setup/utc boolean true |
||||
|
||||
# You may set this to any valid setting for $TZ; see the contents of |
||||
# /usr/share/zoneinfo/ for valid values. |
||||
d-i time/zone string Europe/Rome |
||||
|
||||
# Controls whether to use NTP to set the clock during the install |
||||
d-i clock-setup/ntp boolean true |
||||
# NTP server to use. The default is almost always fine here. |
||||
#d-i clock-setup/ntp-server string ntp.example.com |
||||
|
||||
### Partitioning |
||||
## Partitioning example |
||||
# 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 lvm |
||||
|
||||
# You can define the amount of space that will be used for the LVM volume |
||||
# group. It can either be a size with its unit (eg. 20 GB), a percentage of |
||||
# free space or the 'max' keyword. |
||||
d-i partman-auto-lvm/guided_size string max |
||||
|
||||
# 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 |
||||
|
||||
# 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 |
||||
|
||||
# Or provide a recipe of your own... |
||||
# If you have a way to get a recipe file into the d-i environment, you can |
||||
# just point at it. |
||||
#d-i partman-auto/expert_recipe_file string /hd-media/recipe |
||||
|
||||
# If not, you can put an entire recipe into the preconfiguration file in one |
||||
# (logical) line. This example creates a small /boot partition, suitable |
||||
# swap, and uses the rest of the space for the root partition: |
||||
#d-i partman-auto/expert_recipe string \ |
||||
# boot-root :: \ |
||||
# 40 50 100 ext3 \ |
||||
# $primary{ } $bootable{ } \ |
||||
# method{ format } format{ } \ |
||||
# use_filesystem{ } filesystem{ ext3 } \ |
||||
# mountpoint{ /boot } \ |
||||
# . \ |
||||
# 500 10000 1000000000 ext3 \ |
||||
# method{ format } format{ } \ |
||||
# use_filesystem{ } filesystem{ ext3 } \ |
||||
# mountpoint{ / } \ |
||||
# . \ |
||||
# 64 512 300% linux-swap \ |
||||
# method{ swap } format{ } \ |
||||
# . |
||||
|
||||
# The full recipe format is documented in the file partman-auto-recipe.txt |
||||
# included in the 'debian-installer' package or available from D-I source |
||||
# repository. This also documents how to specify settings such as file |
||||
# system labels, volume group names and which physical devices to include |
||||
# in a volume group. |
||||
|
||||
# This makes partman automatically partition without confirmation, provided |
||||
# that you told it what to do using one of the methods above. |
||||
d-i partman-partitioning/confirm_write_new_label boolean true |
||||
d-i partman/choose_partition select finish |
||||
d-i partman/confirm boolean true |
||||
d-i partman/confirm_nooverwrite boolean true |
||||
|
||||
# When disk encryption is enabled, skip wiping the partitions beforehand. |
||||
#d-i partman-auto-crypto/erase_disks boolean false |
||||
|
||||
## Partitioning using RAID |
||||
# The method should be set to "raid". |
||||
#d-i partman-auto/method string raid |
||||
# Specify the disks to be partitioned. They will all get the same layout, |
||||
# so this will only work if the disks are the same size. |
||||
#d-i partman-auto/disk string /dev/sda /dev/sdb |
||||
|
||||
# Next you need to specify the physical partitions that will be used. |
||||
#d-i partman-auto/expert_recipe string \ |
||||
# multiraid :: \ |
||||
# 1000 5000 4000 raid \ |
||||
# $primary{ } method{ raid } \ |
||||
# . \ |
||||
# 64 512 300% raid \ |
||||
# method{ raid } \ |
||||
# . \ |
||||
# 500 10000 1000000000 raid \ |
||||
# method{ raid } \ |
||||
# . |
||||
|
||||
# Last you need to specify how the previously defined partitions will be |
||||
# used in the RAID setup. Remember to use the correct partition numbers |
||||
# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported; |
||||
# devices are separated using "#". |
||||
# Parameters are: |
||||
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \ |
||||
# <devices> <sparedevices> |
||||
|
||||
#d-i partman-auto-raid/recipe string \ |
||||
# 1 2 0 ext3 / \ |
||||
# /dev/sda1#/dev/sdb1 \ |
||||
# . \ |
||||
# 1 2 0 swap - \ |
||||
# /dev/sda5#/dev/sdb5 \ |
||||
# . \ |
||||
# 0 2 0 ext3 /home \ |
||||
# /dev/sda6#/dev/sdb6 \ |
||||
# . |
||||
|
||||
# For additional information see the file partman-auto-raid-recipe.txt |
||||
# included in the 'debian-installer' package or available from D-I source |
||||
# repository. |
||||
|
||||
# This makes partman automatically partition without confirmation. |
||||
d-i partman-md/confirm boolean true |
||||
d-i partman-partitioning/confirm_write_new_label boolean true |
||||
d-i partman/choose_partition select finish |
||||
d-i partman/confirm boolean true |
||||
d-i partman/confirm_nooverwrite boolean true |
||||
|
||||
## Controlling how partitions are mounted |
||||
# The default is to mount by UUID, but you can also choose "traditional" to |
||||
# use traditional device names, or "label" to try filesystem labels before |
||||
# falling back to UUIDs. |
||||
#d-i partman/mount_style select uuid |
||||
|
||||
### Base system installation |
||||
# Configure APT to not install recommended packages by default. Use of this |
||||
# option can result in an incomplete system and should only be used by very |
||||
# experienced users. |
||||
#d-i base-installer/install-recommends boolean false |
||||
|
||||
# The kernel image (meta) package to be installed; "none" can be used if no |
||||
# kernel is to be installed. |
||||
#d-i base-installer/kernel/image string linux-image-686 |
||||
|
||||
### Apt setup |
||||
# You can choose to install non-free and contrib software. |
||||
d-i apt-setup/non-free boolean true |
||||
d-i apt-setup/contrib boolean true |
||||
# Uncomment this if you don't want to use a network mirror. |
||||
#d-i apt-setup/use_mirror boolean false |
||||
# Select which update services to use; define the mirrors to be used. |
||||
# Values shown below are the normal defaults. |
||||
#d-i apt-setup/services-select multiselect security, updates |
||||
#d-i apt-setup/security_host string security.debian.org |
||||
|
||||
# Additional repositories, local[0-9] available |
||||
#d-i apt-setup/local0/repository string \ |
||||
# http://local.server/debian stable main |
||||
#d-i apt-setup/local0/comment string local server |
||||
# Enable deb-src lines |
||||
#d-i apt-setup/local0/source boolean true |
||||
# URL to the public key of the local repository; you must provide a key or |
||||
# apt will complain about the unauthenticated repository and so the |
||||
# sources.list line will be left commented out |
||||
#d-i apt-setup/local0/key string http://local.server/key |
||||
|
||||
# By default the installer requires that repositories be authenticated |
||||
# using a known gpg key. This setting can be used to disable that |
||||
# authentication. Warning: Insecure, not recommended. |
||||
#d-i debian-installer/allow_unauthenticated boolean true |
||||
|
||||
# Uncomment this to add multiarch configuration for i386 |
||||
#d-i apt-setup/multiarch string i386 |
||||
|
||||
|
||||
### Package selection |
||||
#tasksel tasksel/first multiselect standard, ssh-server |
||||
#tasksel tasksel/first multiselect minimal |
||||
tasksel tasksel/first multiselect none |
||||
|
||||
# Individual additional packages to install |
||||
# Note: "console-setup" and "keyboard-configuration" are foundamental for |
||||
# keyboard configuration |
||||
d-i pkgsel/include string nano wget openssh-server console-setup keyboard-configuration |
||||
# Whether to upgrade packages after debootstrap. |
||||
# Allowed values: none, safe-upgrade, full-upgrade |
||||
#d-i pkgsel/upgrade select none |
||||
|
||||
# Some versions of the installer can report back on what software you have |
||||
# installed, and what software you use. The default is not to report back, |
||||
# but sending reports helps the project determine what software is most |
||||
# popular and include it on CDs. |
||||
popularity-contest popularity-contest/participate boolean false |
||||
|
||||
### Boot loader installation |
||||
# Grub is the default boot loader (for x86). If you want lilo installed |
||||
# instead, uncomment this: |
||||
#d-i grub-installer/skip boolean true |
||||
# To also skip installing lilo, and install no bootloader, uncomment this |
||||
# too: |
||||
#d-i lilo-installer/skip boolean true |
||||
|
||||
|
||||
# This is fairly safe to set, it makes grub install automatically to the MBR |
||||
# if no other operating system is detected on the machine. |
||||
d-i grub-installer/only_debian boolean true |
||||
|
||||
# This one makes grub-installer install to the MBR if it also finds some other |
||||
# OS, which is less safe as it might not be able to boot that other OS. |
||||
d-i grub-installer/with_other_os boolean true |
||||
|
||||
# Due notably to potential USB sticks, the location of the MBR can not be |
||||
# determined safely in general, so this needs to be specified: |
||||
d-i grub-installer/bootdev string /dev/sda |
||||
# To install to the first device (assuming it is not a USB stick): |
||||
#d-i grub-installer/bootdev string default |
||||
|
||||
# Alternatively, if you want to install to a location other than the mbr, |
||||
# uncomment and edit these lines: |
||||
#d-i grub-installer/only_debian boolean false |
||||
#d-i grub-installer/with_other_os boolean false |
||||
#d-i grub-installer/bootdev string (hd0,1) |
||||
# To install grub to multiple disks: |
||||
#d-i grub-installer/bootdev string (hd0,1) (hd1,1) (hd2,1) |
||||
|
||||
# Optional password for grub, either in clear text |
||||
#d-i grub-installer/password password r00tme |
||||
#d-i grub-installer/password-again password r00tme |
||||
# or encrypted using an MD5 hash, see grub-md5-crypt(8). |
||||
#d-i grub-installer/password-crypted password [MD5 hash] |
||||
|
||||
# Use the following option to add additional boot parameters for the |
||||
# installed system (if supported by the bootloader installer). |
||||
# Note: options passed to the installer will be added automatically. |
||||
#d-i debian-installer/add-kernel-opts string nousb |
||||
|
||||
### Finishing up the installation |
||||
# During installations from serial console, the regular virtual consoles |
||||
# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next |
||||
# line to prevent this. |
||||
#d-i finish-install/keep-consoles boolean true |
||||
|
||||
# Avoid that last message about the install being complete. |
||||
d-i finish-install/reboot_in_progress note |
||||
|
||||
# This will prevent the installer from ejecting the CD during the reboot, |
||||
# which is useful in some situations. |
||||
#d-i cdrom-detect/eject boolean false |
||||
|
||||
# This is how to make the installer shutdown when finished, but not |
||||
# reboot into the installed system. |
||||
#d-i debian-installer/exit/halt boolean true |
||||
# This will power off the machine instead of just halting it. |
||||
d-i debian-installer/exit/poweroff boolean true |
||||
|
||||
### Preseeding other packages |
||||
# Depending on what software you choose to install, or if things go wrong |
||||
# during the installation process, it's possible that other questions may |
||||
# be asked. You can preseed those too, of course. To get a list of every |
||||
# possible question that could be asked during an install, do an |
||||
# installation, and then run these commands: |
||||
# debconf-get-selections --installer > file |
||||
# debconf-get-selections >> file |
||||
|
||||
|
||||
#### Advanced options |
||||
### Running custom commands during the installation |
||||
# d-i preseeding is inherently not secure. Nothing in the installer checks |
||||
# for attempts at buffer overflows or other exploits of the values of a |
||||
# preconfiguration file like this one. Only use preconfiguration files from |
||||
# trusted locations! To drive that home, and because it's generally useful, |
||||
# here's a way to run any shell command you'd like inside the installer, |
||||
# automatically. |
||||
|
||||
# This first command is run as early as possible, just after |
||||
# preseeding is read. |
||||
#d-i preseed/early_command string anna-install some-udeb |
||||
# This command is run immediately before the partitioner starts. It may be |
||||
# useful to apply dynamic partitioner preseeding that depends on the state |
||||
# of the disks (which may not be visible when preseed/early_command runs). |
||||
#d-i partman/early_command \ |
||||
# string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" |
||||
# This command is run just before the install finishes, but when there is |
||||
# still a usable /target directory. You can chroot to /target and use it |
||||
# directly, or use the apt-install and in-target commands to easily install |
||||
# packages and run commands in the target system. |
||||
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh |
||||
|
||||
d-i preseed/late_command string cp -r /cdrom/custom /target/srv/custom || cp -r /hd-media/custom /target/srv/custom || echo "boop" > /target/srv/asd.txt |
@ -0,0 +1,20 @@ |
||||
#_preseed_V1 |
||||
#### Contents of the preconfiguration file (for buster) |
||||
d-i debian-installer/language string it |
||||
d-i debian-installer/country string IT |
||||
d-i debian-installer/locale string it_IT.UTF-8 |
||||
d-i localechooser/supported-locales multiselect en_US.UTF-8 |
||||
d-i keyboard-configuration/xkb-keymap select it |
||||
|
||||
d-i netcfg/choose_interface select auto |
||||
|
||||
d-i anna/choose_modules string network-console |
||||
#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key |
||||
d-i network-console/password password r00tme |
||||
d-i network-console/password-again password r00tme |
||||
|
||||
d-i mirror/country string manual |
||||
d-i mirror/http/hostname string debian.mirror.garr.it |
||||
d-i mirror/http/directory string /debian |
||||
d-i mirror/http/proxy string |
||||
|
@ -0,0 +1,236 @@ |
||||
#!/bin/bash |
||||
|
||||
set -eu |
||||
|
||||
if [ "$#" -lt 1 ]; then |
||||
echo 'Need at least 1 parameter' |
||||
echo '-h for help' |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ "$1" = "-h" ]; then |
||||
echo '<preseedFilePath> [dist] [arch] [mode] [boot]' |
||||
echo '' |
||||
echo 'Parameters:' |
||||
echo 'seed preseed file.' |
||||
echo 'img preferred image.' |
||||
echo 'dist preferred distribution.' |
||||
echo 'arch preferred architecture.' |
||||
echo 'mode whitch mode you want to automatically launch the installer.' |
||||
echo 'boot kernel boot options' |
||||
echo '' |
||||
echo 'List of supported values for each parameter and their defaults (*):' |
||||
echo 'seed must be a valid path of an existsing file.' |
||||
echo 'img netinst, netinst-mini*.' |
||||
echo 'dist sid, stable*, unstable, stretch, testing.' |
||||
echo 'arch amd64*, arm64, armhf, i386.' |
||||
echo 'mode none*, auto, expert.' |
||||
echo 'boot must be a set of valid kernel boot options' |
||||
exit 0 |
||||
fi |
||||
|
||||
if [ -z "$1" ]; then |
||||
echo 'Parameter 1 should not be empty or not set!' |
||||
echo 'Issue a valid path of a preseed file. Aborting...' |
||||
exit 1 |
||||
else |
||||
PRESEED_PATH=$1 |
||||
fi |
||||
|
||||
if [ -z "$2" ]; then |
||||
IMAGE="netinst-mini" |
||||
fi |
||||
|
||||
if [ -z "$3" ]; then |
||||
DIST="stable" |
||||
fi |
||||
|
||||
if [ -z "$4" ]; then |
||||
ARCH="amd64" |
||||
fi |
||||
|
||||
if [ -z "$5" ]; then |
||||
MODE="none" |
||||
fi |
||||
|
||||
if [ -f "$PRESEED_PATH" ] |
||||
then |
||||
echo "Preseed file '${PRESEED_PATH}' found." |
||||
else |
||||
echo "Preseed file '${PRESEED_PATH}' not found. Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
SUPPORTED_IMAGES="netinst netinst-mini" |
||||
IMAGE=$2 |
||||
|
||||
if echo "${SUPPORTED_IMAGES}" | grep -w "${IMAGE}" > /dev/null; then |
||||
echo "Image '${IMAGE}' supported" |
||||
else |
||||
echo "Image '${IMAGE}' not supported! Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
SUPPORTED_DIST="sid stable unstable stretch testing" |
||||
DIST=$3 |
||||
|
||||
if echo "${SUPPORTED_DIST}" | grep -w "${DIST}" > /dev/null; then |
||||
echo "Dist '${DIST}' supported" |
||||
else |
||||
echo "Dist '${DIST}' not supported! Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
SUPPORTED_ARCH="amd64 armhf arm64" |
||||
ARCH=$4 |
||||
|
||||
if echo "${SUPPORTED_ARCH}" | grep -w "${ARCH}" > /dev/null; then |
||||
echo "Architecture '${ARCH}' supported" |
||||
else |
||||
echo "Architecture '${ARCH}' not supported! Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
MIRROR="http://debian.mirror.garr.it" |
||||
|
||||
if [ "$IMAGE" == "netinst-mini" ]; then |
||||
IMG_URL="${MIRROR}/debian/dists/${DIST}/main/installer-${ARCH}/current/images/netboot/mini.iso" |
||||
else |
||||
if [ "$IMAGE" == "netinst" ]; then |
||||
IMG_URL="${MIRROR}/debian-cd/current/${ARCH}/iso-cd/debian-10.6.0-${ARCH}-${IMAGE}.iso" |
||||
else |
||||
echo "An error occurred in selecting the proper image. Aborting..." |
||||
exit 1 |
||||
fi |
||||
fi |
||||
|
||||
FILE_ISO="debian-${DIST}-${ARCH}-${IMAGE}.iso" |
||||
if [ -f "${FILE_ISO}" ] |
||||
then |
||||
echo "${FILE_ISO} found." |
||||
else |
||||
echo "${FILE_ISO} not found." |
||||
echo "Downloading..." |
||||
wget -O "${FILE_ISO}" "${IMG_URL}" |
||||
fi |
||||
|
||||
SUPPORTED_MODE="none auto expert" |
||||
MODE=$5 |
||||
|
||||
if echo "${SUPPORTED_MODE}" | grep -w "${MODE}" > /dev/null; then |
||||
echo "Mode '${MODE}' supported" |
||||
else |
||||
echo "Mode '${MODE}' not supported! Aborting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
echo "Extracting..." |
||||
7z x -oisofiles "${FILE_ISO}" |
||||
|
||||
# Adding a Preseed File to the Initrd: |
||||
# You now have the directory isofiles with all the ISO's files in it. Make |
||||
# initrd.gz writable by the user, uncompress it and append a preseed file to |
||||
# the initrd. Recompress the initrd and return initrd.gz to its original |
||||
# read-only state. |
||||
|
||||
#wget -O isofiles/linux https://d-i.debian.org/daily-images/amd64/daily/netboot/debian-installer/amd64/linux |
||||
#wget -O isofiles/initrd.gz https://d-i.debian.org/daily-images/amd64/daily/netboot/debian-installer/amd64/initrd.gz |
||||
|
||||
cp "$PRESEED_PATH" preseed.cfg |
||||
|
||||
if [ "$IMAGE" == "netinst-mini" ]; then |
||||
ISOLINUX_PATH="" |
||||
|
||||
echo "Patching initrd.gz..." |
||||
gunzip isofiles/initrd.gz |
||||
echo preseed.cfg | cpio -H newc -o -A -F isofiles/initrd |
||||
gzip isofiles/initrd |
||||
|
||||
# Boot Parameters |
||||
echo "Patching boot parameters..." |
||||
if [ "$MODE" != "none" ]; then |
||||
sed -i "/default/c\default $5" isofiles/isolinux.cfg |
||||
sed -i '/prompt/c\prompt 1' isofiles/isolinux.cfg |
||||
sed -i '/timeout/c\timeout 50' isofiles/isolinux.cfg |
||||
fi |
||||
sed -i "/append priority=low/c\ append priority=low vga=788 initrd=initrd.gz $5 --- " isofiles/adtxt.cfg |
||||
sed -i "/append auto=true/c\ append auto=true priority=critical vga=788 initrd=initrd.gz $5 --- quiet " isofiles/adtxt.cfg |
||||
else |
||||
if [ "$IMAGE" == "netinst" ]; then |
||||
ISOLINUX_PATH="isolinux" |
||||
|
||||
if [ "$ARCH" == "amd64" ]; then |
||||
BUILD_ARCH="amd" |
||||
else |
||||
if [ "$ARCH" == "i386" ]; then |
||||
BUILD_ARCH="386" |
||||
else |
||||
echo "Unsupported arch in the building process. Aborting..." |
||||
exit 1 |
||||
fi |
||||
fi |
||||
|
||||
echo "Patching initrd.gz..." |
||||
gunzip isofiles/install.${BUILD_ARCH}/initrd.gz |
||||
echo preseed.cfg | cpio -H newc -o -A -F isofiles/install.${BUILD_ARCH}/initrd |
||||
gzip isofiles/install.${BUILD_ARCH}/initrd |
||||
|
||||
# Boot Parameters |
||||
echo "Patching boot parameters..." |
||||
if [ "$MODE" != "none" ]; then |
||||
sed -i "/default/c\default $5" isofiles/isolinux/isolinux.cfg |
||||
sed -i '/prompt/c\prompt 1' isofiles/isolinux/isolinux.cfg |
||||
sed -i '/timeout/c\timeout 50' isofiles/isolinux/isolinux.cfg |
||||
fi |
||||
sed -i "/append priority=low/c\ append priority=low vga=788 initrd=/install.${BUILD_ARCH}/initrd.gz $5 --- " isofiles/isolinux/adtxt.cfg |
||||
sed -i "/append auto=true/c\ append auto=true priority=critical vga=788 initrd=/install.${BUILD_ARCH}/initrd.gz $5 --- quiet " isofiles/isolinux/adtxt.cfg |
||||
else |
||||
echo "An error occurred in selecting the proper image for build process. Aborting..." |
||||
exit 1 |
||||
fi |
||||
fi |
||||
|
||||
# Import custom files into the ISO |
||||
cp -ar custom isofiles/custom || echo "[WARNING] Cannot import 'custom' folder." |
||||
|
||||
# Creating a New Bootable ISO Image: |
||||
# The following instructions suffice for i386 and amd64 in legacy BIOS mode. |
||||
|
||||
|
||||
# The example names get mapped to their roles here |
||||
orig_iso="$FILE_ISO" |
||||
new_files=isofiles |
||||
new_iso="preseed-${FILE_ISO}" |
||||
mbr_template=isohdpfx.bin |
||||
|
||||
# Extract MBR template file to disk |
||||
dd if="$orig_iso" bs=1 count=432 of="$mbr_template" |
||||
|
||||
# Create the new ISO image |
||||
# https://wiki.debian.org/RepackBootableISO#What_is_a_bootable_ISO_9660_image_.3F |
||||
echo "Generating patched iso image..." |
||||
xorriso -as mkisofs \ |
||||
-r -V "Debian $ARCH n" \ |
||||
-o "$new_iso" \ |
||||
-J -J -joliet-long -cache-inodes \ |
||||
-isohybrid-mbr "$mbr_template" \ |
||||
-b "${ISOLINUX_PATH}/isolinux.bin" \ |
||||
-c boot.cat \ |
||||
-boot-load-size 4 -boot-info-table -no-emul-boot \ |
||||
-eltorito-alt-boot \ |
||||
-e boot/grub/efi.img \ |
||||
-no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \ |
||||
"$new_files" |
||||
|
||||
#echo "Generating patched iso image..." |
||||
#genisoimage -r -J -b isolinux.bin -c boot.cat \ |
||||
# -no-emul-boot -boot-load-size 4 -boot-info-table \ |
||||
# -o "preseed-${FILE_ISO}" isofiles |
||||
|
||||
echo "Cleaning temporary files..." |
||||
rm -rf isofiles/ |
||||
rm preseed.cfg |
||||
rm isohdpfx.bin |
||||
|
||||
echo "Done." |
||||
exit 0 |
@ -0,0 +1,35 @@ |
||||
#!/bin/bash |
||||
|
||||
7z x -oisofiles $1 |
||||
|
||||
# Adding a Preseed File to the Initrd: |
||||
# You now have the directory isofiles with all the ISO's files in it. Make |
||||
# initrd.gz writable by the user, uncompress it and append a preseed file to |
||||
# the initrd. Recompress the initrd and return initrd.gz to its original |
||||
# read-only state. |
||||
|
||||
# 386, amd |
||||
ARCH='amd' |
||||
|
||||
gunzip isofiles/install.${ARCH}/initrd.gz |
||||
echo preseed.cfg | cpio -H newc -o -A -F isofiles/install.${ARCH}/initrd |
||||
gzip isofiles/install.${ARCH}/initrd |
||||
|
||||
# Regenerating md5sum.txt: |
||||
# Note: A warning will be issued because `./debian` is a symlink to `.`; |
||||
# The production of md5sum.txt is unaffected. |
||||
|
||||
cd isofiles |
||||
chmod +w md5sum.txt |
||||
find -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt |
||||
chmod -w md5sum.txt |
||||
cd .. |
||||
|
||||
# Creating a New Bootable ISO Image: |
||||
# The following instructions suffice for i386 and amd64 in legacy BIOS mode. |
||||
|
||||
genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat \ |
||||
-no-emul-boot -boot-load-size 4 -boot-info-table \ |
||||
-o preseed-$1 isofiles |
||||
|
||||
rm -rf isofiles/ |
Loading…
Reference in new issue