Mayor refactoring
This commit is contained in:
parent
26bc5cecf5
commit
f029e74acd
192
README.md
192
README.md
|
@ -1,8 +1,8 @@
|
||||||
# HW4F Netboot Installer
|
# HW4F Netboot Installer
|
||||||
|
|
||||||
Server die automatische Installation über das Netzwerks von Ubuntu 20.04
|
Server die automatische Installation über das Netzwerks von Ubuntu 22.04
|
||||||
im Rahmen des Projekts [https://hardwareforfuture.de](**Hardware for Future**)
|
im Rahmen des Projekts [**Hardware for Future**](https://hardwareforfuture.de)
|
||||||
des [https://dezentrale.space/](dezentrale e.V).
|
des [dezentrale e.V](https://dezentrale.space/).
|
||||||
|
|
||||||
Für den Betrieb wird einmalig eine Internetverbindung benötigt.
|
Für den Betrieb wird einmalig eine Internetverbindung benötigt.
|
||||||
Der Server wird über Ansible aufgesetzt.
|
Der Server wird über Ansible aufgesetzt.
|
||||||
|
@ -11,7 +11,8 @@ u.a. FAI (Fully Automatic Installation).
|
||||||
Mit dem Server wird ein Netz aufgespannt,
|
Mit dem Server wird ein Netz aufgespannt,
|
||||||
welches für den Anschluß des zu installierenden Rechner verwendet wird.
|
welches für den Anschluß des zu installierenden Rechner verwendet wird.
|
||||||
Wenn die Rechner mit dem Netzwerk verbunden sind,
|
Wenn die Rechner mit dem Netzwerk verbunden sind,
|
||||||
können sie über einen Netzwerkboot (F-Testen beim Start des Rechners) über PXE gebootet werden.
|
können sie über einen Netzwerkboot
|
||||||
|
(zumeist F12-Taste für das Bootmenü beim Start des Rechners) über PXE gebootet werden.
|
||||||
PXE lädt die erforderliche Dateien vom Server
|
PXE lädt die erforderliche Dateien vom Server
|
||||||
und der FAI-Installer installiert dann Ubuntu auf den Rechner.
|
und der FAI-Installer installiert dann Ubuntu auf den Rechner.
|
||||||
|
|
||||||
|
@ -20,25 +21,50 @@ Das Passwort ist `fai`.
|
||||||
Dieser Nutzer kann Administrationsrechte erlangen.
|
Dieser Nutzer kann Administrationsrechte erlangen.
|
||||||
Das Passwort muss im Anschluss geändert werden.
|
Das Passwort muss im Anschluss geändert werden.
|
||||||
|
|
||||||
|
|
||||||
|
## Verweise
|
||||||
|
|
||||||
|
* [FAI Project](https://fai-project.org)
|
||||||
|
* [FAI Project - Available distributions](https://fai-project.org/download/dists/)
|
||||||
|
* [FAI Project - FAI-Guide](https://fai-project.org/fai-guide/)
|
||||||
|
* [FAI Project - Variables](https://wiki.fai-project.org/index.php/Variables)
|
||||||
|
* [github.com faiproject/fai](https://github.com/faiproject/fai)
|
||||||
|
* [github.com faiproject/fai-config](https://github.com/faiproject/fai-config)
|
||||||
|
* [iPXE](https://ipxe.org)
|
||||||
|
* [Ansible](https://www.ansible.com)
|
||||||
|
|
||||||
|
|
||||||
|
## Komponenten
|
||||||
|
|
||||||
|
* DHCP: isc-dhcp-server
|
||||||
|
* TFTP: tftpd-hpa
|
||||||
|
* DNS: unbound
|
||||||
|
* ntp: ntp
|
||||||
|
* time: inetd
|
||||||
|
* HTTP: nginx
|
||||||
|
* rtime: inetd
|
||||||
|
* Apt Cache: apt-cacher-ng
|
||||||
|
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
Server:
|
Server:
|
||||||
|
|
||||||
* Debian Buster
|
* Debian Bullseye
|
||||||
* Zwei Netzwerkports oder zwei Netzwerkkarten (1x für WAN, 1x für LAN und FAI)
|
* Zwei Netzwerkports oder zwei Netzwerkkarten (1x für WAN, 1x für LAN und FAI)
|
||||||
|
|
||||||
Zu installierende Clients:
|
Zu installierende Clients:
|
||||||
|
|
||||||
* CPU mit x86-64 Unterstützung
|
* CPU amd64 mit Unterstützung für Hardwarevirtualisierung
|
||||||
* 512 MB RAM empfohlen
|
* 1GiB empfohlen (min. 512MB RAM)
|
||||||
* mehr als 20 GB Festsplatte oder SSD
|
* mehr als 20 GB SSD oder Festplatte
|
||||||
* PXE-fähig oder USB-Stick mit bootfähigen iPXE oder iPXE-CD zum Booten der Rechner
|
* PXE-fähig oder USB-Stick mit bootfähigen iPXE oder
|
||||||
|
iPXE-CD zum Booten der Rechner
|
||||||
|
|
||||||
## Verwendung
|
## Verwendung
|
||||||
|
|
||||||
Zunächst Ansible für die automatische Installation
|
Zunächst Ansible für die automatische Installation
|
||||||
und Konfiguration aller Komponeten herunterladen:
|
und Konfiguration aller Komponeten herunterladen:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
apt install python3-pip
|
apt install python3-pip
|
||||||
pip3 install ansible
|
pip3 install ansible
|
||||||
|
@ -46,7 +72,6 @@ pip3 install ansible
|
||||||
|
|
||||||
Danach ein Playbook (z.B. `fai.yml`) anlegen
|
Danach ein Playbook (z.B. `fai.yml`) anlegen
|
||||||
und die grundlegende Parameter festlegen:
|
und die grundlegende Parameter festlegen:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
become: true
|
become: true
|
||||||
|
@ -57,9 +82,8 @@ und die grundlegende Parameter festlegen:
|
||||||
- fai
|
- fai
|
||||||
```
|
```
|
||||||
|
|
||||||
Einen Eintrag hinzufügen in
|
Einen Eintrag hinzufügen in
|
||||||
`~/.ssh/config`
|
`~/.ssh/config`
|
||||||
|
|
||||||
```
|
```
|
||||||
host hw4f-fai hw4f-fai.intern.dezentrale.space
|
host hw4f-fai hw4f-fai.intern.dezentrale.space
|
||||||
user username
|
user username
|
||||||
|
@ -77,9 +101,9 @@ ansible-playbook -i inventory/dezentrale.yml -K --check --diff -v fai.yml
|
||||||
### Virtuale Testinstanz
|
### Virtuale Testinstanz
|
||||||
|
|
||||||
Für eine testweise Installation kann
|
Für eine testweise Installation kann
|
||||||
[https://www.vagrantup.com/](Vagrant) verwendet werden.
|
[Vagrant](https://www.vagrantup.com/) verwendet werden.
|
||||||
Es richtet anhand der *Vagrantfile* eine virtuelle Maschine ein
|
Es richtet anhand des *Vagrantfile* eine virtuelle Maschine ein
|
||||||
und provisioniert sie mittels Ansible.
|
und provisioniert sie anschließend automatisch mittels Ansible.
|
||||||
Vagrant unterstützt verschiedene Provider für Virtualisierungslösungen
|
Vagrant unterstützt verschiedene Provider für Virtualisierungslösungen
|
||||||
bspw. VirtualBox oder libvirt/KVM.
|
bspw. VirtualBox oder libvirt/KVM.
|
||||||
|
|
||||||
|
@ -87,14 +111,20 @@ Zur Verwendung muss Vagrant zunächst installiert werden.
|
||||||
Hier beispielsweise zusammen mit VirtualBox:
|
Hier beispielsweise zusammen mit VirtualBox:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
### VIRTUALBOX
|
||||||
apt install vagrant virtualbox
|
apt install vagrant virtualbox
|
||||||
|
### Libvirt/KVM
|
||||||
|
apt install vagrant qemu-system-x86
|
||||||
```
|
```
|
||||||
|
|
||||||
Danach kann die virtuelle Umgebung erstellt
|
Danach kann die virtuelle Umgebung erstellt
|
||||||
und automatisch eingerichtet werden:
|
und automatisch eingerichtet werden:
|
||||||
|
|
||||||
```
|
```
|
||||||
vagrant up
|
### INITIAL PROVISIONING
|
||||||
|
vagrant up --color
|
||||||
|
### FULL REPROVISIONING
|
||||||
|
vagrant destroy; vagrant up --color
|
||||||
```
|
```
|
||||||
|
|
||||||
Die Vagrantfile definiert eine Maschinen mit zwei Ethernet-Ports.
|
Die Vagrantfile definiert eine Maschinen mit zwei Ethernet-Ports.
|
||||||
|
@ -112,28 +142,96 @@ Hier kann es helfen das Netzwerk über *Virt-Manager* neuzustarten oder
|
||||||
ein weiteres isoliertes Netzwerk zu erstellen
|
ein weiteres isoliertes Netzwerk zu erstellen
|
||||||
und es mit dem zweiten Netzwerkport des FAI-Servers zu verbinden.
|
und es mit dem zweiten Netzwerkport des FAI-Servers zu verbinden.
|
||||||
|
|
||||||
|
|
||||||
|
#### Zugriff auf die vagrant VM
|
||||||
|
|
||||||
|
Zugriff auf die vagrant VM wird gewährt über:
|
||||||
|
```
|
||||||
|
vagrant ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
Mit Benutzername und Passwort:
|
||||||
|
```
|
||||||
|
### CREDENTIALS
|
||||||
|
Username: `vagrant`
|
||||||
|
Password: `vagrant`
|
||||||
|
|
||||||
|
### COMMAND
|
||||||
|
ssh vagrant@machine-ip
|
||||||
|
```
|
||||||
|
|
||||||
|
Mit PubKey Auth
|
||||||
|
```
|
||||||
|
ssh -i .vagrant/machines/hw4f-fai-vagrant/libvirt/private_key \
|
||||||
|
vagrant@machine-ip
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Zugriff auf die zu installierende Maschine nehmen (Live System)
|
||||||
|
|
||||||
|
Dies ist recht nützlich zur Analyse des Livesystems.
|
||||||
|
|
||||||
|
|
||||||
|
Auf dem FAI-Server wird zunächst die IP-Adresse des Clients herausgesucht.
|
||||||
|
Diese findet sich unter `/var/lib/dhcp/dhcpd.leases`.
|
||||||
|
|
||||||
|
Dann kann per ssh Zugriff genommen werden
|
||||||
|
```
|
||||||
|
### CREDENTIALS
|
||||||
|
Username: `root`
|
||||||
|
Password: `fai`
|
||||||
|
ssh root@192.168.33.10
|
||||||
|
```
|
||||||
|
|
||||||
|
Das Installations log findet sich unter
|
||||||
|
`tail -f /tmp/fai/fai.log`
|
||||||
|
|
||||||
|
|
||||||
|
#### Secrets
|
||||||
|
|
||||||
|
In der folgenden Konfigurationsdatei
|
||||||
|
wird u.A. auch das Root-Passwort
|
||||||
|
des Live-Systems festgelegt.
|
||||||
|
|
||||||
|
Die NFS-root configuration findet sich hier
|
||||||
|
`/etc/fai/nfsroot.conf`
|
||||||
|
|
||||||
|
Das Secret wird definiert in
|
||||||
|
`/srv/fai/config/class/FAIBASE.var`
|
||||||
|
|
||||||
|
#### Debian Versionen
|
||||||
|
|
||||||
|
`/srv/fai/nfsroot/etc/debian_version`
|
||||||
|
Ganz alt: 10.6 (Buster) -> kein ZST
|
||||||
|
Neuer versuch: 11.5 (Bullseye) - kein ZST
|
||||||
|
Neuester Versuch: (Bookworm)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Konfiguration
|
### Konfiguration
|
||||||
|
|
||||||
Über Ansible-Variablen kann die Installation noch weiter angepasst werden.
|
Über Ansible-Variablen kann die Installation noch weiter angepasst werden.
|
||||||
|
|
||||||
|
|
||||||
|**Variable** |**Bedeutung** |**Standard** |
|
|**Variable** |**Beschreibung** |**Standard** |
|
||||||
|--- |--- |---------------------------------------- |
|
|--- |--- |---------------------------------------- |
|
||||||
|dhcp_interface |NIC des Installtionnetzes (muss gesetzt sein) | |
|
|`dhcp_interface` |NIC des Installationnetzes (muss gesetzt sein) |`eth1` |
|
||||||
|wan_interface |NIC zum Internet |`eth0` |
|
|`wan_interface` |NIC zum Internet |`eth0` |
|
||||||
|server_name |Server-Name |hw4f-fai |
|
|`server_name` |Server-Name |`hw4f-fai` |
|
||||||
|domain_name |Domain-Name des Netzes |local |
|
|`domain_name` |Domain-Name des Netzes |`local` |
|
||||||
|server_ip |IP des Servers |`192.168.33.1` |
|
|`server_ip` |IP des Servers in CIDR-Notation |`192.168.33.9/24` |
|
||||||
|server_netbits |Bits der Netzmaske |`24 ` |
|
|`gateway_ip` |IP des Default-Gateways in CIDR-Notation |`192.168.33.1/24` |
|
||||||
|server_netmask |Netzmaske |`255.255.255.0` |
|
|`apt_cacher_offline_mode` |`true`, um nur den vorhanden Packet-Cache als Repository zu nutzen |`false` |
|
||||||
|apt_cacher_offline_mode |true, um nur den vorhanden Packet-Cache als Repository zu nutzen|false |
|
|`debian_release` |Debian Release, was für FAI genutzt werden soll. |`bullseye` |
|
||||||
|debian_release |Debian Release, was für FAI genutzt werden soll. |buster |
|
|`pxe_preselected_entry` |Vorausgewählte iPXE-Eintag |`exit` (von lokalem Datenträger starten) |
|
||||||
|pxe_preselected_entry |Vorausgewählte iPXE-Eintag |`__exit` (von lokale Datenträger starten)|
|
|`pxe_menu_timeout` |Timeout für iPXE-Menu in Millisekunden |5000 |
|
||||||
|pxe_menu_timeout |Timeout für iPXE-Menu in Milisekunden |5000 |
|
|`ipxe_additional_entries` |Zusätzliche Einträge für iPXE-Menu |keine |
|
||||||
|ipxe_additional_entries |Zusätzliche Einträge für iPXE-Menu |keine |
|
|`use_apt_cache_for_server` |Apt Cache für den Server selbst verwenden |`false` |
|
||||||
|use_apt_cache_for_server |Apt Cache für den Server selbst verwenden |`false` |
|
|`fai_hw4f_profile_username` |Desktop Benutzername |`user` |
|
||||||
|fai_hw4f_profile_username |Desktop Benutzername |`user` |
|
|`fai_hw4f_profile_username` |Desktop Benutzername |`user` |
|
||||||
|fai_hw4f_profile_password |Passwort der Benutzers |`dezentrale` |
|
|`fai_hw4f_profile_password` |Passwort der Benutzers |`dezentrale` |
|
||||||
|
|
||||||
|
Alle relevanten Netzwerk-Informationen werden
|
||||||
|
aus der IP-Adresse des Servers abgeleitet.
|
||||||
|
|
||||||
Beispielsweise kann der Server mit obigen Playbook aufgesetzt werden,
|
Beispielsweise kann der Server mit obigen Playbook aufgesetzt werden,
|
||||||
eine Rechner mit Ubuntu installiert werden und
|
eine Rechner mit Ubuntu installiert werden und
|
||||||
|
@ -154,7 +252,11 @@ Danach das Playbook noch einmal ausführen,
|
||||||
um die Konfigration zu aktualisieren:
|
um die Konfigration zu aktualisieren:
|
||||||
|
|
||||||
```
|
```
|
||||||
ansible-playbook fai.yml
|
ansible-playbook -i inventory/dezentrale.yml \
|
||||||
|
-l hw4f-fai --diff --ask-become-pass fai.yml
|
||||||
|
### WHEN "sudo_nopasswd: true"
|
||||||
|
ansible-playbook -i inventory/dezentrale.yml \
|
||||||
|
-l hw4f-fai --diff fai.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Zusätzliche Menü-Einträge im iPXE-Menü
|
#### Zusätzliche Menü-Einträge im iPXE-Menü
|
||||||
|
@ -204,23 +306,3 @@ Es sind folgende Felder für jeden Boot-Eintrag möglich:
|
||||||
Der vorausgewählt Eintrag kann über `pxe_preselected_entry` mit dem Label ausgewählt werden.
|
Der vorausgewählt Eintrag kann über `pxe_preselected_entry` mit dem Label ausgewählt werden.
|
||||||
Um FAI auszuwählen muss `__fai` gesetzt werden.
|
Um FAI auszuwählen muss `__fai` gesetzt werden.
|
||||||
|
|
||||||
## Details
|
|
||||||
|
|
||||||
*TBD*
|
|
||||||
|
|
||||||
### Komponenten
|
|
||||||
|
|
||||||
* DHCP: isc-dhcp-server
|
|
||||||
* TFTP: tftpd-hpa
|
|
||||||
* DNS: unbound
|
|
||||||
* ntp: ntp
|
|
||||||
* time: inetd
|
|
||||||
* HTTP: nginx
|
|
||||||
* rtime: inetd
|
|
||||||
* Apt Cache: apt-cacher-ng
|
|
||||||
|
|
||||||
## Verweise
|
|
||||||
|
|
||||||
* [https://fai-project.org](FAI Project)
|
|
||||||
* [https://ipxe.org](iPXE)
|
|
||||||
* [https://www.ansible.com](Ansible)
|
|
||||||
|
|
|
@ -4,33 +4,41 @@
|
||||||
def create(config, name)
|
def create(config, name)
|
||||||
config.vm.define name do |v|
|
config.vm.define name do |v|
|
||||||
v.vm.hostname = name
|
v.vm.hostname = name
|
||||||
v.vm.box = "generic/debian10"
|
v.vm.box = "generic/debian11"
|
||||||
|
|
||||||
v.vm.provider "virtualbox" do |vb|
|
v.vm.provider "virtualbox" do |vb|
|
||||||
vb.linked_clone = true
|
vb.linked_clone = true
|
||||||
vb.cpus = 2
|
vb.cpus = 6
|
||||||
vb.memory = 1024
|
vb.memory = 2048
|
||||||
# special thing for virtualbox
|
# special thing for virtualbox
|
||||||
vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
|
vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
|
||||||
end
|
end
|
||||||
|
|
||||||
v.vm.provider "libvirt" do |lv|
|
v.vm.provider "libvirt" do |lv|
|
||||||
lv.cpus = 2
|
lv.cpus = 6
|
||||||
lv.memory = 1024
|
lv.memory = 2048
|
||||||
|
lv.disk_driver :cache => "unsafe"
|
||||||
end
|
end
|
||||||
|
|
||||||
# add a extra NIC for the DHCP services
|
# ADD EXTRA NIC FOR THE DHCP SERVICES
|
||||||
|
# https://github.com/vagrant-libvirt/vagrant-libvirt#provider-options
|
||||||
v.vm.network "private_network",
|
v.vm.network "private_network",
|
||||||
auto_config: false,
|
auto_config: false,
|
||||||
ip: '192.168.33.1',
|
ip: '192.168.33.9',
|
||||||
netmask: '255.255.255.0',
|
netmask: '255.255.255.0',
|
||||||
virtualbox__intnet: true,
|
virtualbox__intnet: true,
|
||||||
libvirt__dhcp_enabled: false,
|
libvirt__dhcp_enabled: false,
|
||||||
libvirt__forward_mode: 'none',
|
libvirt__forward_mode: 'nat',
|
||||||
libvirt__guest_ipv6: false,
|
#libvirt__guest_ipv6: true,
|
||||||
mode: 'isolated',
|
#mode: 'isolated',
|
||||||
type: 'ethernet'
|
type: 'ethernet'
|
||||||
|
|
||||||
|
$provision_net = <<-EOF
|
||||||
|
ip a add 192.168.33.9/24 dev eth1
|
||||||
|
ip l set up dev eth1
|
||||||
|
EOF
|
||||||
|
v.vm.provision "shell", inline: $provision_net
|
||||||
|
|
||||||
if ENV['USE_ANSIBLE_IN_VM'] || false
|
if ENV['USE_ANSIBLE_IN_VM'] || false
|
||||||
# start vagrant with:
|
# start vagrant with:
|
||||||
#
|
#
|
||||||
|
@ -44,9 +52,9 @@ def create(config, name)
|
||||||
$provision = <<-EOF
|
$provision = <<-EOF
|
||||||
sudo apt-get install -y python3-pip
|
sudo apt-get install -y python3-pip
|
||||||
pip3 install ansible
|
pip3 install ansible
|
||||||
echo faiserver ansible_connection=local python_interpreter=/usr/bin/python3 > ~/inventory
|
#echo "faiserver ansible_connection=local python_interpreter=/usr/bin/python3" > ~/inventory/vagrant.ini
|
||||||
cd /home/vagrant/fai
|
cd /home/vagrant/fai
|
||||||
ansible-playbook -i ~/inventory playbook-vagrant.yml
|
ansible-playbook -i ~/inventory/dezentrale.yml playbook-vagrant.yml
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# and ran the provision with ansible
|
# and ran the provision with ansible
|
||||||
|
@ -55,13 +63,18 @@ def create(config, name)
|
||||||
else
|
else
|
||||||
# provision with ansible and use VM as target host
|
# provision with ansible and use VM as target host
|
||||||
v.vm.provision "ansible" do |ans|
|
v.vm.provision "ansible" do |ans|
|
||||||
ans.playbook = "playbook-vagrant.yml"
|
ans.inventory_path = "inventory/dezentrale.yml"
|
||||||
|
ans.limit = name
|
||||||
|
#ans.ask_become_pass = true
|
||||||
|
ans.verbose = "v"
|
||||||
|
ans.playbook = "fai.yml"
|
||||||
|
#ans.tags = [ "debug_hostvars", "packages" ]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
create(config, "faiserver")
|
create(config, "hw4f-fai-vagrant")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
40
fai.yml
40
fai.yml
|
@ -1,38 +1,6 @@
|
||||||
- hosts: hw4f-fai
|
- hosts: all
|
||||||
vars:
|
collections:
|
||||||
# Additional entries in iPXE menu
|
- ansible.utils
|
||||||
ipxe_additional_entries:
|
- ansible.netcommon
|
||||||
"pmagic":
|
|
||||||
name: "Partition Magic"
|
|
||||||
key: p
|
|
||||||
files: "tools/pmagic"
|
|
||||||
kernel: "bzImage64"
|
|
||||||
initrd:
|
|
||||||
- initrd.img
|
|
||||||
- fu.img
|
|
||||||
- m64.img
|
|
||||||
- files.cgz
|
|
||||||
imgargs: edd=on vga=normal
|
|
||||||
"clonezilla2.6.6.15r":
|
|
||||||
name: "Windows Clonzilla 2.6.6.15 Restore"
|
|
||||||
key: r
|
|
||||||
kernel: "images/bios/clonezilla2.6.6-15/vmlinuz"
|
|
||||||
initrd:
|
|
||||||
- "images/bios/clonezilla2.6.6-15/initrd.img"
|
|
||||||
imgargs: 'initrd=initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_prerun2="sleep 3" ocs_prerun3="mount -t cifs -o user=gast,password= //192.168.33.2/images /home/partimag" ocs_prerun4="sleep 1" ocs_live_run="sudo ocs-sr -g auto -e1 auto -e2 -r -j2 -c -scr -p reboot restoredisk ask_user sda" ocs_live_extra_param="" keyboard-layouts="NONE" ocs_live_batch="no" locales="de_DE.UTF-8" vga=788 nosplash noprompt fetch="http://192.168.33.9/tftp/fai/images/bios/clonezilla2.6.6-15/filesystem.squashfs"'
|
|
||||||
"clonezilla2.6.6.15b":
|
|
||||||
key: b
|
|
||||||
name: "Windows Clonzilla 2.6.6.15 Backup"
|
|
||||||
kernel: "images/bios/clonezilla2.6.6-15/vmlinuz"
|
|
||||||
initrd:
|
|
||||||
- "images/bios/clonezilla2.6.6-15/initrd.img"
|
|
||||||
##boot=live config noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de ocs_prerun="dhclient" ocs_live_run="/usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 4096 -fsck -enc -p poweroff savedisk 'Beispiel-`date +%d-%m-%Y`' nvme0n1" ocs_live_extra_param="" ocs_repository="smb://clonezilla:clonezilla@192.168.178.4/Backups/" ocs_live_batch=no ocs_netlink_timeout=5
|
|
||||||
imgargs: 'initrd=initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_prerun2="sleep 3" ocs_prerun3="mount -t cifs -o user=gast,password= //192.168.33.2/Images /home/partimag" ocs_prerun4="sleep 1" ocs_live_run="sudo ocs-sr -g auto -e1 auto -e2 -r -j2 -c -scr -p reboot savedisk ask_user sda" ocs_live_extra_param="" keyboard-layouts="NONE" ocs_live_batch="no" locales="de_DE.UTF-8" vga=788 nosplash noprompt fetch=http://192.168.33.9/tftp/fai/images/bios/clonezilla2.6.6-15/filesystem.squashfs'
|
|
||||||
"dban":
|
|
||||||
name: "Dariks boot and nuke (DBAN)"
|
|
||||||
key: d
|
|
||||||
kernel: "dban.bzi"
|
|
||||||
imgargs: "silent vga=785"
|
|
||||||
|
|
||||||
roles:
|
roles:
|
||||||
- fai
|
- fai
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
---
|
||||||
|
### FAI
|
||||||
|
debian_release_fai: "bookworm"
|
||||||
|
debian_release_nfsroot: "bookworm"
|
||||||
|
|
||||||
|
### REPOS IN THE FAI-SERVER
|
||||||
|
repos:
|
||||||
|
- repo: "deb http://fai-project.org/download bullseye koeln"
|
||||||
|
filename: "fai"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "fai-project.org"
|
||||||
|
release_name: "{{ debian_release_fai }}"
|
||||||
|
pin_priority: 500
|
||||||
|
- repo: "deb http://deb.debian.org/debian {{ debian_release_fai }} main contrib non-free"
|
||||||
|
filename: "{{ debian_release_fai }}"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
release_name: "{{ debian_release_fai }}"
|
||||||
|
pin_priority: 500
|
||||||
|
- repo: "deb http://deb.debian.org/debian {{ debian_release_fai }}-updates main contrib non-free"
|
||||||
|
filename: "{{ debian_release_fai }}"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
release_name: "{{ debian_release_fai }}-updates"
|
||||||
|
pin_priority: 500
|
||||||
|
- repo: "deb http://security.debian.org/debian-security {{ debian_release_fai }}-security main contrib non-free"
|
||||||
|
filename: "{{ debian_release_fai }}"
|
||||||
|
- repo: "deb http://deb.debian.org/debian {{ debian_release_fai }}-backports main contrib non-free"
|
||||||
|
filename: "{{ debian_release_fai }}"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
release_name: "{{ debian_release_fai }}-backports"
|
||||||
|
pin_priority: 490
|
||||||
|
- repo: "deb http://deb.debian.org/debian testing main contrib non-free"
|
||||||
|
filename: "testing"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
suite: "testing"
|
||||||
|
pin_priority: 400
|
||||||
|
- repo: "deb http://deb.debian.org/debian testing-updates main contrib non-free"
|
||||||
|
filename: "testing"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
suite: "testing-updates"
|
||||||
|
pin_priority: 400
|
||||||
|
- repo: "deb http://deb.debian.org/debian sid main contrib non-free"
|
||||||
|
filename: "sid"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
release_name: "sid"
|
||||||
|
pin_priority: 120
|
||||||
|
- repo: "deb http://deb.debian.org/debian experimental main contrib non-free"
|
||||||
|
filename: "experimental"
|
||||||
|
preferences:
|
||||||
|
- package: '*'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
suite: "experimental"
|
||||||
|
pin_priority: 110
|
||||||
|
- package: '/^fai-.*/'
|
||||||
|
origin: "deb.debian.org"
|
||||||
|
suite: "experimental"
|
||||||
|
pin_priority: 500
|
||||||
|
|
||||||
|
# Additional entries in iPXE menu
|
||||||
|
ipxe_additional_entries:
|
||||||
|
"clonezilla2.6.6.15r":
|
||||||
|
name: "Windows Clonzilla 2.6.6.15 Restore"
|
||||||
|
key: r
|
||||||
|
kernel: "images/bios/clonezilla2.6.6-15/vmlinuz"
|
||||||
|
initrd:
|
||||||
|
- "images/bios/clonezilla2.6.6-15/initrd.img"
|
||||||
|
imgargs: 'initrd=initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_prerun2="sleep 3" ocs_prerun3="mount -t cifs -o user=gast,password= //192.168.33.2/images /home/partimag" ocs_prerun4="sleep 1" ocs_live_run="sudo ocs-sr -g auto -e1 auto -e2 -r -j2 -c -scr -p reboot restoredisk ask_user sda" ocs_live_extra_param="" keyboard-layouts="NONE" ocs_live_batch="no" locales="de_DE.UTF-8" vga=788 nosplash noprompt fetch="http://192.168.33.9/tftp/fai/images/bios/clonezilla2.6.6-15/filesystem.squashfs"'
|
||||||
|
"clonezilla2.6.6.15b":
|
||||||
|
key: b
|
||||||
|
name: "Windows Clonzilla 2.6.6.15 Backup"
|
||||||
|
kernel: "images/bios/clonezilla2.6.6-15/vmlinuz"
|
||||||
|
initrd:
|
||||||
|
- "images/bios/clonezilla2.6.6-15/initrd.img"
|
||||||
|
##boot=live config noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de ocs_prerun="dhclient" ocs_live_run="/usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 4096 -fsck -enc -p poweroff savedisk 'Beispiel-`date +%d-%m-%Y`' nvme0n1" ocs_live_extra_param="" ocs_repository="smb://clonezilla:clonezilla@192.168.178.4/Backups/" ocs_live_batch=no ocs_netlink_timeout=5
|
||||||
|
imgargs: 'initrd=initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_prerun2="sleep 3" ocs_prerun3="mount -t cifs -o user=gast,password= //192.168.33.2/Images /home/partimag" ocs_prerun4="sleep 1" ocs_live_run="sudo ocs-sr -g auto -e1 auto -e2 -r -j2 -c -scr -p reboot savedisk ask_user sda" ocs_live_extra_param="" keyboard-layouts="NONE" ocs_live_batch="no" locales="de_DE.UTF-8" vga=788 nosplash noprompt fetch=http://192.168.33.9/tftp/fai/images/bios/clonezilla2.6.6-15/filesystem.squashfs'
|
||||||
|
# "pmagic":
|
||||||
|
# name: "Partition Magic"
|
||||||
|
# key: p
|
||||||
|
# files: "tools/pmagic"
|
||||||
|
# kernel: "bzImage64"
|
||||||
|
# initrd:
|
||||||
|
# - initrd.img
|
||||||
|
# - fu.img
|
||||||
|
# - m64.img
|
||||||
|
# - files.cgz
|
||||||
|
# imgargs: edd=on vga=normal
|
||||||
|
# "dban":
|
||||||
|
# name: "Dariks boot and nuke (DBAN)"
|
||||||
|
# key: d
|
||||||
|
# kernel: "dban.bzi"
|
||||||
|
# imgargs: "silent vga=785"
|
||||||
|
# "memtest":
|
||||||
|
# name: "Memtest86+"
|
||||||
|
# key: m
|
||||||
|
# files: "tools/memtest"
|
||||||
|
# kernel: "memtest86+-5.31b.bin"
|
||||||
|
# other:
|
||||||
|
# name: Menu Entry
|
||||||
|
# files: path/to/files/to/copy
|
||||||
|
# kernel: a-kernel-image
|
||||||
|
# args: some arguments
|
||||||
|
# initrd:
|
||||||
|
# - initrd0.img
|
||||||
|
# - initrd1.img
|
||||||
|
# - ...
|
||||||
|
# multiboot:
|
||||||
|
# - module0.img
|
||||||
|
# - module1.img
|
||||||
|
# - ...
|
|
@ -1,19 +1,29 @@
|
||||||
all:
|
all:
|
||||||
hosts:
|
vars:
|
||||||
hw4f-fai:
|
ansible_nopasswd: true
|
||||||
ansible_nopasswd: True
|
|
||||||
use_apt_cache_for_server: true
|
use_apt_cache_for_server: true
|
||||||
# interface for a internet connection
|
# interface for a internet connection
|
||||||
wan_interface: ens18
|
wan_interface: "{{ ansible_default_ipv4.interface }}"
|
||||||
|
# ip of the server of the installer network
|
||||||
|
server_ip: "192.168.33.8/24"
|
||||||
|
routers:
|
||||||
|
- "192.168.33.1"
|
||||||
|
#nameservers:
|
||||||
|
fai_config_git: "https://git.dezentrale.cloud/HW4F/fai-config.git"
|
||||||
|
|
||||||
|
hosts:
|
||||||
|
hw4f-fai:
|
||||||
# interface to the clients to install
|
# interface to the clients to install
|
||||||
dhcp_interface: ens19
|
dhcp_interface: ens19
|
||||||
# customized server name
|
# customized server name
|
||||||
server_name: "hw4f-fai"
|
server_name: "hw4f-fai"
|
||||||
# ip of the server of the installer network
|
# ip of the server of the installer network
|
||||||
server_ip: 192.168.33.9
|
hw4f-fai-vagrant:
|
||||||
timeservers:
|
ansible_host: "192.168.33.9"
|
||||||
- 192.168.33.1
|
#ansible_connection: "local"
|
||||||
routers:
|
#python_interpreter: "/usr/bin/python3"
|
||||||
- 192.168.33.1
|
# interface to the clients to install
|
||||||
#nameservers:
|
dhcp_interface: eth1
|
||||||
pxe_preselected_entry: "fai"
|
# customized server name
|
||||||
|
server_name: "hw4f-fai-vagrant"
|
||||||
|
#localhost:
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: "Debug ipddr() filter"
|
||||||
|
vars:
|
||||||
|
server_ip: "192.168.33.9/24"
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: |
|
||||||
|
network/prefix: "{{ server_ip | ipaddr('network/prefix') }}"
|
||||||
|
network: "{{ server_ip | ipaddr('network') }}"
|
||||||
|
address: "{{ server_ip | ipaddr('address') }}"
|
||||||
|
prefix: "{{ server_ip | ipaddr('prefix') }}"
|
||||||
|
netmask: "{{ server_ip | ipaddr('netmask') }}"
|
||||||
|
broadcast: "{{ server_ip | ipaddr('broadcast') }}"
|
||||||
|
delegate_to: localhost
|
|
@ -1,35 +0,0 @@
|
||||||
- hosts: faiserver
|
|
||||||
become: true
|
|
||||||
vars:
|
|
||||||
# interface to the clients to install
|
|
||||||
dhcp_interface: eth1
|
|
||||||
# interface for a internet connection
|
|
||||||
wan_interface: "{{ ansible_default_ipv4.interface }}"
|
|
||||||
# customized server name
|
|
||||||
server_name: faiserver
|
|
||||||
# ip of the server of the installer network
|
|
||||||
server_ip: 192.168.33.1
|
|
||||||
|
|
||||||
pxe_preselected_entry: __fai
|
|
||||||
|
|
||||||
ipxe_additional_entries:
|
|
||||||
memtest:
|
|
||||||
name: Memtest86+
|
|
||||||
files: tools/memtest
|
|
||||||
kernel: memtest86+-5.31b.bin
|
|
||||||
# other:
|
|
||||||
# name: Menu Entry
|
|
||||||
# files: path/to/files/to/copy
|
|
||||||
# kernel: a-kernel-image
|
|
||||||
# args: some arguments
|
|
||||||
# initrd:
|
|
||||||
# - initrd0.img
|
|
||||||
# - initrd1.img
|
|
||||||
# - ...
|
|
||||||
# multiboot:
|
|
||||||
# - module0.img
|
|
||||||
# - module1.img
|
|
||||||
# - ...
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- fai
|
|
|
@ -1,29 +1,101 @@
|
||||||
---
|
---
|
||||||
# defaults file for fai
|
### FAI defaults
|
||||||
|
debian_release_fai: "bullseye"
|
||||||
|
debian_release_nfsroot: "bullseye"
|
||||||
|
ubuntu_mirror_url: "http://archive.ubuntu.com"
|
||||||
|
|
||||||
dhcp_interface: eth1
|
dhcp_interface: "eth1"
|
||||||
wan_interface: "{{ (ansible_default_ipv4 |d(ansible_default_ipv6)).interface }}"
|
wan_interface: "{{ (ansible_default_ipv4 |d(ansible_default_ipv6)).interface }}"
|
||||||
server_name: faiserver
|
server_name: "faiserver"
|
||||||
domain_name: local
|
domain_name: "local"
|
||||||
server_ip: 192.168.33.1
|
server_ip: "192.168.33.9/24"
|
||||||
server_netbits: 24
|
server_network_prefix: "{{ server_ip | ipaddr('network/prefix') }}"
|
||||||
server_netmask: 255.255.255.0
|
server_network: "{{ server_ip | ipaddr('network') }}"
|
||||||
|
server_address: "{{ server_ip | ipaddr('address') }}"
|
||||||
|
server_prefix: "{{ server_ip | ipaddr('prefix') }}"
|
||||||
|
server_netmask: "{{ server_ip | ipaddr('netmask') }}"
|
||||||
|
server_broadcast: "{{ server_ip | ipaddr('broadcast') }}"
|
||||||
|
timeservers:
|
||||||
|
- "{{ server_address }}"
|
||||||
|
ntpservers:
|
||||||
|
- "{{ server_address }}"
|
||||||
apt_cacher_offline_mode: false
|
apt_cacher_offline_mode: false
|
||||||
debian_release: buster
|
|
||||||
use_apt_cache_for_server: false
|
use_apt_cache_for_server: false
|
||||||
|
|
||||||
fai_configdir: "/srv/fai/config"
|
fai_etc_dir: "/etc/fai"
|
||||||
fai_profiles_archive: "config.tar"
|
fai_dir: "/srv/fai"
|
||||||
|
fai_dir_config: "{{ fai_dir }}/config"
|
||||||
|
fai_dir_nfsroot: "{{ fai_dir }}/nfsroot"
|
||||||
|
fai_dir_nfsroot_boot: "{{ fai_dir_nfsroot }}/boot"
|
||||||
|
fai_config_archive: "config.tar"
|
||||||
fai_squashfs_file: "squash.img"
|
fai_squashfs_file: "squash.img"
|
||||||
|
fai_squashfs_path: "{{ fai_dir_download + '/' + fai_squashfs_file }}"
|
||||||
|
#fai_loguser: "fai"
|
||||||
|
fai_menu_default: 'HW4F Desktop Jammy'
|
||||||
|
|
||||||
fai_hw4f_profile_username: user
|
fai_hw4f_rootpw_fai: "fai"
|
||||||
fai_hw4f_profile_password: dezentrale
|
fai_hw4f_profile_username: "user"
|
||||||
|
fai_hw4f_profile_password: "dezentrale"
|
||||||
|
fai_hw4f_rootpw: "{{ fai_hw4f_profile_password }}"
|
||||||
|
|
||||||
tftp_dir: "/srv/tftp/fai"
|
tftp_dir: "/srv/tftp/fai"
|
||||||
|
|
||||||
|
nginx_root: "/var/www/html"
|
||||||
|
nginx_dir_config: "/etc/nginx"
|
||||||
|
nginx_site_available: "{{ nginx_dir_config + '/sites-available/' + ansible_hostname + '.conf' }}"
|
||||||
|
nginx_site_enabled: "{{ nginx_dir_config + '/sites-enabled/' + ansible_hostname + '.conf' }}"
|
||||||
|
nginx_site_default: "{{ nginx_dir_config + '/sites-enabled/' + 'default' }}"
|
||||||
|
fai_dir_download: "{{ nginx_root + '/' + http_mirror_fai_path_prefix }}"
|
||||||
|
fai_dir_basefile: "{{ fai_dir_download + '/' + http_mirror_basefile_path_prefix }}"
|
||||||
|
|
||||||
|
http_mirror: "http://{{ server_name }}"
|
||||||
http_mirror_ipxe_path_prefix: "ipxe"
|
http_mirror_ipxe_path_prefix: "ipxe"
|
||||||
http_mirror_fai_path_prefix: "fai"
|
http_mirror_fai_path_prefix: "fai"
|
||||||
|
http_mirror_basefile_path_prefix: "basefile"
|
||||||
|
http_mirror_ipxe_root_url: "{{ http_mirror + '/' + http_mirror_ipxe_path_prefix }}"
|
||||||
|
http_mirror_fai_root_url: "{{ http_mirror + '/' + http_mirror_fai_path_prefix }}"
|
||||||
|
http_mirror_fai_profiles_url: "{{ http_mirror_fai_root_url + '/' + fai_config_archive }}"
|
||||||
|
http_mirror_fai_squashfs_url: "{{ http_mirror_fai_root_url + '/' + fai_squashfs_file }}"
|
||||||
|
http_mirror_fai_basefile_url: "{{ http_mirror_fai_root_url + '/' + http_mirror_basefile_path_prefix }}"
|
||||||
|
|
||||||
ipxe_additional_entries:
|
ipxe_additional_entries: []
|
||||||
|
ipxe_dir_binaries: "/usr/lib/ipxe"
|
||||||
|
ipxe_dir_download: "{{ nginx_root + '/' + http_mirror_ipxe_path_prefix }}"
|
||||||
|
|
||||||
pxe_preselected_entry: __exit
|
pxe_preselected_entry: "fai"
|
||||||
|
#pxe_preselected_entry: "exit"
|
||||||
pxe_menu_timeout: 5000
|
pxe_menu_timeout: 5000
|
||||||
|
|
||||||
|
### CLONEZILLA
|
||||||
|
clonezilla_dir: "{{ nginx_root }}/clonezilla"
|
||||||
|
clonezilla_dir_download: "{{ clonezilla_dir + '/download' }}"
|
||||||
|
clonezilla_base_download_url_osdn: "https://osdn.net/dl"
|
||||||
|
clonezilla_base_download_url_sf: "https://downloads.sourceforge.net"
|
||||||
|
clonezilla_base_download_url: "{{ clonezilla_base_download_url_osdn }}"
|
||||||
|
clonezilla_version: "2.8.1-12"
|
||||||
|
### amd64/i686-pae/i686
|
||||||
|
clonezilla_arch: "amd64"
|
||||||
|
### zip/iso
|
||||||
|
clonezilla_type: "zip"
|
||||||
|
clonezilla_archive: "{{
|
||||||
|
'/clonezilla-live-' +
|
||||||
|
clonezilla_version + '-' +
|
||||||
|
clonezilla_arch + '.' +
|
||||||
|
clonezilla_type
|
||||||
|
}}"
|
||||||
|
clonezilla_download_url: "{{
|
||||||
|
clonezilla_base_download_url +
|
||||||
|
'/clonezilla' +
|
||||||
|
clonezilla_archive
|
||||||
|
}}"
|
||||||
|
|
||||||
|
package_set:
|
||||||
|
core:
|
||||||
|
debian:
|
||||||
|
standard: [
|
||||||
|
apt-file, apt-transport-https, aptitude, bash-completion, ca-certificates, curl,
|
||||||
|
dmidecode, dosfstools, git, htop, haveged, iftop, info, iotop, jq, libcrack2,
|
||||||
|
locales, lsb-release, lsof, man-db, mc, mlocate, openssl, parted, pigz, psmisc,
|
||||||
|
pv, pwgen, python3-apt, rsync, screen, sqlite3, ssl-cert, strace, sudo,
|
||||||
|
sysstat, tcpdump, tmux, unattended-upgrades, vim, wget, zsh ]
|
||||||
|
extra: [ btrfs-progs ]
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
|
||||||
|
# Note: PS1 and umask are already set in /etc/profile. You should not
|
||||||
|
# need this unless you want different defaults for root.
|
||||||
|
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
|
||||||
|
# umask 022
|
||||||
|
|
||||||
|
# You may uncomment the following lines if you want `ls' to be colorized:
|
||||||
|
export LS_OPTIONS='--color=auto'
|
||||||
|
eval "`dircolors`"
|
||||||
|
alias ls='ls $LS_OPTIONS'
|
||||||
|
alias ll='ls $LS_OPTIONS -l'
|
||||||
|
alias l='ls $LS_OPTIONS -lA'
|
||||||
|
|
||||||
|
# Some more alias to avoid making mistakes:
|
||||||
|
# alias rm='rm -i'
|
||||||
|
# alias cp='cp -i'
|
||||||
|
# alias mv='mv -i'
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color|*-256color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# comment for a colored prompt, if the terminal has the capability; turned
|
||||||
|
# off by default to not distract the user: the focus in a terminal window
|
||||||
|
# should be on the output of commands, not on the prompt
|
||||||
|
force_color_prompt=yes
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
alias dir='dir --color=auto'
|
||||||
|
alias vdir='vdir --color=auto'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# colored GCC warnings and errors
|
||||||
|
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||||
|
|
||||||
|
alias ..='cd ..'
|
|
@ -1,18 +1,17 @@
|
||||||
# dhcpd.conf for a fai installation server
|
# dhcpd.conf for a fai installation server
|
||||||
# replace faiserver with the name of your install server
|
# replace faiserver with the name of your install server
|
||||||
|
|
||||||
ignore-client-uids on;
|
|
||||||
deny unknown-clients;
|
deny unknown-clients;
|
||||||
option dhcp-max-message-size 2048;
|
option dhcp-max-message-size 2048;
|
||||||
use-host-decl-names on;
|
use-host-decl-names on;
|
||||||
#always-reply-rfc1048 on;
|
#always-reply-rfc1048 on;
|
||||||
|
|
||||||
subnet 192.168.33.0 netmask 255.255.255.0 {
|
subnet 192.168.33.0 netmask 255.255.255.0 {
|
||||||
option routers 192.168.33.1;
|
option routers 192.168.33.250;
|
||||||
option domain-name "fai.example";
|
option domain-name "fai";
|
||||||
option domain-name-servers 192.168.33.250;
|
option domain-name-servers 192.168.33.250;
|
||||||
option time-servers faiserver;
|
option time-servers faiserver;
|
||||||
# option ntp-servers faiserver;
|
option ntp-servers faiserver;
|
||||||
server-name faiserver;
|
server-name faiserver;
|
||||||
next-server faiserver;
|
next-server faiserver;
|
||||||
if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000" {
|
if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000" {
|
||||||
|
@ -21,12 +20,10 @@ subnet 192.168.33.0 netmask 255.255.255.0 {
|
||||||
if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007" {
|
if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007" {
|
||||||
filename "fai/syslinux.efi";
|
filename "fai/syslinux.efi";
|
||||||
}
|
}
|
||||||
allow unknown-clients;
|
|
||||||
pool {
|
|
||||||
range 192.168.33.100 192.168.33.150;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# generate a lot of entries with:
|
# generate a lot of entries with:
|
||||||
# perl -e 'for (1..10) {printf "host client%02s {hardware ethernet XXX:$_;fixed-address client%02s;}\n",$_,$_;}'
|
# perl -e 'for (1..10) {printf "host client%02s {hardware ethernet 52:54:00:11:23:%02X;fixed-address client%02s;}\n",$_,$_,$_;}'
|
||||||
# then replace XXX with the hardware addresses of your clients
|
# then replace 52:54:00:11:23:XX with the hardware addresses of your clients
|
||||||
|
# 52:54:00:11:23 is a prefix used by fai-kvm
|
||||||
|
host demohost {hardware ethernet 0:2:a3:b5:c5:41;fixed-address demohost;}
|
|
@ -0,0 +1,43 @@
|
||||||
|
# permission for a list of hosts
|
||||||
|
|
||||||
|
# the beowulf cluster
|
||||||
|
nucleus (nucleus,,)
|
||||||
|
atom00 (atom00,,)
|
||||||
|
atom01 (atom01,,)
|
||||||
|
atom02 (atom02,,)
|
||||||
|
atom03 (atom03,,)
|
||||||
|
atom04 (atom04,,)
|
||||||
|
atom05 (atom05,,)
|
||||||
|
atom06 (atom06,,)
|
||||||
|
atom07 (atom07,,)
|
||||||
|
atom08 (atom08,,)
|
||||||
|
atom09 (atom09,,)
|
||||||
|
atom10 (atom10,,)
|
||||||
|
atom11 (atom11,,)
|
||||||
|
atom12 (atom12,,)
|
||||||
|
atom13 (atom13,,)
|
||||||
|
atom14 (atom14,,)
|
||||||
|
atom15 (atom15,,)
|
||||||
|
atom16 (atom16,,)
|
||||||
|
atom17 (atom17,,)
|
||||||
|
atom18 (atom18,,)
|
||||||
|
atom19 (atom19,,)
|
||||||
|
atom20 (atom20,,)
|
||||||
|
atom21 (atom21,,)
|
||||||
|
atom22 (atom22,,)
|
||||||
|
atom23 (atom23,,)
|
||||||
|
atom24 (atom24,,)
|
||||||
|
atom25 (atom25,,)
|
||||||
|
|
||||||
|
atoms atom01 atom02 atom03 atom04 atom05 atom06 atom07 atom08 atom09 atom10 atom11 atom12 atom13 atom14 atom15 atom16 atom17 atom18 atom19 atom20 atom21 atom22 atom23 atom24 atom25
|
||||||
|
|
||||||
|
# used for script all_hosts
|
||||||
|
allhosts atom00 atoms
|
||||||
|
|
||||||
|
beowulf atoms atom00 nucleus
|
||||||
|
homeclients beowulf
|
||||||
|
|
||||||
|
faiclients workstations beowulf
|
||||||
|
|
||||||
|
# this definition grants permission for every host
|
||||||
|
# faiclients (,,)
|
|
@ -0,0 +1,41 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Thomas Lange, lange@informatik.uni-koeln.de, (c) 2001-2018
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
update_from() {
|
||||||
|
|
||||||
|
# update local mirror from a host
|
||||||
|
host=$1
|
||||||
|
shift
|
||||||
|
defopt="--keyring /usr/share/keyrings/debian-archive-keyring.gpg --method=http --rsync-extra=none --diff=none $allopt --host=$host --dist=$dist $sect"
|
||||||
|
|
||||||
|
echo "------------------ create mirror for debian ------------------"
|
||||||
|
debmirror $excl $destdir/debian $defopt $*
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# main program
|
||||||
|
#
|
||||||
|
# here you have to adjust the hostnames of the mirror and the names of the distributions
|
||||||
|
|
||||||
|
# excluding dbg_ packages saves a lot of disk space. About 33G for squeeze,wheezy in amd64,i386
|
||||||
|
excl="--exclude=-dbg_ --exclude=debian-installer-netboot-images --include=libc6-dbg"
|
||||||
|
|
||||||
|
debug="$@"
|
||||||
|
arch=amd64
|
||||||
|
dist=bullseye,bullseye-backports
|
||||||
|
|
||||||
|
destdir=/files/scratch/debmirror
|
||||||
|
sect="--section main,contrib,non-free"
|
||||||
|
allopt="$debug --state-cache-days=100 --ignore-missing-release --ignore-release-gpg --passive --nosource --arch=$arch"
|
||||||
|
|
||||||
|
# first sync from a mirror near to you
|
||||||
|
#update_from ftp.uni-koeln.de $*
|
||||||
|
# If this mirror isn't always up to date, sync again from an official mirror
|
||||||
|
|
||||||
|
# sync from an official mirror
|
||||||
|
update_from deb.debian.org --getcontents $*
|
||||||
|
|
||||||
|
# even one should not mirror the security site, but I will do it.
|
||||||
|
echo "------------------ create mirror for debian-security ------------------"
|
||||||
|
debmirror --keyring /usr/share/keyrings/debian-archive-keyring.gpg --method=http $excl $destdir/debian-security $allopt --host=deb.debian.org -r debian-security $sect -d bullseye-security $*
|
|
@ -1,309 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# mk-basefile, create basefiles for some distributions
|
|
||||||
#
|
|
||||||
# Thomas Lange, Uni Koeln, 2011-2020
|
|
||||||
# based on the Makefile implementation of Michael Goetze
|
|
||||||
#
|
|
||||||
# Usage example: mk-basefile -J STRETCH64
|
|
||||||
# This will create a STRETCH64.tar.xz basefile.
|
|
||||||
|
|
||||||
# Supported distributions (each i386/amd64):
|
|
||||||
# Debian GNU/Linux
|
|
||||||
# Ubuntu 14.04/16.04
|
|
||||||
# CentOS 5/6/7/8
|
|
||||||
# Scientific Linux Cern 5/6
|
|
||||||
#
|
|
||||||
# Packages you might want to install to use this command:
|
|
||||||
# debootstrap, rinse, xz-utils
|
|
||||||
|
|
||||||
|
|
||||||
# Define your local mirros here
|
|
||||||
# For the first stage, set the CentOS/SLC mirror in /etc/rinse/rinse.conf
|
|
||||||
MIRROR_DEBIAN=http://deb.debian.org/debian/
|
|
||||||
MIRROR_UBUNTU=http://mirror.netcologne.de/ubuntu/
|
|
||||||
MIRROR_CENTOS=http://mirror.netcologne.de/
|
|
||||||
|
|
||||||
EXCLUDE_SQUEEZE=isc-dhcp-client,isc-dhcp-common,info
|
|
||||||
EXCLUDE_WHEEZY=info
|
|
||||||
EXCLUDE_JESSIE=info
|
|
||||||
EXCLUDE_STRETCH=info
|
|
||||||
EXCLUDE_BUSTER=
|
|
||||||
EXCLUDE_BULLSEYE=
|
|
||||||
EXCLUDE_SID=
|
|
||||||
|
|
||||||
EXCLUDE_TRUSTY=dhcp3-client,dhcp3-common,info
|
|
||||||
EXCLUDE_XENIAL=udhcpc,dibbler-client,info
|
|
||||||
EXCLUDE_BIONIC=udhcpc,dibbler-client,info
|
|
||||||
EXCLUDE_FOCAL=udhcpc,dibbler-client,info
|
|
||||||
|
|
||||||
# here you can add packages, that are needed very early
|
|
||||||
INCLUDE_DEBIAN=
|
|
||||||
|
|
||||||
|
|
||||||
setarch() {
|
|
||||||
|
|
||||||
l32=
|
|
||||||
if [ X$1 = Xi386 ]; then
|
|
||||||
l32=linux32
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check() {
|
|
||||||
|
|
||||||
if [ `id -u` != 0 ]; then
|
|
||||||
echo "You must be root to create chroots."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
mknod $xtmp/test-dev-null c 1 3
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo "Cannot create device files on $xtmp, aborting."
|
|
||||||
echo "Perhaps this directory is mounted with option nodev."
|
|
||||||
rm -rf $xtmp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo test > $xtmp/test-dev-null
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo "Cannot create device files on $xtmp, aborting."
|
|
||||||
echo "Perhaps this directory is mounted with option nodev."
|
|
||||||
rm -rf $xtmp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm -f $xtmp/test-dev-null
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
mkpost-centos() {
|
|
||||||
|
|
||||||
# set local mirror for rinse post script
|
|
||||||
[ -z "$MIRROR_CENTOS" ] && return
|
|
||||||
cat <<EOM > $xtmp/post
|
|
||||||
#! /bin/sh
|
|
||||||
mkdir -p $xtmp/etc/yum.repos.d/orig
|
|
||||||
cp -p $xtmp/etc/yum.repos.d/*.repo $xtmp/etc/yum.repos.d/orig
|
|
||||||
perl -pi -e 's,mirrorlist=,#mirrorlist=,; s,#baseurl=http://mirror.centos.org,baseurl=$MIRROR_CENTOS,;' $xtmp/etc/yum.repos.d/CentOS-Base.repo
|
|
||||||
EOM
|
|
||||||
chmod 555 $xtmp/post
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
mkpost-slc() {
|
|
||||||
|
|
||||||
# set local mirror for rinse post script
|
|
||||||
ver=$1
|
|
||||||
[ -z "$MIRROR_SLC" ] && return
|
|
||||||
cat <<EOM > $xtmp/post
|
|
||||||
#! /bin/sh
|
|
||||||
mkdir -p $xtmp/etc/yum.repos.d/orig
|
|
||||||
cp -p $xtmp/etc/yum.repos.d/*.repo $xtmp/etc/yum.repos.d/orig
|
|
||||||
perl -pi -e 's,baseurl=http://linuxsoft.cern.ch,baseurl=$MIRROR_SLC,;' $xtmp/etc/yum.repos.d/slc$ver-os.repo
|
|
||||||
perl -pi -e 's,baseurl=http://linuxsoft.cern.ch,baseurl=$MIRROR_SLC,;' $xtmp/etc/yum.repos.d/slc$ver-updates.repo
|
|
||||||
|
|
||||||
EOM
|
|
||||||
chmod 555 $xtmp/post
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cleanup-deb() {
|
|
||||||
|
|
||||||
chroot $xtmp apt-get clean
|
|
||||||
rm -f $xtmp/etc/hostname $xtmp/etc/resolv.conf \
|
|
||||||
$xtmp/var/lib/apt/lists/*_* $xtmp/usr/bin/qemu-*-static \
|
|
||||||
$xtmp/etc/udev/rules.d/70-persistent-net.rules
|
|
||||||
> $xtmp/etc/machine-id
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cleanup-rinse() {
|
|
||||||
|
|
||||||
# check if chroot works
|
|
||||||
echo "Installed packages in chroot:"
|
|
||||||
chroot $xtmp rpm -qa|sort
|
|
||||||
echo -n "CHROOT rpm -qa: "
|
|
||||||
chroot $xtmp rpm -qa|wc -l
|
|
||||||
|
|
||||||
rm -f $xtmp/etc/resolv.conf $xtmp/post
|
|
||||||
if [ -d $xtmp/etc/yum.repos.d/orig ]; then
|
|
||||||
mv $xtmp/etc/yum.repos.d/orig/* $xtmp/etc/yum.repos.d/
|
|
||||||
rm -rf $xtmp/etc/yum.repos.d/orig
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tarit() {
|
|
||||||
|
|
||||||
tar $attributes --numeric-owner --one-file-system -C $xtmp -cf - . | $zip > $target.$ext
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
centos() {
|
|
||||||
|
|
||||||
local arch=$1
|
|
||||||
local vers=$2
|
|
||||||
local domain=$(domainname)
|
|
||||||
|
|
||||||
check
|
|
||||||
setarch $arch
|
|
||||||
mkpost-centos
|
|
||||||
$l32 rinse --directory $xtmp --distribution centos-$vers --arch $arch --before-post-install $xtmp/post
|
|
||||||
domainname $domain # workaround for #613377
|
|
||||||
cleanup-rinse
|
|
||||||
tarit
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
slc() {
|
|
||||||
|
|
||||||
local arch=$1
|
|
||||||
local vers=$2
|
|
||||||
|
|
||||||
check
|
|
||||||
setarch $arch
|
|
||||||
mkpost-slc $vers
|
|
||||||
$l32 rinse --directory $xtmp --distribution slc-$vers --arch $arch --before-post-install $xtmp/post
|
|
||||||
cleanup-rinse
|
|
||||||
tarit
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
debgeneric() {
|
|
||||||
|
|
||||||
local DIST=$1
|
|
||||||
shift
|
|
||||||
local mirror=$1
|
|
||||||
shift
|
|
||||||
local arch=$1
|
|
||||||
|
|
||||||
dist=${DIST%%[0-9][0-9]}
|
|
||||||
local exc="EXCLUDE_$dist"
|
|
||||||
[ -n "${!exc}" ] && exc="--exclude=${!exc}" || unset exc
|
|
||||||
dist=${dist,,}
|
|
||||||
|
|
||||||
check
|
|
||||||
if [ -n "$INCLUDE_DEBIAN" ]; then
|
|
||||||
local inc="--include=$INCLUDE_DEBIAN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$arch" ]; then
|
|
||||||
qemu-debootstrap --arch $arch ${exc} $inc $dist $xtmp $mirror
|
|
||||||
target="${target}_${arch^^}"
|
|
||||||
else
|
|
||||||
if [[ $DIST =~ 64 ]]; then
|
|
||||||
arch=amd64
|
|
||||||
else
|
|
||||||
arch=i386
|
|
||||||
fi
|
|
||||||
debootstrap --arch $arch ${exc} $inc $dist $xtmp $mirror
|
|
||||||
fi
|
|
||||||
cleanup-deb
|
|
||||||
tarit
|
|
||||||
}
|
|
||||||
|
|
||||||
prtdists() {
|
|
||||||
|
|
||||||
echo "Available:
|
|
||||||
|
|
||||||
CENTOS5_32 CENTOS5_64
|
|
||||||
CENTOS6_32 CENTOS6_64
|
|
||||||
CENTOS7_32 CENTOS7_64
|
|
||||||
CENTOS8_64
|
|
||||||
SLC5_32 SLC5_64
|
|
||||||
SLC6_32 SLC6_64
|
|
||||||
SLC7_64
|
|
||||||
TRUSTY32 TRUSTY64
|
|
||||||
XENIAL32 XENIAL64
|
|
||||||
BIONIC64
|
|
||||||
FOCAL64
|
|
||||||
SQUEEZE32 SQUEEZE64
|
|
||||||
WHEEZY32 WHEEZY64
|
|
||||||
JESSIE32 JESSIE64
|
|
||||||
STRETCH32 STRETCH64
|
|
||||||
BUSTER32 BUSTER64
|
|
||||||
BULLSEYE32 BULLSEYE64
|
|
||||||
SID32 SID64
|
|
||||||
"
|
|
||||||
}
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
|
|
||||||
cat <<EOF
|
|
||||||
mk-basefile, create minimal base files for a Linux distritubtion
|
|
||||||
|
|
||||||
Copyright (C) 2011-2020 by Thomas Lange
|
|
||||||
|
|
||||||
Usage: mk-basefile [OPTION] ... DISTRIBUTION
|
|
||||||
|
|
||||||
-s Show list of supported linux distributions
|
|
||||||
-f ARCH Build for foreign architecture ARCH.
|
|
||||||
-d DIR Use DIR for creating the temporary subtree structure.
|
|
||||||
-z Use gzip for compressing the tar file.
|
|
||||||
-J Use xz for compressing the tar file.
|
|
||||||
-k Keep the temporary subtree structure, do not remove it.
|
|
||||||
-h Print help.
|
|
||||||
|
|
||||||
Usage example: mk-basefile -J STRETCH64
|
|
||||||
This will create a STRETCH64.tar.xz basefile.
|
|
||||||
|
|
||||||
EOF
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# main routine
|
|
||||||
|
|
||||||
ext=tar
|
|
||||||
zip=cat
|
|
||||||
attributes=
|
|
||||||
cleanup=1
|
|
||||||
attributes="--xattrs --selinux --acls"
|
|
||||||
|
|
||||||
while getopts ashzJd:kf: opt ; do
|
|
||||||
case "$opt" in
|
|
||||||
a) echo "$0: Warning. -a is ignored, because xtattrs, acls and selinux are always added." ;;
|
|
||||||
d) export TMPDIR=$OPTARG ;;
|
|
||||||
f) export ARCH=$OPTARG ;;
|
|
||||||
z) zip="gzip -9"; ext=tar.gz ;;
|
|
||||||
J) zip="xz -8" ext=tar.xz ;;
|
|
||||||
k) cleanup=0 ;;
|
|
||||||
h) usage ;;
|
|
||||||
s) prtdists ; exit 0;;
|
|
||||||
?) exit 3 ;; # error in option parsing
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $(($OPTIND - 1))
|
|
||||||
|
|
||||||
xtmp=$(mktemp --tmpdir -d basefiles.XXXXXXXX)
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo "mktemp failed. Aborting."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
chmod 755 $xtmp
|
|
||||||
|
|
||||||
target=$1 # also the name of the output file
|
|
||||||
|
|
||||||
[ -z "$target" ] && usage
|
|
||||||
case "$target" in
|
|
||||||
CENTOS5_32) centos i386 5 ;;
|
|
||||||
CENTOS5_64) centos amd64 5 ;;
|
|
||||||
CENTOS6_32) centos i386 6 ;;
|
|
||||||
CENTOS6_64) centos amd64 6 ;;
|
|
||||||
CENTOS7_32) centos i386 7 ;;
|
|
||||||
CENTOS7_64) centos amd64 7 ;;
|
|
||||||
CENTOS8_64) centos amd64 8 ;;
|
|
||||||
SLC5_32) slc i386 5 ;;
|
|
||||||
SLC5_64) slc amd64 5 ;;
|
|
||||||
SLC6_32) slc i386 6 ;;
|
|
||||||
SLC6_64) slc amd64 6 ;;
|
|
||||||
SLC7_64) slc amd64 7 ;;
|
|
||||||
TRUSTY*|XENIAL*|BIONIC*|FOCAL*)
|
|
||||||
debgeneric $target $MIRROR_UBUNTU ;;
|
|
||||||
SQUEEZE*|WHEEZY*|JESSIE*|STRETCH*|BUSTER*|BULLSEYE*|SID*)
|
|
||||||
debgeneric $target $MIRROR_DEBIAN $ARCH;;
|
|
||||||
*) echo "Unknown distribution. Aborting."
|
|
||||||
prtdists
|
|
||||||
exit 99 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# cleanup
|
|
||||||
if [ $cleanup -eq 1 ]; then
|
|
||||||
rm -rf $xtmp
|
|
||||||
fi
|
|
|
@ -1,8 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
[ "$cmdlineclasses" ] || exit 0
|
|
||||||
|
|
||||||
# define the classes given on the cmdline (using -c) very early
|
|
||||||
echo $cmdlineclasses
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,21 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# do only execute if this is called on the client being installed. Do not use during fai-diskimage
|
|
||||||
if [ X$FAI_ACTION = Xinstall -a $do_init_tasks -eq 0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Echo architecture and OS name in uppercase. Do NOT remove these two lines.
|
|
||||||
uname -s | tr '[:lower:]' '[:upper:]'
|
|
||||||
command -v dpkg >&/dev/null && dpkg --print-architecture | tr a-z A-Z
|
|
||||||
|
|
||||||
# determin if we are a DHCP client or not
|
|
||||||
# count the : chars in the argument of ip=
|
|
||||||
n="${ip//[^:]}"
|
|
||||||
if [[ $ip =~ ^(on|any|dhcp)$ ]]; then
|
|
||||||
echo DHCPC
|
|
||||||
elif [ ${#n} -lt 6 ]; then
|
|
||||||
echo DHCPC
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,35 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Thomas Lange, 2002-2013, lange@informatik.uni-koeln.de
|
|
||||||
|
|
||||||
# NOTE: Files named *.sh will be evaluated, but their output ignored.
|
|
||||||
|
|
||||||
[ $do_init_tasks -eq 1 ] || return 0 # Do only execute when doing install
|
|
||||||
|
|
||||||
echo 0 > /proc/sys/kernel/printk
|
|
||||||
|
|
||||||
#kernelmodules=
|
|
||||||
# here, you can load modules depending on the kernel version
|
|
||||||
case $(uname -r) in
|
|
||||||
2.6*) kernelmodules="$kernelmodules mptspi dm-mod md-mod aes dm-crypt" ;;
|
|
||||||
[3456]*) kernelmodules="$kernelmodules mptspi dm-mod md-mod aes dm-crypt" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
for mod in $kernelmodules; do
|
|
||||||
[ X$verbose = X1 ] && echo Loading kernel module $mod
|
|
||||||
modprobe -a $mod 1>/dev/null 2>&1
|
|
||||||
done
|
|
||||||
|
|
||||||
ip ad show up | egrep -iv 'loopback|127.0.0.1|::1/128|_lft'
|
|
||||||
|
|
||||||
echo $printk > /proc/sys/kernel/printk
|
|
||||||
|
|
||||||
odisklist=$disklist
|
|
||||||
set_disk_info # recalculate list of available disks
|
|
||||||
if [ "$disklist" != "$odisklist" ]; then
|
|
||||||
echo New disklist: $disklist
|
|
||||||
echo disklist=\"$disklist\" >> $LOGDIR/additional.var
|
|
||||||
fi
|
|
||||||
|
|
||||||
save_dmesg # save new boot messages (from loading modules)
|
|
||||||
|
|
|
@ -1,165 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# parse *.profile and build a curses menu, so the user can select a profile
|
|
||||||
#
|
|
||||||
# (c) 2015 by Thomas Lange, lange@informatik.uni-koeln.de
|
|
||||||
# Universitaet zu Koeln
|
|
||||||
|
|
||||||
if [ X$FAI_ACTION = Xinstall -o X$FAI_ACTION = Xdirinstall -o X$FAI_ACTION = X ]; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ "$flag_menu" ] || return 0
|
|
||||||
|
|
||||||
out=$(tty)
|
|
||||||
tempfile=`(tempfile) 2>/dev/null`
|
|
||||||
tempfile2=`(tempfile) 2>/dev/null`
|
|
||||||
trap "rm -f $tempfile $tempfile2" EXIT INT QUIT
|
|
||||||
|
|
||||||
# declare the data structure, use associative arrays
|
|
||||||
declare -A arshort
|
|
||||||
declare -A ardesc
|
|
||||||
declare -A arlong
|
|
||||||
declare -A arclasses
|
|
||||||
declare -a list
|
|
||||||
|
|
||||||
|
|
||||||
parse_profile() {
|
|
||||||
|
|
||||||
# read a profile and add all info to the data structure
|
|
||||||
|
|
||||||
local short
|
|
||||||
local long
|
|
||||||
local desc
|
|
||||||
local name
|
|
||||||
local classes
|
|
||||||
local lflag=0
|
|
||||||
|
|
||||||
# disable word splitting when reading a line, this helps reading a keyword without a value
|
|
||||||
local OIF=$IFS
|
|
||||||
IFS=
|
|
||||||
|
|
||||||
while read -r line || [[ -n $line ]]; do
|
|
||||||
|
|
||||||
if [[ $line =~ "Name: " ]]; then
|
|
||||||
if [ -n "$long" ]; then
|
|
||||||
arlong[$name]="$long"
|
|
||||||
fi
|
|
||||||
short=
|
|
||||||
desc=
|
|
||||||
long=
|
|
||||||
classes=
|
|
||||||
lflag=0
|
|
||||||
name=${line##Name: }
|
|
||||||
[ $debug ] && echo "XX NAME $name found"
|
|
||||||
list+=("$name") # add new item to list
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $line =~ "Description: " ]]; then
|
|
||||||
lflag=0
|
|
||||||
desc=${line##Description: }
|
|
||||||
[ $debug ] && echo "XX $desc found"
|
|
||||||
ardesc[$name]="$desc"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $line =~ "Short: " ]]; then
|
|
||||||
lflag=0
|
|
||||||
short=${line##Short: }
|
|
||||||
[ $debug ] && echo "XX $short found"
|
|
||||||
arshort[$name]="$short"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $line =~ "Classes: " ]]; then
|
|
||||||
lflag=0
|
|
||||||
classes=${line##Classes: }
|
|
||||||
[ $debug ] && echo "XX classes found"
|
|
||||||
arclasses[$name]="$classes"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $line =~ "Long: " ]]; then
|
|
||||||
lflag=1
|
|
||||||
long=${line##Long: }
|
|
||||||
[ $debug ] && echo "XX long found"
|
|
||||||
|
|
||||||
# else it's another long line
|
|
||||||
elif [ $lflag -eq 1 ]; then
|
|
||||||
long+="\n$line"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $line =~ "Default: " ]]; then
|
|
||||||
lflag=0
|
|
||||||
default=${line##Default: }
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
done < $1
|
|
||||||
|
|
||||||
if [ -n "$long" ]; then
|
|
||||||
arlong[$name]="$long"
|
|
||||||
fi
|
|
||||||
IFS=$OIF
|
|
||||||
}
|
|
||||||
|
|
||||||
prtresult() {
|
|
||||||
|
|
||||||
# set newclasses which is used by fai-class(1)
|
|
||||||
local res=$(<$tempfile)
|
|
||||||
echo "$BASH_SOURCE defined new classes: ${arclasses[$res]}"
|
|
||||||
newclasses="${arclasses[$res]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# read all files with name matching *.profile
|
|
||||||
_parsed=0
|
|
||||||
shopt -s nullglob
|
|
||||||
for _f in *.profile; do
|
|
||||||
parse_profile $_f
|
|
||||||
_parsed=1
|
|
||||||
done
|
|
||||||
unset _f
|
|
||||||
|
|
||||||
# do nothing if no profile was read
|
|
||||||
if [ $_parsed -eq 0 ]; then
|
|
||||||
unset _parsed
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# create the argument list containing the menu entries
|
|
||||||
# and the help text file
|
|
||||||
for i in "${list[@]}"; do
|
|
||||||
par+=("$i")
|
|
||||||
par+=("${ardesc[${i}]}")
|
|
||||||
par+=("${arshort[${i}]}")
|
|
||||||
echo "Name: ${i}" >> $tempfile2
|
|
||||||
echo -e ${arlong[${i}]} >> $tempfile2
|
|
||||||
echo -e "Classes: " ${arclasses[${i}]} "\n" >> $tempfile2
|
|
||||||
done
|
|
||||||
unset i
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
|
|
||||||
dialog --clear --item-help --title "FAI - Fully Automatic Installation" --help-button \
|
|
||||||
--default-item "$default" \
|
|
||||||
--menu "\nSelect your FAI profile\n\nThe profile will define a list of classes,\nwhich are used by FAI.\n\n\n"\
|
|
||||||
15 70 0 "${par[@]}" 2> $tempfile 1> $out
|
|
||||||
|
|
||||||
_retval=$?
|
|
||||||
case $_retval in
|
|
||||||
0)
|
|
||||||
prtresult
|
|
||||||
break ;;
|
|
||||||
1)
|
|
||||||
echo "No profile selected."
|
|
||||||
break ;;
|
|
||||||
2)
|
|
||||||
dialog --title "Description of all profiles" --textbox $tempfile2 0 0 1> $out;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
done
|
|
||||||
unset par ardesc arshort arlong arclasses list tempfile tempfile2 _parsed _retval line
|
|
|
@ -1,28 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
if [ X$FAI_ACTION = Xinstall -o X$FAI_ACTION = X ]; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [ X$action = Xdirinstall ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
grep -q INSTALL $LOGDIR/FAI_CLASSES || return 0
|
|
||||||
[ "$flag_menu" ] || return 0
|
|
||||||
|
|
||||||
out=$(tty)
|
|
||||||
red=$(mktemp)
|
|
||||||
echo 'screen_color = (CYAN,RED,ON)' > $red
|
|
||||||
|
|
||||||
DIALOGRC=$red dialog --colors --clear --aspect 6 --title "FAI - Fully Automatic Installation" --trim \
|
|
||||||
--msgbox "\n\n If you continue, \n all your data on the disk \n \n|\Zr\Z1 WILL BE DESTROYED \Z0\Zn|\n\n" 0 0 1>$out
|
|
||||||
|
|
||||||
# stop on any error, or if ESC was hit
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
task_error 999
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm $red
|
|
||||||
unset red
|
|
|
@ -1,32 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# assign classes to hosts based on their hostname
|
|
||||||
|
|
||||||
# do not use this if a menu will be presented
|
|
||||||
[ "$flag_menu" ] && exit 0
|
|
||||||
|
|
||||||
# use a list of classes for our demo machine
|
|
||||||
case $HOSTNAME in
|
|
||||||
faiserver)
|
|
||||||
echo "FAIBASE DEBIAN DEMO FAISERVER" ;;
|
|
||||||
demohost|client*)
|
|
||||||
echo "FAIBASE DEBIAN DEMO" ;;
|
|
||||||
xfcehost)
|
|
||||||
echo "FAIBASE DEBIAN DEMO XORG XFCE LVM";;
|
|
||||||
gnomehost)
|
|
||||||
echo "FAIBASE DEBIAN DEMO XORG GNOME";;
|
|
||||||
ubuntuhost)
|
|
||||||
echo "FAIBASE DEBIAN DEMO UBUNTU FOCAL FOCAL64 XORG";;
|
|
||||||
centos)
|
|
||||||
echo "FAIBASE CENTOS" # you may want to add class XORG here
|
|
||||||
ifclass AMD64 && echo CENTOS8_64
|
|
||||||
;;
|
|
||||||
slchost)
|
|
||||||
# Scientific Linux Cern, is very similar to CentOS. SLC should alsways use the class CENTOS
|
|
||||||
echo "FAIBASE CENTOS SLC" # you may want to add class XORG here
|
|
||||||
ifclass I386 && echo SLC7_32
|
|
||||||
ifclass AMD64 && echo SLC7_64
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "UBUNTU MINT DESKTOP" ;;
|
|
||||||
esac
|
|
|
@ -1,11 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
ifclass -o CENTOS SLC && exit 0
|
|
||||||
|
|
||||||
ifclass -o GRUB_PC GRUB_EFI && exit 0
|
|
||||||
|
|
||||||
if [ -d /sys/firmware/efi ]; then
|
|
||||||
echo GRUB_EFI
|
|
||||||
elif ifclass -o I386 AMD64 ; then
|
|
||||||
echo GRUB_PC
|
|
||||||
fi
|
|
|
@ -1,21 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# define classes for disk_config in an EFI enironment
|
|
||||||
|
|
||||||
if [ ! -d /sys/firmware/efi ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ifclass FAIBASE; then
|
|
||||||
echo FAIBASE_EFI
|
|
||||||
elif ifclass FAISERVER; then
|
|
||||||
echo FAISERVER_EFI
|
|
||||||
elif ifclass LVM; then
|
|
||||||
echo LVM_EFI
|
|
||||||
elif ifclass XENIAL; then
|
|
||||||
echo XENIAL_EFI
|
|
||||||
elif ifclass UBUNTU; then
|
|
||||||
echo UBUNTU_EFI
|
|
||||||
elif ifclass HW4F_DESKTOP; then
|
|
||||||
echo HW4F_DESKTOP_EFI
|
|
||||||
fi
|
|
|
@ -1,9 +0,0 @@
|
||||||
CONSOLEFONT=lat9v-16
|
|
||||||
KEYMAP=us
|
|
||||||
DEFAULTLOCALE=en_US.UTF-8
|
|
||||||
SUPPORTEDLOCALE=en_US.UTF-8:en_US:en
|
|
||||||
|
|
||||||
# if you install much software and have only few RAM, use the RAM disk
|
|
||||||
# not for var/cache/yum
|
|
||||||
#FAI_RAMDISKS="$target/var/lib/rpm $target/var/cache/yum"
|
|
||||||
FAI_RAMDISKS="$target/var/lib/rpm"
|
|
|
@ -1 +0,0 @@
|
||||||
NIC1=eth0
|
|
|
@ -1,19 +0,0 @@
|
||||||
release=buster
|
|
||||||
apt_cdn=http://deb.debian.org
|
|
||||||
security_cdn=http://security.debian.org
|
|
||||||
|
|
||||||
CONSOLEFONT=
|
|
||||||
KEYMAP=de-latin1
|
|
||||||
|
|
||||||
# MODULESLIST contains modules that will be loaded by the new system,
|
|
||||||
# not during installation these modules will be written to /etc/modules
|
|
||||||
# If you need a module during installation, add it to $kernelmodules
|
|
||||||
# in 20-hwdetect.sh.
|
|
||||||
MODULESLIST="usbhid psmouse"
|
|
||||||
|
|
||||||
# if you have enough RAM (>2GB) you may want to enable this line. It
|
|
||||||
# also puts /var/cache into a ramdisk.
|
|
||||||
#FAI_RAMDISKS="$target/var/lib/dpkg $target/var/cache"
|
|
||||||
|
|
||||||
# if you want to use the faiserver as APT proxy
|
|
||||||
APTPROXY=http://faiserver:3142
|
|
|
@ -1,22 +0,0 @@
|
||||||
# default values for installation. You can override them in your *.var files
|
|
||||||
|
|
||||||
# allow installation of packages from unsigned repositories
|
|
||||||
FAI_ALLOW_UNSIGNED=0
|
|
||||||
|
|
||||||
# Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not.
|
|
||||||
UTC=yes
|
|
||||||
TIMEZONE=Europe/Berlin
|
|
||||||
|
|
||||||
# the hash of the root password for the new installed linux system
|
|
||||||
# pw is "fai"
|
|
||||||
ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
|
|
||||||
|
|
||||||
# errors in tasks greater than this value will cause the installation to stop
|
|
||||||
STOP_ON_ERROR=700
|
|
||||||
|
|
||||||
# set parameter for install_packages(8)
|
|
||||||
MAXPACKAGES=800
|
|
||||||
|
|
||||||
# a user account will be created
|
|
||||||
username=demo
|
|
||||||
USERPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
|
|
|
@ -1,3 +0,0 @@
|
||||||
# german environment (for Debian)
|
|
||||||
KEYMAP=de-latin1-nodeadkeys
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
FAI_ACTION=install
|
|
|
@ -1 +0,0 @@
|
||||||
FAI_ACTION=inventory
|
|
|
@ -1 +0,0 @@
|
||||||
FAI_ACTION=sysinfo
|
|
|
@ -1,2 +0,0 @@
|
||||||
ubuntumirror=http://archive.ubuntu.com
|
|
||||||
ubuntudist=focal
|
|
|
@ -1,78 +0,0 @@
|
||||||
Default: HW4F Desktop
|
|
||||||
|
|
||||||
Name: HW4F Desktop
|
|
||||||
Description: Desktop installtion for Hardware for future
|
|
||||||
Short: HW4F
|
|
||||||
Long: Ubuntu 20.04 LTS (Focal Fossa) Desktop installtion
|
|
||||||
Classes: INSTALL GERMAN HW4F_DESKTOP UBUNTU HW4F_DESKTOP_LAST
|
|
||||||
|
|
||||||
Name: Secure erase SSD
|
|
||||||
Description: Run a secure erase for SSD
|
|
||||||
Short: Secure erase
|
|
||||||
Long: Run a secure erase on SSD
|
|
||||||
Classes: SECURE_ERASE
|
|
||||||
|
|
||||||
Name: Ubuntu
|
|
||||||
Description: Ubuntu
|
|
||||||
Short: Ubuntu
|
|
||||||
Long: Ubuntu 20.04 LTS (Focal Fossa)
|
|
||||||
Classes: INSTALL UBUNTU
|
|
||||||
|
|
||||||
Name: Minimalist debian
|
|
||||||
Description: Minimal debian installation
|
|
||||||
Short: Simple debian
|
|
||||||
Long: Simple debian without additional packages
|
|
||||||
Classes: DEBIAN
|
|
||||||
|
|
||||||
Name: Debian Desktop with Cinnamon
|
|
||||||
Description: Xfce desktop, LVM partitioning
|
|
||||||
Short: A fancy Xfce desktop will be installed, the user account is demo
|
|
||||||
Long: This is the Xfce desktop example. Additional account called
|
|
||||||
demo with password: fai, root password: fai
|
|
||||||
All needed packages are already on the CD or USB stick.
|
|
||||||
Classes: INSTALL DEBIAN CINNAMON
|
|
||||||
|
|
||||||
Name: Xfce
|
|
||||||
Description: Xfce desktop, LVM partitioning
|
|
||||||
Short: A fancy Xfce desktop will be installed, the user account is demo
|
|
||||||
Long: This is the Xfce desktop example. Additional account called
|
|
||||||
demo with password: fai, root password: fai
|
|
||||||
All needed packages are already on the CD or USB stick.
|
|
||||||
Classes: INSTALL FAIBASE DEBIAN DEMO XORG XFCE LVM
|
|
||||||
|
|
||||||
Name: Gnome
|
|
||||||
Description: Gnome desktop installation
|
|
||||||
Short: A Gnome desktop, no LVM, You will get an account called demo
|
|
||||||
Long: This is the Gnome desktop example. Additional account called
|
|
||||||
demo with password: fai, root password: fai
|
|
||||||
You should have a fast network connection, because most packages are
|
|
||||||
downloaded from the internet.
|
|
||||||
Classes: INSTALL FAIBASE DEBIAN DEMO XORG GNOME
|
|
||||||
|
|
||||||
Name: CentOS 8
|
|
||||||
Description: CentOS 8 with Xfce desktop
|
|
||||||
Short: A normal Xfce desktop, running CentOS 8
|
|
||||||
Long: We use the Debian nfsroot for installing the CentOS 8 OS.
|
|
||||||
You should have a fast network connection, because most packages are
|
|
||||||
downloaded from the internet.
|
|
||||||
Classes: INSTALL FAIBASE CENTOS CENTOS8_64 XORG
|
|
||||||
|
|
||||||
Name: Ubuntu
|
|
||||||
Description: Ubuntu 20.04 desktop installation
|
|
||||||
Short: Unity desktop
|
|
||||||
Long: We use the Debian nfsroot for installing the Ubuntu OS.
|
|
||||||
You should have a fast network connection, because most packages are
|
|
||||||
downloaded from the internet.
|
|
||||||
Classes: INSTALL FAIBASE DEMO DEBIAN UBUNTU FOCAL FOCAL64 XORG
|
|
||||||
|
|
||||||
Name: Inventory
|
|
||||||
Description: Show hardware info
|
|
||||||
Short: Show some basic hardware infos
|
|
||||||
Long: Execute commands for showing hardware info
|
|
||||||
Classes: INVENTORY
|
|
||||||
|
|
||||||
Name: Sysinfo
|
|
||||||
Description: Show defailed system information
|
|
||||||
Short: Show detailed hardware and system information
|
|
||||||
Long: Execute a lot of commands for collecting system information
|
|
||||||
Classes: SYSINFO
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Linux command line:
|
|
||||||
grub-pc grub2/linux_cmdline_default string elevator=noop quiet
|
|
|
@ -1,9 +0,0 @@
|
||||||
exim4-config exim4/dc_eximconfig_configtype select local delivery only; not on a network
|
|
||||||
locales locales/default_environment_locale select de_DE.UTF-8
|
|
||||||
locales locales/locales_to_be_generated multiselect de_DE.UTF-8 UTF-8
|
|
||||||
keyboard-configuration keyboard-configuration/modelcode string pc105
|
|
||||||
keyboard-configuration keyboard-configuration/xkb-keymap select us
|
|
||||||
keyboard-configuration keyboard-configuration/variant select Deutsch
|
|
||||||
keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC
|
|
||||||
keyboard-configuration keyboard-configuration/layoutcode string de
|
|
||||||
keyboard-configuration keyboard-configuration/optionscode string ctrl:nocaps,terminate:ctrl_alt_bksp
|
|
|
@ -1,8 +0,0 @@
|
||||||
locales locales/default_environment_locale select de_DE.UTF-8
|
|
||||||
locales locales/locales_to_be_generated multiselect de_DE.UTF-8 UTF-8
|
|
||||||
keyboard-configuration keyboard-configuration/modelcode string pc105
|
|
||||||
keyboard-configuration keyboard-configuration/xkb-keymap select de
|
|
||||||
keyboard-configuration keyboard-configuration/variant select Germany
|
|
||||||
keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC
|
|
||||||
keyboard-configuration keyboard-configuration/layoutcode string de
|
|
||||||
keyboard-configuration keyboard-configuration/optionscode string ctrl:nocaps,terminate:ctrl_alt_bksp
|
|
|
@ -1,36 +0,0 @@
|
||||||
locales locales/default_environment_locale select de_DE.UTF-8
|
|
||||||
locales locales/locales_to_be_generated multiselect de_DE.UTF-8 UTF-8
|
|
||||||
|
|
||||||
xserver-xorg xserver-xorg/config/inputdevice/keyboard/layout string de
|
|
||||||
xserver-xorg xserver-xorg/config/inputdevice/keyboard/model string pc105
|
|
||||||
xserver-xorg xserver-xorg/config/inputdevice/keyboard/options string lv3:ralt_switch
|
|
||||||
xserver-xorg xserver-xorg/autodetect_monitor boolean false
|
|
||||||
xserver-xorg xserver-xorg/autodetect_keyboard boolean true
|
|
||||||
xserver-xorg xserver-xorg/autodetect_mouse boolean true
|
|
||||||
xserver-xorg xserver-xorg/autodetect_video_card boolean true
|
|
||||||
|
|
||||||
console-setup console-setup/variant select Germany
|
|
||||||
console-setup console-setup/charmap select UTF-8
|
|
||||||
console-setup console-setup/layoutcode string de
|
|
||||||
console-setup console-setup/compose select No compose key
|
|
||||||
console-setup console-setup/fontsize-text select 16
|
|
||||||
console-setup console-setup/optionscode string lv3:ralt_switch
|
|
||||||
console-setup console-setup/layout select Germany
|
|
||||||
console-setup console-setup/detected note
|
|
||||||
console-setup console-setup/variantcode string
|
|
||||||
console-setup console-setup/codesetcode string Lat15
|
|
||||||
console-setup console-setup/modelcode string pc105
|
|
||||||
console-setup console-setup/ask_detect boolean false
|
|
||||||
console-setup console-setup/altgr select Right Alt
|
|
||||||
console-setup console-setup/ttys string /dev/tty[1-6]
|
|
||||||
console-setup console-setup/model select Generic 105-key (Intl) PC
|
|
||||||
console-setup console-setup/fontsize-fb select 16
|
|
||||||
console-setup console-setup/switch select No temporary switch
|
|
||||||
console-setup console-setup/codeset select # Latin1 and Latin5 - western Europe and Turkic languages
|
|
||||||
console-setup console-setup/toggle select No toggling
|
|
||||||
console-setup console-setup/fontface select VGA
|
|
||||||
console-setup console-setup/fontsize string 16
|
|
||||||
|
|
||||||
tzdata tzdata/Zones/Etc select UTC
|
|
||||||
tzdata tzdata/Zones/Europe select Berlin
|
|
||||||
tzdata tzdata/Areas select Europe
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,16 +0,0 @@
|
||||||
# example of new config file for setup-storage
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:msdos bootable:1 fstabkey:label
|
|
||||||
|
|
||||||
# Note that the CentOS 5 version of GRUB cannot read from ext3 filesystems with inode_size > 128
|
|
||||||
# CentOS 5.6 needs /boot as ext3, so we use ext3 for /
|
|
||||||
|
|
||||||
#primary / 350 ext3 rw,noatime,errors=remount-ro createopts="-L ROOT -I 128"
|
|
||||||
|
|
||||||
# use following line for CentOS 7
|
|
||||||
primary / 4G-50G ext4 rw,noatime,errors=remount-ro createopts="-L ROOT"
|
|
||||||
|
|
||||||
logical swap 200-10G swap sw createopts="-L SWAP"
|
|
||||||
logical /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L HOME -m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,7 +0,0 @@
|
||||||
# config for a disk image for a VM
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid align-at:1M
|
|
||||||
|
|
||||||
primary / 300- ext4 rw,discard,barrier=0,noatime,errors=remount-ro tuneopts="-c 0 -i 0"
|
|
|
@ -1,9 +0,0 @@
|
||||||
# example of new config file for setup-storage
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro
|
|
||||||
logical swap 200-10G swap sw
|
|
||||||
logical /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,10 +0,0 @@
|
||||||
# example of new config file for setup-storage
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:gpt bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary /boot/efi 512M vfat rw
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro
|
|
||||||
primary swap 200-10G swap sw
|
|
||||||
primary /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,11 +0,0 @@
|
||||||
# config file for an FAI install server
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:msdos fstabkey:uuid
|
|
||||||
|
|
||||||
primary / 2G-15G ext4 rw,noatime,errors=remount-ro
|
|
||||||
logical swap 200-1000 swap sw
|
|
||||||
logical /tmp 100-1000 ext4 rw,noatime,nosuid,nodev createopts="-m 0" tuneopts="-c 0 -i 0"
|
|
||||||
logical /home 100-40% ext4 rw,noatime,nosuid,nodev createopts="-m 1" tuneopts="-c 0 -i 0"
|
|
||||||
logical /srv 1G-50% ext4 rw,noatime createopts="-m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,12 +0,0 @@
|
||||||
# config file for an FAI install server
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:gpt fstabkey:uuid
|
|
||||||
|
|
||||||
primary /boot/efi 512M vfat rw
|
|
||||||
primary / 2G-15G ext4 rw,noatime,errors=remount-ro
|
|
||||||
primary swap 200-1000 swap sw
|
|
||||||
primary /tmp 100-1000 ext4 rw,noatime,nosuid,nodev createopts="-m 0" tuneopts="-c 0 -i 0"
|
|
||||||
primary /home 100-40% ext4 rw,noatime,nosuid,nodev createopts="-m 1" tuneopts="-c 0 -i 0"
|
|
||||||
primary /srv 1G-50% ext4 rw,noatime createopts="-m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,5 +0,0 @@
|
||||||
disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro
|
|
||||||
logical swap 200-10G swap sw
|
|
||||||
logical /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,6 +0,0 @@
|
||||||
disk_config disk1 disklabel:gpt bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary /boot/efi 512M vfat rw
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro
|
|
||||||
primary swap 200-10G swap sw
|
|
||||||
primary /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1" tuneopts="-c 0 -i 0"
|
|
|
@ -1,15 +0,0 @@
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
# entire disk with LVM, separate /home
|
|
||||||
|
|
||||||
disk_config disk1 fstabkey:uuid align-at:1M
|
|
||||||
|
|
||||||
primary /boot 200 ext2 rw,noatime
|
|
||||||
primary - 4G- - -
|
|
||||||
|
|
||||||
disk_config lvm
|
|
||||||
|
|
||||||
vg vg1 disk1.2
|
|
||||||
vg1-root / 3G-50G ext4 noatime,rw
|
|
||||||
vg1-swap swap 200-4G swap sw
|
|
||||||
vg1-home /home 600- ext4 noatime,nosuid,nodev,rw
|
|
|
@ -1,16 +0,0 @@
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
# entire disk with LVM, separate /home
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:gpt fstabkey:uuid align-at:1M
|
|
||||||
|
|
||||||
primary /boot/efi 512M vfat rw
|
|
||||||
primary /boot 200 ext2 rw,noatime
|
|
||||||
primary - 4G- - -
|
|
||||||
|
|
||||||
disk_config lvm
|
|
||||||
|
|
||||||
vg vg1 disk1.3
|
|
||||||
vg1-root / 3G-50G ext4 noatime,rw
|
|
||||||
vg1-swap swap 200-4G swap sw
|
|
||||||
vg1-home /home 600- ext4 noatime,nosuid,nodev,rw
|
|
|
@ -1,12 +0,0 @@
|
||||||
# example of new config file for setup-storage
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
# this is a copy of FAIBASE, but with metadata_csum disabled.
|
|
||||||
# Ubuntu XENIAL does not yet suport this option
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro createopts="-O ^metadata_csum"
|
|
||||||
logical swap 200-1G swap sw
|
|
||||||
logical /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1 -O ^metadata_csum" tuneopts="-c 0 -i 0"
|
|
|
@ -1,13 +0,0 @@
|
||||||
# example of new config file for setup-storage
|
|
||||||
#
|
|
||||||
# <type> <mountpoint> <size> <fs type> <mount options> <misc options>
|
|
||||||
|
|
||||||
# this is a copy of FAIBASE, but with metadata_csum disabled.
|
|
||||||
# Ubuntu XENIAL does not yet suport this option
|
|
||||||
|
|
||||||
disk_config disk1 disklabel:gpt bootable:1 fstabkey:uuid
|
|
||||||
|
|
||||||
primary /boot/efi 512M vfat rw
|
|
||||||
primary / 2G-50G ext4 rw,noatime,errors=remount-ro createopts="-O ^metadata_csum"
|
|
||||||
primary swap 200-1G swap sw
|
|
||||||
primary /home 100- ext4 rw,noatime,nosuid,nodev createopts="-L home -m 1 -O ^metadata_csum" tuneopts="-c 0 -i 0"
|
|
|
@ -1,5 +0,0 @@
|
||||||
DPkg {
|
|
||||||
Options {
|
|
||||||
"--force-confdef";
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,11 +0,0 @@
|
||||||
Package: *
|
|
||||||
Pin: origin live.linuxmint.com
|
|
||||||
Pin-Priority: 750
|
|
||||||
|
|
||||||
Package: *
|
|
||||||
Pin: release o=linuxmint,c=upstream
|
|
||||||
Pin-Priority: 700
|
|
||||||
|
|
||||||
Package: *
|
|
||||||
Pin: release o=Ubuntu
|
|
||||||
Pin-Priority: 500
|
|
|
@ -1,3 +0,0 @@
|
||||||
deb {%apt_cdn%}/debian {%release%} main
|
|
||||||
deb {%security_cdn%}/debian-security {%release%}/updates main
|
|
||||||
deb {%apt_cdn%}/debian {%release%}-updates main
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,49 +0,0 @@
|
||||||
# A configuration file for setupcon
|
|
||||||
|
|
||||||
# Change to "yes" and setupcon will explain what is being doing
|
|
||||||
VERBOSE_OUTPUT=no
|
|
||||||
|
|
||||||
# Setup these consoles. Most people do not need to change this.
|
|
||||||
ACTIVE_CONSOLES="/dev/tty[1-6]"
|
|
||||||
|
|
||||||
# Put here your encoding. Valid charmaps are: UTF-8 ARMSCII-8 CP1251
|
|
||||||
# CP1255 CP1256 GEORGIAN-ACADEMY GEORGIAN-PS IBM1133 ISIRI-3342
|
|
||||||
# ISO-8859-1 ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-6
|
|
||||||
# ISO-8859-7 ISO-8859-8 ISO-8859-9 ISO-8859-10 ISO-8859-11 ISO-8859-13
|
|
||||||
# ISO-8859-14 ISO-8859-15 ISO-8859-16 KOI8-R KOI8-U TIS-620 VISCII
|
|
||||||
CHARMAP="UTF-8"
|
|
||||||
|
|
||||||
# The codeset determines which symbols are supported by the font.
|
|
||||||
# Valid codesets are: Arabic Armenian CyrAsia CyrKoi CyrSlav Ethiopian
|
|
||||||
# Georgian Greek Hebrew Lao Lat15 Lat2 Lat38 Lat7 Thai Uni1 Uni2 Uni3
|
|
||||||
# Vietnamese. Read README.fonts for explanation.
|
|
||||||
CODESET="Lat15"
|
|
||||||
|
|
||||||
# Valid font faces are: VGA (sizes 8, 14 and 16), Terminus (sizes
|
|
||||||
# 12x6, 14, 16, 20x10, 24x12, 28x14 and 32x16), TerminusBold (sizes
|
|
||||||
# 14, 16, 20x10, 24x12, 28x14 and 32x16), TerminusBoldVGA (sizes 14
|
|
||||||
# and 16), Fixed (sizes 13, 14, 15, 16 and 18), Goha (sizes 12, 14 and
|
|
||||||
# 16), GohaClassic (sizes 12, 14 and 16).
|
|
||||||
FONTFACE="VGA"
|
|
||||||
FONTSIZE="16"
|
|
||||||
|
|
||||||
# You can also directly specify nonstandard font and ACM to load:
|
|
||||||
# FONT=/usr/local/share/funnyfonts/sarge16.psf
|
|
||||||
# ACM=/usr/local/share/consoletrans/my_special_encoding.acm
|
|
||||||
|
|
||||||
# The following variables describe your keyboard and can have the same
|
|
||||||
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
|
|
||||||
# in /etc/X11/xorg.conf.
|
|
||||||
XKBMODEL="pc105"
|
|
||||||
XKBLAYOUT="de"
|
|
||||||
XKBVARIANT=""
|
|
||||||
XKBOPTIONS=""
|
|
||||||
|
|
||||||
|
|
||||||
# Do not update the following md5 sum if you change
|
|
||||||
# /etc/console-setup/boottime.kmap.gz and Debconf will not overwrite
|
|
||||||
# your custom keymap. Do not update it even if you want to make
|
|
||||||
# Debconf overwrite it. Instead simply specify the empty string as
|
|
||||||
# a md5 sum.
|
|
||||||
|
|
||||||
BOOTTIME_KMAP_MD5=""
|
|
|
@ -1,6 +0,0 @@
|
||||||
# Disable systemd's network interface name management.
|
|
||||||
# References:
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863385
|
|
||||||
# https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
|
|
||||||
|
|
||||||
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT net.ifnames=0"
|
|
|
@ -1 +0,0 @@
|
||||||
LANG="de_DE.UTF-8"
|
|
|
@ -1,8 +0,0 @@
|
||||||
# See fai.conf(5) for detailed information.
|
|
||||||
|
|
||||||
# Account for saving log files and calling fai-chboot.
|
|
||||||
LOGUSER=fai
|
|
||||||
|
|
||||||
# URL to access the fai config space
|
|
||||||
# If undefined, use default nfs://<install server>/$FAI_CONFIGDIR
|
|
||||||
FAI_CONFIG_SRC=nfs://faiserver/srv/fai/config
|
|
|
@ -1,15 +0,0 @@
|
||||||
# For a detailed description see nfsroot.conf(5)
|
|
||||||
|
|
||||||
# "<suite> <mirror>" for debootstrap
|
|
||||||
FAI_DEBOOTSTRAP="buster http://deb.debian.org/debian"
|
|
||||||
FAI_ROOTPW='$5$n4TiokMaqws2PC/i$eqDh77it8N/haBU6OeE6WqbBjI0E1IUczp2EJ7Tr4J/'
|
|
||||||
|
|
||||||
NFSROOT=/srv/fai/nfsroot
|
|
||||||
TFTPROOT=/srv/tftp/fai
|
|
||||||
NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/
|
|
||||||
FAI_DEBOOTSTRAP_OPTS="--exclude=info"
|
|
||||||
|
|
||||||
# Configuration space
|
|
||||||
FAI_CONFIGDIR=/srv/fai/config
|
|
||||||
|
|
||||||
NFSROOT_ETC_HOSTS="192.168.33.250 faiserver"
|
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
Plan your installation, and FAI installs your plan.
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# regenerate ssh_host keys
|
|
||||||
ls /etc/ssh/ssh_host_* >/dev/null 2>&1
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
dpkg-reconfigure -fnoninteractive openssh-server
|
|
||||||
fi
|
|
||||||
rm $0
|
|
|
@ -1,102 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# setup script that is only run once at boot time
|
|
||||||
# set up an FAI install server
|
|
||||||
|
|
||||||
NORMAL='\E(B\E[m'
|
|
||||||
RED='\E[31m'
|
|
||||||
GREEN='\E[32m'
|
|
||||||
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
# setup network
|
|
||||||
nic=$(awk '/iface/ {print $2}' /etc/network/interfaces |egrep -v ^lo)
|
|
||||||
ifup $nic
|
|
||||||
# regenerate ssh_host keys
|
|
||||||
ls /etc/ssh/ssh_host_* > /dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
dpkg-reconfigure -fnoninteractive openssh-server
|
|
||||||
fi
|
|
||||||
sleep 8
|
|
||||||
[ -x /etc/init.d/nscd ] && invoke-rc.d nscd restart
|
|
||||||
|
|
||||||
echo "================================="
|
|
||||||
echo "Setting up the FAI install server"
|
|
||||||
echo "This will take a few minutes"
|
|
||||||
echo "================================="
|
|
||||||
|
|
||||||
. /etc/fai/fai.conf
|
|
||||||
. /etc/fai/nfsroot.conf
|
|
||||||
|
|
||||||
# copy the simple examples and pimp my config space
|
|
||||||
if [ ! -d "$FAI_CONFIGDIR/class" ]; then
|
|
||||||
mkdir -p $FAI_CONFIGDIR
|
|
||||||
cp -a /usr/share/doc/fai-doc/examples/simple/* $FAI_CONFIGDIR
|
|
||||||
ainsl /srv/fai/config/class/FAIBASE.var "^LOGUSER=fai"
|
|
||||||
myip=$(ip addr show up| grep -P -o '(?<=inet )[^/]+' | grep -v 127.0.0.1)
|
|
||||||
echo "APTPROXY=http://$myip:3142" >> /srv/fai/config/class/DEBIAN.var
|
|
||||||
fi
|
|
||||||
# set the LOGUSER, wo we get all the logs from our install clients
|
|
||||||
ainsl /etc/fai/fai.conf "^LOGUSER=fai"
|
|
||||||
|
|
||||||
# make index, then import the packages from the CD mirror
|
|
||||||
apt-get update >/dev/null
|
|
||||||
curl -fs 'http://127.0.0.1:3142/acng-report.html?doImport=Start+Import&calcSize=cs&asNeeded=an#bottom' >/dev/null
|
|
||||||
|
|
||||||
# setup the FAI server, including creating the nfsroot, use my own proxy
|
|
||||||
export APTPROXY="http://127.0.0.1:3142"
|
|
||||||
if [ -f /var/tmp/base.tar.xz ]; then
|
|
||||||
fai-setup -fvB /var/tmp/base.tar.xz > /var/log/fai/fai-setup.log 2>&1
|
|
||||||
else
|
|
||||||
fai-setup -fv > /var/log/fai/fai-setup.log 2>&1
|
|
||||||
fi
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
rm /var/tmp/base.tar.xz
|
|
||||||
echo ""
|
|
||||||
echo "================================================"
|
|
||||||
echo -e "Setting up the FAI server was ${GREEN}successful${NORMAL}"
|
|
||||||
echo "================================================"
|
|
||||||
echo ""
|
|
||||||
sleep 10
|
|
||||||
else
|
|
||||||
echo ""
|
|
||||||
echo "=================================================="
|
|
||||||
echo -e "${RED}ERROR${NORMAL}: Setting up the FAI install server ${RED}FAILED${NORMAL}!"
|
|
||||||
echo "Read /var/log/fai/fai-setup.log for more debugging"
|
|
||||||
echo "=================================================="
|
|
||||||
echo ""
|
|
||||||
sleep 10
|
|
||||||
exit 99
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOF >> /srv/fai/nfsroot/etc/fai/fai.conf
|
|
||||||
# use short hostname instead of FQDN
|
|
||||||
export HOSTNAME=\${HOSTNAME%%.*}
|
|
||||||
echo \$HOSTNAME > /proc/sys/kernel/hostname
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# create default pxelinux boot configuration
|
|
||||||
fai-chboot -o default
|
|
||||||
|
|
||||||
# create a template for booting the installation
|
|
||||||
fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config buster.tmpl
|
|
||||||
|
|
||||||
# Since we do not know the MAC address, our DHCP cannot provide the hostname.
|
|
||||||
# Therefore we do explicitly set the hostname
|
|
||||||
fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=xfcehost xfcehost
|
|
||||||
fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=demohost demohost
|
|
||||||
for c in {01..10}; do
|
|
||||||
fai-chboot -Iv -f verbose,sshd,createvt,menu -u nfs://faiserver/srv/fai/config -k hostname=client$c client$c
|
|
||||||
done
|
|
||||||
|
|
||||||
fai-monitor > /var/log/fai/fai-monitor.log &
|
|
||||||
|
|
||||||
# move me away
|
|
||||||
mv $0 /var/tmp
|
|
||||||
|
|
||||||
# create new rc.local for next reboot
|
|
||||||
echo '#! /bin/bash' > /etc/rc.local
|
|
||||||
echo 'fai-monitor > /var/log/fai/fai-monitor.log &' >> /etc/rc.local
|
|
||||||
chmod a+rx /etc/rc.local
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,12 +0,0 @@
|
||||||
# This file controls the state of SELinux on the system.
|
|
||||||
# SELINUX= can take one of these three values:
|
|
||||||
# enforcing - SELinux security policy is enforced.
|
|
||||||
# permissive - SELinux prints warnings instead of enforcing.
|
|
||||||
# disabled - No SELinux policy is loaded.
|
|
||||||
SELINUX=disabled
|
|
||||||
# SELINUXTYPE= can take one of these two values:
|
|
||||||
# targeted - Only targeted network daemons are protected.
|
|
||||||
# strict - Full SELinux protection.
|
|
||||||
# mls - Multi Level Security protection.
|
|
||||||
SELINUXTYPE=targeted
|
|
||||||
# SETLOCALDEFS= Check local definition changes
|
|
|
@ -1,3 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
skiptask debconf
|
|
|
@ -1,45 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# hook for installing a file system image (tar file)
|
|
||||||
# this works for Ubuntu 14.04
|
|
||||||
#
|
|
||||||
# Copyright (C) 2015 Thomas Lange, lange@informatik.uni-koeln.de
|
|
||||||
|
|
||||||
|
|
||||||
# I use this tar command to create the image of an already running and configured machine
|
|
||||||
# tar -cf /tmp/IMAGE.tar --exclude /tmp/\* --exclude /run/\* --exclude /proc/\* --exclude /sys/\* --exclude /dev/\* /
|
|
||||||
# add --xattrs --selinux --acls if needed (for CentOS 7)
|
|
||||||
# Then copy this image to /srv/fai/config/basefiles/IMAGE.tar and make sure your client belongs to the class IMAGE
|
|
||||||
|
|
||||||
skiptask extrbase debconf repository updatebase instsoft
|
|
||||||
skiptask configure # do not run the usual configure scripts
|
|
||||||
|
|
||||||
# we assume, that the new host will get its hostname and IP via DHCP
|
|
||||||
# remove old hostname
|
|
||||||
fgrep -v 127.0.1.1 $target/etc/hosts >> /tmp/fai/hosts
|
|
||||||
mv /tmp/fai/hosts $target/etc/hosts
|
|
||||||
rm $target/etc/hostname
|
|
||||||
|
|
||||||
#install grub
|
|
||||||
mount -t proc proc $FAI_ROOT/proc
|
|
||||||
mount -t sysfs sysfs $FAI_ROOT/sys
|
|
||||||
mount --bind /dev $FAI_ROOT/dev
|
|
||||||
|
|
||||||
if [ -f $target/etc/debian_version ]; then
|
|
||||||
$ROOTCMD grub-install $BOOT_DEVICE
|
|
||||||
$ROOTCMD update-grub
|
|
||||||
fi
|
|
||||||
if [ -f $target/etc/centos-release ]; then
|
|
||||||
rm $target/etc/grub2/device.map
|
|
||||||
$FAI/scripts/CENTOS/40-install-grub
|
|
||||||
$FAI/scripts/CENTOS/30-mkinitrd
|
|
||||||
$ROOTCMD fixfiles onboot # this fixes the SELinux security contexts during the first boot
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# things that may be adjusted:
|
|
||||||
#
|
|
||||||
# MAC address ?? (not needed for Ubuntu, it uses iftab(5)
|
|
||||||
# /etc/hosts may contain the IP and name of the original host
|
|
||||||
# /etc/hostname (for Ubuntu just remove it)
|
|
||||||
# /var/lib/NetworkManager/dhclient-eth0.conf?
|
|
|
@ -1,25 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# if package locales will be installed, then install it early, before
|
|
||||||
# other packages
|
|
||||||
if [ $FAI_ACTION != "install" -a $FAI_ACTION != "dirinstall" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcopy -Bi /etc/apt/apt.conf.d/force_confdef
|
|
||||||
ainsl -a /etc/ucf.conf "^conf_force_conffold=YES"
|
|
||||||
|
|
||||||
# in case the locales are already included inside the base file (Ubuntu)
|
|
||||||
if [ -f $target/usr/sbin/locale-gen ]; then
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# if we want to install locales, install them now
|
|
||||||
install_packages -l 2>/dev/null | egrep -q ' locales|locales '
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
if [ X$verbose = X1 ]; then
|
|
||||||
$ROOTCMD apt-get -y install locales
|
|
||||||
else
|
|
||||||
$ROOTCMD apt-get -y install locales > /dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
|
@ -1,31 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Michael Goetze, 2010-2011, mgoetze@mgoetze.net
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
if [ $FAI_ACTION = "install" ]; then
|
|
||||||
mount -t proc proc $target/proc
|
|
||||||
mount -t sysfs sysfs $target/sys
|
|
||||||
[ -L $target/etc/mtab ] || cp /etc/mtab $target/etc/mtab
|
|
||||||
|
|
||||||
cat > $target/etc/sysconfig/network <<-EOF
|
|
||||||
NETWORKING=yes
|
|
||||||
HOSTNAME=$HOSTNAME.$DOMAIN
|
|
||||||
EOF
|
|
||||||
echo "127.0.0.1 localhost" > $target/etc/hosts
|
|
||||||
ifclass DHCPC || ainsl -s /etc/hosts "$IPADDR $HOSTNAME.$DOMAIN $HOSTNAME"
|
|
||||||
cp /etc/resolv.conf $target/etc
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir $target/dev/pts
|
|
||||||
mknod -m 000 $target/dev/pts/ptmx c 5 2
|
|
||||||
|
|
||||||
fcopy -riv /etc/yum.repos.d/
|
|
||||||
|
|
||||||
# disable the fastestmirror plugin
|
|
||||||
#sed -i -e 's/enabled=1/enabled=0/' $target/etc/yum/pluginconf.d/fastestmirror.conf
|
|
||||||
|
|
||||||
skiptask repository
|
|
||||||
|
|
||||||
exit $error
|
|
|
@ -1,223 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# parse all log files for error messages
|
|
||||||
# print errors and warnings found to error.log
|
|
||||||
# WARNING: This will only work with english error messages!
|
|
||||||
|
|
||||||
errfile=$LOGDIR/error.log
|
|
||||||
|
|
||||||
# Define grep patterns. Do not start or end with an empty line!
|
|
||||||
globalerrorpatterns="error
|
|
||||||
fail
|
|
||||||
warn
|
|
||||||
bad
|
|
||||||
bad
|
|
||||||
no space
|
|
||||||
syntax
|
|
||||||
Couldn't stat
|
|
||||||
Cannot access
|
|
||||||
conflict
|
|
||||||
is bigger than the limit
|
|
||||||
did not exist
|
|
||||||
non existent
|
|
||||||
not found
|
|
||||||
couldn't
|
|
||||||
can't
|
|
||||||
E: Sorry, broken packages
|
|
||||||
^E:
|
|
||||||
operator expected
|
|
||||||
ambiguous redirect
|
|
||||||
No previous regular expression
|
|
||||||
No such
|
|
||||||
Device or resource busy
|
|
||||||
unknown option
|
|
||||||
[a-z]\+\.log:E:
|
|
||||||
No candidate version found
|
|
||||||
segfault
|
|
||||||
Couldn't find any package whose name or description matched
|
|
||||||
cannot create
|
|
||||||
The following packages have unmet dependencies"
|
|
||||||
|
|
||||||
globalignorepatterns="[a-z]\+\.log:#
|
|
||||||
Error: Driver 'pcspkr' is already registered, aborting
|
|
||||||
: bytes packets errors dropped
|
|
||||||
:+ error=0
|
|
||||||
:+ trap error=
|
|
||||||
task_error_func=
|
|
||||||
STOP_ON_ERROR=
|
|
||||||
courier-webadmin
|
|
||||||
plugins-bad
|
|
||||||
Enabling conf localized-error-pages
|
|
||||||
ibwebadmin
|
|
||||||
kernel-patch-badram
|
|
||||||
kolab-webadmin
|
|
||||||
kolabadmin
|
|
||||||
gstreamer.\+-plugins-really-bad
|
|
||||||
liberrors.so
|
|
||||||
liberrors-samba
|
|
||||||
libsamba-errors
|
|
||||||
gsambad
|
|
||||||
libad
|
|
||||||
libtest-nowarnings-perl
|
|
||||||
libtest-warn-perl
|
|
||||||
libclass-errorhandler-perl
|
|
||||||
zope-ploneerrorreporting
|
|
||||||
libroxen-errormessage
|
|
||||||
liberror-perl
|
|
||||||
perl-Error
|
|
||||||
libgpg-error-dev
|
|
||||||
libgpg-error0
|
|
||||||
Opts:.\+errors=remount
|
|
||||||
[RT]X packets:
|
|
||||||
WARNING: unexpected IO-APIC
|
|
||||||
warned about = ( )
|
|
||||||
daemon.warn
|
|
||||||
kern.warn
|
|
||||||
rw,errors=
|
|
||||||
Expect some cache
|
|
||||||
no error
|
|
||||||
failmsg
|
|
||||||
RPC call returned error 101
|
|
||||||
deverror.out
|
|
||||||
(floppy), sector 0
|
|
||||||
mount version older than kernel
|
|
||||||
Can't locate module
|
|
||||||
Warning only .\+MB will be used.
|
|
||||||
hostname: Host name lookup failure
|
|
||||||
I can't tell the difference.
|
|
||||||
warning, not much extra random data, consider using the -rand option
|
|
||||||
confC._FILE
|
|
||||||
Warning: 3 database(s) sources
|
|
||||||
were not found, (but were created)
|
|
||||||
removing exim
|
|
||||||
The home dir you specified already exists.
|
|
||||||
No Rule for /usr/lib/ispell/default.hash.
|
|
||||||
/usr/sbin/update-fonts-.\+: warning: absolute path
|
|
||||||
hostname: Unknown server error
|
|
||||||
EXT2-fs warning: checktime reached
|
|
||||||
RPC: sendmsg returned error 101
|
|
||||||
can't print them to stdout. Define these classes
|
|
||||||
warning: downgrading
|
|
||||||
suppress emacs errors
|
|
||||||
echo Error:
|
|
||||||
Can't open dependencies file
|
|
||||||
documents in /usr/doc are no longer supported
|
|
||||||
if you have both a SCSI and an IDE CD-ROM
|
|
||||||
Warning: /proc/ide/hd?/settings interface is obsolete, and will be removed soon
|
|
||||||
Monitoring disabled
|
|
||||||
Error: only one processor found.
|
|
||||||
Error Recovery Strategy:
|
|
||||||
sector 0 does not have an
|
|
||||||
syslogin_perform_logout: logout() returned an error
|
|
||||||
grub is not in an XFS filesystem.
|
|
||||||
grub-install: line 374:
|
|
||||||
grub-probe: error: Cannot open \`/boot/grub/device.map'
|
|
||||||
is harmless
|
|
||||||
not updating .\+ font directory data.
|
|
||||||
register_serial(): autoconfig failed
|
|
||||||
Fontconfig error: Cannot load default config file
|
|
||||||
asking for cache data failed
|
|
||||||
However, I can not read the target:
|
|
||||||
Warning: The partition table looks like it was made
|
|
||||||
task_error=0
|
|
||||||
task_local_error=0
|
|
||||||
^info: Trying to set
|
|
||||||
warning: /usr/lib/X11/fonts
|
|
||||||
can't read /etc/udev/rules.d/z25_persistent-net.rules
|
|
||||||
/cow': No such file or directory
|
|
||||||
Dummy start-stop-daemon called
|
|
||||||
X: bytes packets errors
|
|
||||||
ACPI Error
|
|
||||||
ACPI Warning
|
|
||||||
AE_NOT_FOUND
|
|
||||||
conflicts with ACPI region
|
|
||||||
cannot stat \`/etc/modprobe.d/\*.conf'
|
|
||||||
cdrom: open failed.
|
|
||||||
libgpg-error
|
|
||||||
process \`kudzu' used the deprecated sysctl system call
|
|
||||||
PM: Resume from disk failed
|
|
||||||
JBD: barrier-based sync failed
|
|
||||||
aufs: module is from the staging directory, the quality is unknown
|
|
||||||
warning: linuxlogo stop runlevel arguments (none) do not match
|
|
||||||
insserv: warning: script .\+ missing LSB tags and overrides
|
|
||||||
live-premount.\+ If this fails
|
|
||||||
cannot read table of mounted file systems
|
|
||||||
error: no alternatives for
|
|
||||||
ERST: Error Record Serialization Table (ERST) support is initialized
|
|
||||||
ERST: Table is not found
|
|
||||||
HEST: Table not found
|
|
||||||
failed to stat /dev/pts
|
|
||||||
Failed to connect to socket /var/run/dbus/system_bus_socket
|
|
||||||
fail to add MMCONFIG information
|
|
||||||
can't initialize iptables table
|
|
||||||
can't initialize ip6tables table
|
|
||||||
Authentication warning overridden
|
|
||||||
41-warning.sh
|
|
||||||
PCCT header not found
|
|
||||||
Download is performed unsandboxed as root as file
|
|
||||||
update-alternatives: warning: skip creation of
|
|
||||||
loop: module verification failed: signature
|
|
||||||
Warning: apt-key output should not be parsed
|
|
||||||
WARNING: Failed to connect to lvmetad. Falling back to device scanning
|
|
||||||
Warning: The home dir /var/lib/usbmux you specified
|
|
||||||
diff: /var/lib/apparmor/profiles/.apparmor.md5sums: No such file or directory
|
|
||||||
error reporting disabled
|
|
||||||
Enabling Firmware First mode for corrected errors
|
|
||||||
errors: 0
|
|
||||||
0 errors
|
|
||||||
Memory Error Correction:
|
|
||||||
Memory Controller 0 - Channel . Error
|
|
||||||
IIO RAS/Control Status/Global Errors
|
|
||||||
RAS: Correctable Errors collector initialized
|
|
||||||
__stack_chk_fail
|
|
||||||
grub.cfg.new: Directory nonexistent
|
|
||||||
can't derive routing for PCI INT A
|
|
||||||
failed to load isci/isci_firmware.bin
|
|
||||||
Direct firmware load for isci/isci_firmware.bin failed with error
|
|
||||||
Loading user firmware failed, using default values
|
|
||||||
stunnel4 you specified can't be accessed: No such file or directory
|
|
||||||
install-docs --verbose --check file_name' may give more details about the above errors
|
|
||||||
cannot open '/etc/ssl/certs/java/cacerts' for reading: No such file or directory
|
|
||||||
can't claim BAR
|
|
||||||
disabling ASPM
|
|
||||||
data block query control method not found
|
|
||||||
subprocess.py.\+RuntimeWarning: line buffering
|
|
||||||
Resource conflict.\+ found
|
|
||||||
update-rc.d: warning: start and stop actions are no longer supported"
|
|
||||||
|
|
||||||
# add pattern on some conditions
|
|
||||||
if [ -n $FAI_ALLOW_UNSIGNED ] ; then
|
|
||||||
globalignorepatterns="$globalignorepatterns
|
|
||||||
WARNING: untrusted versions
|
|
||||||
WARNING: The following packages cannot be authenticated
|
|
||||||
Ignoring these trust violations"
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Here you can define your own patterns. Put one pattern in a line,
|
|
||||||
# do not create empty lines.
|
|
||||||
myerrorpatterns="X_X-X_XX"
|
|
||||||
myignorepatterns="X_X-X_XX"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# The main routine
|
|
||||||
errorpatterns="$globalerrorpatterns
|
|
||||||
$myerrorpatterns"
|
|
||||||
ignorepatterns="$globalignorepatterns
|
|
||||||
$myignorepatterns"
|
|
||||||
|
|
||||||
cd $LOGDIR || exit 3
|
|
||||||
if [ -s $errfile ]; then
|
|
||||||
echo "Errorfile already exists. Aborting." >&2
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
grep -i "$errorpatterns" *.log | grep -vi "$ignorepatterns" > $errfile
|
|
||||||
if [ X$verbose = X1 ]; then
|
|
||||||
egrep -v '^software.log:' $errfile > $LOGDIR/tempfile
|
|
||||||
mv $LOGDIR/tempfile $errfile
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -s $errfile ]; then
|
|
||||||
echo "ERRORS found in log files. See $errfile" >&2
|
|
||||||
else
|
|
||||||
echo "Congratulations! No errors found in log files."
|
|
||||||
fi
|
|
|
@ -1,7 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# use short hostname instead of FQDN
|
|
||||||
export HOSTNAME=${HOSTNAME%%.*}
|
|
||||||
if [ $do_init_tasks -eq 1 ]; then
|
|
||||||
echo $HOSTNAME > /proc/sys/kernel/hostname
|
|
||||||
fi
|
|
|
@ -1,25 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
if [ ! -f $target/etc/resolv.conf ]; then
|
|
||||||
cp /etc/resolv.conf $target/etc
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ X$verbose = X1 ]; then
|
|
||||||
echo "Updating base"
|
|
||||||
$ROOTCMD yum -y update |& tee -a $LOGDIR/software.log
|
|
||||||
else
|
|
||||||
$ROOTCMD yum -y update >> $LOGDIR/software.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
$ROOTCMD systemd-machine-id-setup
|
|
||||||
|
|
||||||
cat > $target/etc/sysconfig/kernel <<EOF
|
|
||||||
# UPDATEDEFAULT specifies if new-kernel-pkg should make
|
|
||||||
# new kernels the default
|
|
||||||
UPDATEDEFAULT=yes
|
|
||||||
|
|
||||||
# DEFAULTKERNEL specifies the default kernel package type
|
|
||||||
DEFAULTKERNEL=kernel-core
|
|
||||||
EOF
|
|
||||||
|
|
||||||
skiptask updatebase
|
|
|
@ -1,14 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
if [ -n "$APTPROXY" ]; then
|
|
||||||
echo "Acquire::http::Proxy \"$APTPROXY\";" > $target/etc/apt/apt.conf.d/02proxy
|
|
||||||
else
|
|
||||||
rm -f $target/etc/apt/apt.conf.d/02proxy
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo force-unsafe-io > $target/etc/dpkg/dpkg.cfg.d/unsafe-io
|
|
||||||
|
|
||||||
# you may want to add i386 arch to amd64 hosts
|
|
||||||
# if ifclass AMD64; then
|
|
||||||
# $ROOTCMD dpkg --add-architecture i386
|
|
||||||
# fi
|
|
|
@ -1,30 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# use external mirror, remove this script when using a mirror from CD
|
|
||||||
|
|
||||||
cat <<EOM > $target/etc/apt/sources.list
|
|
||||||
# external mirror
|
|
||||||
deb $ubuntumirror/ubuntu $ubuntudist main restricted universe multiverse
|
|
||||||
deb $ubuntumirror/ubuntu $ubuntudist-updates main restricted universe multiverse
|
|
||||||
deb $ubuntumirror/ubuntu $ubuntudist-security main restricted universe multiverse
|
|
||||||
EOM
|
|
||||||
|
|
||||||
|
|
||||||
# https://lists.uni-koeln.de/pipermail/linux-fai/2016-July/011398.html
|
|
||||||
# In Ubuntu 16.04 (but not 14.04), the locales configuration mechanism has
|
|
||||||
# changed. There is a /var/lib/dpkg/info/locales.config file, which
|
|
||||||
# overrides /var/lib/dpkg/info/locales.postinst and consults
|
|
||||||
# /var/lib/locales/supported.d/local instead of the debconf system. (See
|
|
||||||
# the code in /usr/share/debconf/frontend that prefers locales.config.) This
|
|
||||||
# hook applies the debconf setting. It must run after FAI's debconf task
|
|
||||||
# but before dpkg gets a chance to clobber debconf with an empty setting.
|
|
||||||
|
|
||||||
if [ ! -f "$target/var/lib/locales/supported.d/local" ]; then
|
|
||||||
$ROOTCMD debconf --owner=locales sh -c '
|
|
||||||
. /usr/share/debconf/confmodule
|
|
||||||
db_version 2.0
|
|
||||||
db_get locales/locales_to_be_generated &&
|
|
||||||
mkdir -p /var/lib/locales/supported.d &&
|
|
||||||
echo "$RET" > /var/lib/locales/supported.d/local' &&
|
|
||||||
$ROOTCMD dpkg-reconfigure locales
|
|
||||||
fi
|
|
|
@ -1,30 +0,0 @@
|
||||||
PACKAGES dnfgroup
|
|
||||||
core
|
|
||||||
minimal-environment
|
|
||||||
#server-product-environment
|
|
||||||
#headless-management
|
|
||||||
|
|
||||||
PACKAGES dnfgroup XORG
|
|
||||||
graphical-server-environment
|
|
||||||
workstation-product-environment
|
|
||||||
|
|
||||||
PACKAGES dnfi
|
|
||||||
NetworkManager
|
|
||||||
chrony
|
|
||||||
kernel
|
|
||||||
dracut
|
|
||||||
grub2-pc
|
|
||||||
# CentOS 7
|
|
||||||
less
|
|
||||||
openssh
|
|
||||||
openssh-clients
|
|
||||||
openssh-server
|
|
||||||
vim-enhanced
|
|
||||||
man
|
|
||||||
curl
|
|
||||||
unzip
|
|
||||||
which
|
|
||||||
ncurses ncurses-base
|
|
||||||
|
|
||||||
PACKAGES dnfi LVM
|
|
||||||
lvm2
|
|
|
@ -1,10 +0,0 @@
|
||||||
PACKAGES install DEBIAN
|
|
||||||
task-cinnamon-desktop
|
|
||||||
network-manager
|
|
||||||
network-manager-applet
|
|
||||||
network-manager-config-connectivity-debian
|
|
||||||
network-manager-gnome
|
|
||||||
|
|
||||||
PACKAGES install UBUNTU
|
|
||||||
cinnamon-desktop-environment
|
|
||||||
network-manager
|
|
|
@ -1,56 +0,0 @@
|
||||||
PACKAGES install-norec
|
|
||||||
apt-transport-https # is only needed for stretch
|
|
||||||
debconf-utils
|
|
||||||
file
|
|
||||||
less
|
|
||||||
linuxlogo
|
|
||||||
rsync
|
|
||||||
openssh-client openssh-server
|
|
||||||
time
|
|
||||||
procinfo
|
|
||||||
nullmailer
|
|
||||||
eject
|
|
||||||
locales
|
|
||||||
console-setup kbd
|
|
||||||
pciutils usbutils
|
|
||||||
unattended-upgrades
|
|
||||||
|
|
||||||
PACKAGES install NONFREE
|
|
||||||
# you may want these non-free kernel drivers
|
|
||||||
firmware-bnx2 firmware-bnx2x firmware-realtek
|
|
||||||
firmware-linux-nonfree
|
|
||||||
|
|
||||||
PACKAGES install I386
|
|
||||||
linux-image-686-pae
|
|
||||||
memtest86+
|
|
||||||
|
|
||||||
PACKAGES install CHROOT
|
|
||||||
linux-image-686-pae-
|
|
||||||
linux-image-amd64-
|
|
||||||
|
|
||||||
PACKAGES install AMD64
|
|
||||||
linux-image-amd64
|
|
||||||
memtest86+
|
|
||||||
|
|
||||||
PACKAGES install ARM64
|
|
||||||
grub-efi-arm64
|
|
||||||
linux-image-arm64
|
|
||||||
|
|
||||||
PACKAGES install GRUB_PC
|
|
||||||
grub-pc
|
|
||||||
|
|
||||||
PACKAGES install GRUB_EFI
|
|
||||||
grub-efi
|
|
||||||
|
|
||||||
PACKAGES install LVM
|
|
||||||
lvm2
|
|
||||||
|
|
||||||
PACKAGES install CLOUD
|
|
||||||
unattended-upgrades
|
|
||||||
|
|
||||||
PACKAGE install-norec CINNAMON
|
|
||||||
task-cinnamon-desktop
|
|
||||||
task-desktop
|
|
||||||
|
|
||||||
PACKAGE install-norec GERMAN
|
|
||||||
task-german
|
|
Binary file not shown.
|
@ -1,13 +0,0 @@
|
||||||
PACKAGES install-norec
|
|
||||||
fai-quickstart
|
|
||||||
|
|
||||||
debmirror tcpdump
|
|
||||||
xorriso grub-pc
|
|
||||||
lftp curl
|
|
||||||
netselect
|
|
||||||
syslinux-common pxelinux
|
|
||||||
apt-cacher-ng
|
|
||||||
nscd psmisc
|
|
||||||
bind9 dnsutils
|
|
||||||
iptables-persistent
|
|
||||||
zile
|
|
|
@ -1,5 +0,0 @@
|
||||||
PACKAGES install
|
|
||||||
task-german
|
|
||||||
|
|
||||||
PACKAGES install GNOME
|
|
||||||
firefox-esr-l10n-de thunderbird-l10n-de
|
|
|
@ -1,9 +0,0 @@
|
||||||
PACKAGES install-norec
|
|
||||||
|
|
||||||
firefox-esr
|
|
||||||
#thunderbird
|
|
||||||
menu gdm3
|
|
||||||
gnome-core
|
|
||||||
gconf-editor
|
|
||||||
gnome-screensaver gnome-system-monitor gnome-system-tools
|
|
||||||
network-manager-gnome
|
|
|
@ -1,14 +0,0 @@
|
||||||
PACKAGES install
|
|
||||||
ubuntu-desktop
|
|
||||||
language-pack-de
|
|
||||||
language-pack-gnome-de
|
|
||||||
thunderbird
|
|
||||||
thunderbird-locale-de
|
|
||||||
firefox
|
|
||||||
firefox-locale-de
|
|
||||||
libreoffice
|
|
||||||
libreoffice-l10n-de
|
|
||||||
libreoffice-help-de
|
|
||||||
ubuntu-software
|
|
||||||
ubuntu-snappy
|
|
||||||
snapd
|
|
|
@ -1,7 +0,0 @@
|
||||||
PACKAGES install-norec DESKTOP
|
|
||||||
linuxmint-keyring
|
|
||||||
mint-info-cinnamon
|
|
||||||
mint-info
|
|
||||||
mint-meta-cinnamon
|
|
||||||
mint-meta-core
|
|
||||||
mint-meta-codecs
|
|
|
@ -1,34 +0,0 @@
|
||||||
PACKAGES install-norec
|
|
||||||
|
|
||||||
# the list of standard packages, without any libs and a few packages removed
|
|
||||||
apt-listchanges
|
|
||||||
bash-completion
|
|
||||||
bind9-host
|
|
||||||
dbus
|
|
||||||
dnsutils
|
|
||||||
doc-debian
|
|
||||||
file
|
|
||||||
gettext-base
|
|
||||||
groff-base
|
|
||||||
hdparm
|
|
||||||
less
|
|
||||||
locales
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
manpages
|
|
||||||
mime-support
|
|
||||||
ncurses-term
|
|
||||||
netcat-traditional
|
|
||||||
openssh-client
|
|
||||||
pciutils
|
|
||||||
perl
|
|
||||||
python
|
|
||||||
python-minimal
|
|
||||||
python3
|
|
||||||
python3-minimal
|
|
||||||
reportbug
|
|
||||||
telnet
|
|
||||||
traceroute
|
|
||||||
ucf
|
|
||||||
xz-utils
|
|
||||||
vim
|
|
|
@ -1,22 +0,0 @@
|
||||||
PACKAGES install I386
|
|
||||||
python
|
|
||||||
python-minimal
|
|
||||||
linux-image-generic
|
|
||||||
memtest86+
|
|
||||||
|
|
||||||
PACKAGES install CHROOT
|
|
||||||
linux-image-generic-
|
|
||||||
|
|
||||||
PACKAGES install AMD64
|
|
||||||
linux-image-generic
|
|
||||||
memtest86+
|
|
||||||
|
|
||||||
PACKAGES install GRUB_PC
|
|
||||||
grub-pc
|
|
||||||
|
|
||||||
PACKAGES install GRUB_EFI
|
|
||||||
grub-efi
|
|
||||||
|
|
||||||
PACKAGES install
|
|
||||||
ubuntu-minimal
|
|
||||||
unattended-upgrades
|
|
|
@ -1,6 +0,0 @@
|
||||||
PACKAGES install-norec
|
|
||||||
xfce4 # base system
|
|
||||||
xfce4-goodies # additional tools
|
|
||||||
lightdm
|
|
||||||
firefox-esr
|
|
||||||
network-manager-gnome
|
|
|
@ -1,12 +0,0 @@
|
||||||
PACKAGES install-norec DEBIAN
|
|
||||||
xorg xserver-xorg-video-all xserver-xorg-input-all
|
|
||||||
fonts-freefont-ttf
|
|
||||||
xscreensaver
|
|
||||||
xscreensaver-gl
|
|
||||||
xterm
|
|
||||||
desktop-base
|
|
||||||
|
|
||||||
PACKAGES install UBUNTU
|
|
||||||
ubuntu-server-
|
|
||||||
ubuntu-standard
|
|
||||||
ubuntu-desktop
|
|
|
@ -1,14 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Michael Goetze, 2010-11, mgoetze@mgoetze.net
|
|
||||||
# Thomas Lange, 2015-2020
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
$ROOTCMD usermod -p $ROOTPW root
|
|
||||||
|
|
||||||
fcopy -v /etc/selinux/config
|
|
||||||
$ROOTCMD fixfiles onboot # this fixes the SELinux security contexts during the first boot
|
|
||||||
chmod a+rx $target
|
|
||||||
|
|
||||||
exit $error
|
|
|
@ -1,25 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Michael Goetze, 2010-2011, mgoetze@mgoetze.net
|
|
||||||
# (c) Thomas Lange, 2011, Uni Koeln
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
ainsl -v /etc/fstab "proc /proc proc defaults 0 0"
|
|
||||||
ainsl -v /etc/fstab "sysfs /sys sysfs auto 0 0"
|
|
||||||
|
|
||||||
version=`$ROOTCMD rpm -qv kernel | cut -d- -f2-`
|
|
||||||
|
|
||||||
|
|
||||||
if [ -f $target/etc/lvm/lvm.conf ]; then
|
|
||||||
sed -i -e 's/use_lvmetad = 1/use_lvmetad = 0/' $target/etc/lvm/lvm.conf
|
|
||||||
ainsl -av /etc/dracut.conf.d/fai.conf 'add_dracutmodules+=" lvm "'
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# add filesystem driver into initrd
|
|
||||||
ainsl -av /etc/dracut.conf.d/fai.conf 'filesystems+="ext4"'
|
|
||||||
$ROOTCMD dracut -v --kver $version --force
|
|
||||||
|
|
||||||
|
|
||||||
exit $error
|
|
|
@ -1,96 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Michael Goetze, 2011, mgoetze@mgoetze.net
|
|
||||||
# (c) Thomas Lange 2014
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
if [ -r $LOGDIR/disk_var.sh ] ; then
|
|
||||||
. $LOGDIR/disk_var.sh
|
|
||||||
else
|
|
||||||
echo "disk_var.sh not found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# CentOS 7 does not have a device.map file, so generate one
|
|
||||||
if [ -d $target/boot/grub2 -a ! -f $target/boot/grub2/device.map ]; then
|
|
||||||
echo "# Generated by FAI" >> $target/boot/grub2/device.map
|
|
||||||
centosdisks=$(awk '/[sv]d.$/ {print $4}' /proc/partitions | sort)
|
|
||||||
dcount=0
|
|
||||||
for d in $centosdisks; do
|
|
||||||
echo "(hd$dcount) /dev/$d" >> $target/boot/grub2/device.map
|
|
||||||
dcount=$((dcount + 1))
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
bootdev=`device2grub $BOOT_DEVICE`
|
|
||||||
bootpart=`device2grub $BOOT_PARTITION`
|
|
||||||
version=`$ROOTCMD rpm -qv kernel | cut -d- -f2-`
|
|
||||||
|
|
||||||
if grep '[[:space:]]/boot[[:space:]]' $LOGDIR/fstab; then
|
|
||||||
bootdir=''
|
|
||||||
else
|
|
||||||
bootdir='/boot'
|
|
||||||
fi
|
|
||||||
|
|
||||||
mount -o bind /dev $target/dev
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [ -f $target/usr/sbin/grub2-install ]; then
|
|
||||||
|
|
||||||
# CentOS 7
|
|
||||||
$ROOTCMD grub2-install --no-floppy "$BOOT_DEVICE"
|
|
||||||
$ROOTCMD grub2-mkconfig --output=/boot/grub2/grub.cfg
|
|
||||||
else
|
|
||||||
|
|
||||||
$ROOTCMD grub-install --just-copy
|
|
||||||
|
|
||||||
$ROOTCMD grub --device-map=/dev/null --no-floppy --batch <<-EOF
|
|
||||||
device $bootdev $BOOT_DEVICE
|
|
||||||
root $bootpart
|
|
||||||
setup $bootdev
|
|
||||||
quit
|
|
||||||
EOF
|
|
||||||
|
|
||||||
ln -s ./menu.lst $target/boot/grub/grub.conf
|
|
||||||
|
|
||||||
if [ -f $target/boot/grub/splash.xpm.gz ]; then
|
|
||||||
pretty="splashimage=$bootpart$bootdir/grub/splash.xpm.gz"
|
|
||||||
else
|
|
||||||
pretty="color cyan/blue white/blue"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f $target/sbin/dracut -o -f $target/usr/sbin/dracut ]; then
|
|
||||||
# CentOS 6
|
|
||||||
iname=initramfs
|
|
||||||
else
|
|
||||||
# CentOS 5
|
|
||||||
iname=initrd
|
|
||||||
fi
|
|
||||||
title=`head -1 $target/etc/redhat-release`
|
|
||||||
|
|
||||||
cat > $target/boot/grub/grub.conf <<-EOF
|
|
||||||
timeout 5
|
|
||||||
default 0
|
|
||||||
$pretty
|
|
||||||
hiddenmenu
|
|
||||||
|
|
||||||
title $title
|
|
||||||
root $bootpart
|
|
||||||
kernel $bootdir/vmlinuz-$version root=$ROOT_PARTITION ro
|
|
||||||
initrd $bootdir/$iname-$version.img
|
|
||||||
EOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
umount $target/dev
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Grub installed on $BOOT_DEVICE = $bootdev"
|
|
||||||
echo "Grub boot partition is $BOOT_PARTITION = $bootpart"
|
|
||||||
echo "Root partition is $ROOT_PARTITION"
|
|
||||||
echo "Boot kernel: $version"
|
|
||||||
|
|
||||||
exit $error
|
|
|
@ -1,29 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# (c) Michael Goetze, 2011, mgoetze@mgoetze.net
|
|
||||||
|
|
||||||
error=0 ; trap "error=$((error|1))" ERR
|
|
||||||
|
|
||||||
cat > $target/etc/sysconfig/clock <<-EOF
|
|
||||||
UTC=$UTC
|
|
||||||
ZONE=$TIMEZONE
|
|
||||||
EOF
|
|
||||||
cat > $target/etc/sysconfig/i18n <<-EOF
|
|
||||||
LANG="$DEFAULTLOCALE"
|
|
||||||
SUPPORTED="$SUPPORTEDLOCALE"
|
|
||||||
SYSFONT="$CONSOLEFONT"
|
|
||||||
EOF
|
|
||||||
cat > $target/etc/sysconfig/keyboard <<-EOF
|
|
||||||
KEYBOARDTYPE="pc"
|
|
||||||
KEYTABLE="$KEYMAP"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if [ -f $target/usr/lib/locale/locale-archive.tmpl \
|
|
||||||
-a ! -s $target/usr/lib/locale/locale-archive ]; then
|
|
||||||
mv $target/usr/lib/locale/locale-archive.tmpl $target/usr/lib/locale/locale-archive
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcopy -iv /etc/sysconfig/i18n /etc/sysconfig/keyboard
|
|
||||||
|
|
||||||
exit $error
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
error=0 ; trap "error=$((error|1))" ERR
|
|
||||||
|
|
||||||
|
|
||||||
# determine predictable network names
|
|
||||||
fields="ID_NET_NAME_FROM_DATABASE ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH"
|
|
||||||
for field in $fields; do
|
|
||||||
name=$(udevadm info /sys/class/net/$NIC1 | sed -rn "s/^E: $field=(.+)/\1/p")
|
|
||||||
if [[ $name ]]; then
|
|
||||||
NIC1=$name
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ ! $name ]]; then
|
|
||||||
echo "$0: error: could not find systemd predictable network name. Using $NIC1."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ $FAI_ACTION != "softupdate" ] && ifclass DHCPC; then
|
|
||||||
cat > $target/etc/sysconfig/network-scripts/ifcfg-$NIC1 <<-EOF
|
|
||||||
# generated by FAI
|
|
||||||
TYPE=Ethernet
|
|
||||||
PROXY_METHOD=none
|
|
||||||
BOOTPROTO=dhcp
|
|
||||||
DEFROUTE=yes
|
|
||||||
BROWSER_ONLY=no
|
|
||||||
IP4_FAILURE_FATAL=no
|
|
||||||
IPV6INIT=no
|
|
||||||
IPV6_AUTOCONF=no
|
|
||||||
NAME=$NIC1
|
|
||||||
DEVICE=$NIC1
|
|
||||||
ONBOOT=yes
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcopy -iv /etc/sysconfig/network /etc/resolv.conf /etc/networks
|
|
||||||
fcopy -ivr /etc/sysconfig/network-scripts
|
|
||||||
|
|
||||||
exit $error
|
|
|
@ -1,21 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
error=0 ; trap "error=$((error|1))" ERR
|
|
||||||
|
|
||||||
# add a $username user account
|
|
||||||
if [ -n "$username" ]; then
|
|
||||||
if ! $ROOTCMD getent passwd $username ; then
|
|
||||||
$ROOTCMD adduser -c "$username user" $username
|
|
||||||
$ROOTCMD usermod -p "$USERPW" $username
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# enable graphical login screen, make run level 5 as default
|
|
||||||
if [ -f $target/usr/sbin/gdm ]; then
|
|
||||||
sed -i -e 's/id:3:initdefault:/id:5:initdefault:/' $target/etc/inittab
|
|
||||||
# do not run this tool
|
|
||||||
echo "RUN_FIRSTBOOT=NO" > $target/etc/sysconfig/firstboot
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit $error
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
$ROOTCMD yum clean all
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
# Disable systemd's network interface name management.
|
|
||||||
# References:
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863385
|
|
||||||
# https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
|
|
||||||
|
|
||||||
fcopy -M /etc/default/grub.d/10_cloud_disable_net.ifnames.cfg
|
|
||||||
$ROOTCMD update-grub
|
|
|
@ -1,27 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
fcopy /etc/init.d/expand-root
|
|
||||||
if [ -f $target/files/etc/init.d/expand-root ]; then
|
|
||||||
$ROOTCMD insserv --default expand-root
|
|
||||||
fi
|
|
||||||
|
|
||||||
sed -i "s/PermitRootLogin yes/PermitRootLogin without-password/" $target/etc/ssh/sshd_config
|
|
||||||
ainsl /etc/ssh/sshd_config 'ClientAliveInterval 120'
|
|
||||||
|
|
||||||
ainsl -a /etc/modprobe.d/blacklist.conf 'blacklist pcspkr'
|
|
||||||
ainsl -a /etc/modprobe.d/blacklist.conf 'blacklist floppy'
|
|
||||||
|
|
||||||
rm -f $target/etc/resolv.conf \
|
|
||||||
$target/etc/udev/rules.d/70-persistent-net.rules \
|
|
||||||
$target/lib/udev/write_net_rules \
|
|
||||||
$target/etc/mailname \
|
|
||||||
$target/var/lib/dbus/machine-id
|
|
||||||
|
|
||||||
> $target/etc/machine-id
|
|
||||||
|
|
||||||
shred --remove $target/etc/ssh/ssh_host_*
|
|
||||||
|
|
||||||
# FIXME: DHCP RFC3442 is used incorrect in Azure
|
|
||||||
if [ -f $target/etc/dhcp/dhclient.conf ]; then
|
|
||||||
sed -ie 's,rfc3442-classless-static-routes,disabled-\0,' $target/etc/dhcp/dhclient.conf
|
|
||||||
fi
|
|
|
@ -1,15 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
|
||||||
|
|
||||||
# set root password
|
|
||||||
if [ -n "$ROOTPW" ]; then
|
|
||||||
$ROOTCMD usermod -p "$ROOTPW" root
|
|
||||||
else
|
|
||||||
$ROOTCMD usermod -L root
|
|
||||||
# enable sudo for user
|
|
||||||
ainsl /etc/sudoers "$username ALL = ALL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit $error
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Capabilities get lost when creating the fai base.tar.xz image.
|
|
||||||
# Restore them here.
|
|
||||||
#
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ ! -x $target/sbin/setcap ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
for FILE in /bin/ping /bin/ping6 /usr/bin/fping /usr/bin/fping6; do
|
|
||||||
if [ -x $target/$FILE -a ! -h $target/$FILE ] ; then
|
|
||||||
if $ROOTCMD /sbin/setcap cap_net_raw+ep $FILE; then
|
|
||||||
echo "Setcap worked! $FILE is not suid!"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ -x $target/usr/bin/systemd-detect-virt ] ; then
|
|
||||||
$ROOTCMD /sbin/setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
|
|
||||||
fi
|
|
|
@ -1,125 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
netplan_yaml() {
|
|
||||||
# network configuration using ubuntu's netplan.io
|
|
||||||
local IFNAME="$1"
|
|
||||||
local METHOD="$2"
|
|
||||||
echo "Generating netplan configuration for $IFNAME ($METHOD)" >&2
|
|
||||||
echo "# generated by FAI"
|
|
||||||
echo "network:"
|
|
||||||
echo " version: 2"
|
|
||||||
echo " renderer: $RENDERER"
|
|
||||||
case "$RENDERER" in
|
|
||||||
networkd)
|
|
||||||
echo " ethernets:"
|
|
||||||
echo " $IFNAME:"
|
|
||||||
case "$METHOD" in
|
|
||||||
dhcp)
|
|
||||||
echo " dhcp4: true"
|
|
||||||
;;
|
|
||||||
static)
|
|
||||||
echo " addresses: [$CIDR]"
|
|
||||||
echo " gateway4: $GATEWAYS_1"
|
|
||||||
echo " nameservers:"
|
|
||||||
echo " search: [$DOMAIN]"
|
|
||||||
echo " addresses: [${DNSSRVS// /, }]"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
iface_stanza() {
|
|
||||||
# classic network configuration using /etc/network/interfaces
|
|
||||||
local IFNAME="$1"
|
|
||||||
local METHOD="$2"
|
|
||||||
echo "Generating interface configuration for $IFNAME ($METHOD)" >&2
|
|
||||||
echo "# generated by FAI"
|
|
||||||
echo "auto $IFNAME"
|
|
||||||
echo "iface $IFNAME inet $METHOD"
|
|
||||||
case "$METHOD" in
|
|
||||||
static)
|
|
||||||
echo " address $IPADDR"
|
|
||||||
echo " netmask $NETMASK"
|
|
||||||
echo " broadcast $BROADCAST"
|
|
||||||
echo " gateway $GATEWAYS"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
newnicnames() {
|
|
||||||
|
|
||||||
# determine predictable network names only for stretch and above
|
|
||||||
local name
|
|
||||||
|
|
||||||
[ $do_init_tasks -eq 0 ] && return
|
|
||||||
[ -z "$NIC1" ] && return
|
|
||||||
ver=$($ROOTCMD dpkg-query --showformat='${Version}' --show udev)
|
|
||||||
if dpkg --compare-versions $ver lt 220-7; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
fields="ID_NET_NAME_FROM_DATABASE ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH"
|
|
||||||
for field in $fields; do
|
|
||||||
name=$(udevadm info /sys/class/net/$NIC1 | sed -rn "s/^E: $field=(.+)/\1/p")
|
|
||||||
if [[ $name ]]; then
|
|
||||||
NIC1=$name
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# try to get altname net dev
|
|
||||||
name=$(ip link show $NIC1 | awk '/altname / { print $2 }')
|
|
||||||
if [[ $name ]]; then
|
|
||||||
NIC1=$name
|
|
||||||
return
|
|
||||||
else
|
|
||||||
echo "$0: error: could not find systemd predictable network name. Using $NIC1."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "$NIC1" ]; then
|
|
||||||
echo "WARNING: \$NIC1 is not defined. Cannot add ethernet to /etc/network/interfaces."
|
|
||||||
fi
|
|
||||||
CIDR=$(ip -o -f inet addr show $NIC1 | awk '{print $4}')
|
|
||||||
newnicnames
|
|
||||||
|
|
||||||
case "$FAI_ACTION" in
|
|
||||||
install|dirinstall)
|
|
||||||
ifclass DHCPC && METHOD=dhcp || METHOD=static
|
|
||||||
ifclass XORG && RENDERER=NetworkManager || RENDERER=networkd
|
|
||||||
|
|
||||||
if [ -d $target/etc/netplan ]; then
|
|
||||||
# Ubuntu >= 17.10 with netplan.io
|
|
||||||
if [ -n "$NIC1" ]; then
|
|
||||||
netplan_yaml $NIC1 $METHOD > $target/etc/netplan/01-${NIC1}.yaml
|
|
||||||
fi
|
|
||||||
elif [ -d $target/etc/network/interfaces.d ]; then
|
|
||||||
# ifupdown >= 0.7.41 (Debian >= 8, Ubuntu >= 14.04)
|
|
||||||
iface_stanza lo loopback > $target/etc/network/interfaces.d/lo
|
|
||||||
|
|
||||||
if [ -n "$NIC1" -a ! -f $target/etc/NetworkManager/NetworkManager.conf ]; then
|
|
||||||
iface_stanza $NIC1 $METHOD > $target/etc/network/interfaces.d/$NIC1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
(
|
|
||||||
iface_stanza lo loopback
|
|
||||||
iface_stanza $NIC1 $METHOD
|
|
||||||
) > $target/etc/network/interfaces
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! ifclass DHCPC ; then
|
|
||||||
[ -n "$NETWORK" ] && echo "localnet $NETWORK" > $target/etc/networks
|
|
||||||
if [ ! -L $target/etc/resolv.conf -a -e /etc/resolv.conf ]; then
|
|
||||||
cp -p /etc/resolv.conf $target/etc
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# here fcopy is mostly used, when installing a client for running in a
|
|
||||||
# different subnet than during the installation
|
|
||||||
fcopy -iM /etc/resolv.conf
|
|
||||||
fcopy -iM /etc/network/interfaces /etc/networks
|
|
||||||
|
|
||||||
exit $error
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue