[筆記] ubuntu 18.04 preseeds

ubuntu 18.04 預設移掉了 /etc/rc.local 的功能

變成要用 systemd 的方式來運作,可是有點難用…

紀錄一下步驟,再來研究怎麼整合到 preseed 裡面

1. 建立 rc-local.service

sudo vi /etc/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

2. 建立 rc.local.bak

這個檔案的作用是,我只需要client在PXE 裝完系統後的第一次開機會發通知信件

所以如果一直保留著 /etc/rc.local 的變動,就變成每次開機都會送出信件

因此,需要先保留原本的 rc.local

在送出通知信件之後,就用原來的 rc.local 蓋掉修改過的 rc.local

sudo vi /etc/rc.local.bak

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


exit 0

3. 建立 rc.local

sudo vi /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

hostname|mail -s pxe_install_complete changch@abc.com
cp /etc/rc.local.bak /etc/rc.local

exit 0

4. 修改 rc.local permission

sudo chmod +x /etc/rc.local

5. 啟用 rc-local service

sudo systemctl enable rc-local

ubuntu 18.04 preseeds files

````

Title: Ubuntu 18.04 preseed.cfg

#

File: templates/os-ubuntu-1804-amd64-preseed.cfg

modified by Eric , 201907

Localization

Keyboard selection.

Disable automatic (interactive) keymap detection.

#d-i console-setup/ask_detect boolean false d-i keyboard-configuration/xkb-keymap select us

d-i console-setup/ask_detect boolean false d-i console-setup/layoutcode string us d-i keyboard-configuration/ask_detect boolean false d-i keyboard-configuration/layoutcode string us

The values can also be preseeded individually for greater flexibility.

d-i localechooser/preferred-locale string en_US.UTF-8 d-i localechooser/supported-locales en_US.UTF-8 d-i debian-installer/language string en d-i debian-installer/country string US d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/continentlist string Asia

Network

d-i netcfg/choose_interface select auto

Mirror settings

If you select ftp, the mirror/country string does not need to be set.

d-i mirror/country string manual d-i mirror/http/proxy string {{ proxy_env }} d-i mirror/http/hostname string {{ pxe_preseed_mirror }} d-i mirror/http/directory string /ubuntu d-i mirror/http/mirror select {{ pxe_preseed_mirror }}

Hostname

#d-i netcfg/get_hostname string unassigned-hostname #d-i netcfg/get_domain string unassigned-domain d-i netcfg/get_hostname string ubuntu d-i netcfg/get_domain string abc.com

account

d-i passwd/root-login boolean false d-i passwd/user-fullname string Adminstrator d-i passwd/username string administrator d-i passwd/user-password-crypted password $6$random_salt$VaSwPia0/6XHIicZLTaDceuRo/f9A6V4WazuZF/lhgQOhRJcKPO5yZ/ZxtBWrAhlDZOQ7GI3s4bPr9485Shry. d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean false d-i passwd/user-default-groups string audio cdrom video sudo adm

Clock & Timezone

d-i clock-setup/utc boolean true d-i time/zone string {{ pxe_preseed_timezone }} d-i clock-setup/ntp boolean true

#d-i tzconfig/gmt boolean true d-i tzconfig/choose_country_zone/Asia select Taipei d-i tzconfig/choose_country_zone_single boolean true

Disable that annoying WEP key dialog.

d-i netcfg/wireless_wep string ubuntu

Partitioning

d-i partman-auto/method string regular d-i partman-lvm/device_remove_lvm boolean true d-i partman-md/device_remove_md boolean true d-i partman-lvm/confirm boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-auto/choose_recipe select default-disk-layout

Or provide a recipe of your own…

d-i partman-auto/expert_recipe string
default-disk-layout ::
10240 20480 -1 ext4
$primary{ } $bootable{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
label{ root }
mountpoint{ / }
.
1024 2048 200% linux-swap
method{ swap } format{ }
.

d-i partman/default_filesystem string ext4 d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true d-i partman/mount_style select uuid

Base system installation

d-i base-installer/kernel/image string linux-generic

Apt setup

d-i apt-setup/restricted boolean true d-i apt-setup/universe boolean true d-i apt-setup/backports boolean true d-i apt-setup/services-select multiselect security d-i apt-setup/security_host string security.ubuntu.com d-i apt-setup/security_path string /ubuntu

Package selection (tasksel –list-tasks)

#tasksel tasksel/first multiselect server, openssh-server tasksel tasksel/first multiselect standard, openssh-server, ubuntu-desktop

Individual packages (python-minimal for Ansible)

d-i pkgsel/include string ssh net-tools python2.7 axel curl vim unzip zip apt-file lynx elinks sysstat ntp htop screen apt-transport-https wget curl git rsync postfix mailutils

Update policy

d-i pkgsel/upgrade select safe-upgrade d-i pkgsel/update-policy select unattended-upgrades popularity-contest popularity-contest/participate boolean false d-i pkgsel/updatedb boolean true

postfix preseeding

postfix postfix/main_mailer_type select Internet Site postfix postfix/mailname string pxe.abc.com postfix postfix/protocols select ipv4

Reporting

popularity-contest popularity-contest/participate boolean false

Bootloader

d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i finish-install/keep-consoles boolean true d-i finish-install/reboot_in_progress note d-i cdrom-detect/eject boolean true

Advanced options

d-i preseed/late_command string
in-target wget –no-proxy http://192.168.1.7/rc-local.service -O /etc/systemd/system/rc-local.service ;
in-target wget –no-proxy http://192.168.1.7/rc.local.pxe -O /etc/rc.local.pxe ;
in-target wget –no-proxy http://192.168.1.7/rc.local.bak -O /etc/rc.local.bak ;
in-target chmod +x /etc/rc.local.pxe ;
in-target chmod +x /etc/rc.local.bak ;
in-target cp /etc/rc.local.pxe /etc/rc.local ;
in-target systemctl enable rc-local ;
in-target ln -s /usr/bin/python3.6 /usr/bin/python

```

Eric Chang Written by:

塵世裡一個迷途小書僮

comments powered by Disqus