您的位置:首页 > 其它

ubuntu 14.04 无人职守全自动安装-基础知识

2015-02-13 14:24 155 查看
Ubuntu 也可以使用配置文件自动回答响应安装过程中的交互内容。他支持两种方式,一种是使用红帽系的kickstart配置文件,但这种方式功能支持的不全,比如磁盘分区等。Ubuntu其实有自己专用的配置方法,即debian系的preseed。他们两个也可共同使用。

本文只对preseed方式做介绍,因为相关资料不是很丰富,没有找到最准确完整的可配置项,遇到特殊的需求还是要自行google,一般搜索格式为:”preseed ubuntu xxxxxxx“,尽量使用英文搜索。

有些内容研究尚不彻底,望广大网友多提宝贵意见和建议。

参考资料:https://help.ubuntu.com/14.04/installation-guide/amd64/apb.html

http://ftp.dc.volia.com/pub/debian/preseed/partman-auto-recipe.txt

http://razvangavril.com/linux-administration/custom-ubuntu-server-iso/


三种方式

preseed配置文件可以通过三种方式提供:initrd文件, 普通文件 和 网络文件.(txt.cfg也可以指定,不建议在此指定过多参数)

依据安装介质的不同,这三种方式并不能全部支持,如下表:

安装方式
initrd文件
普通文件
网络文件
CD/DVD(光盘安装)
支持
支持
支持
netboot(PXE网络安装)
支持
不支持
支持
hd-media (硬盘安装)
支持
支持
支持
initrd文件:支持所有preseed参数

普通文件:支持安装界面语言,键盘选择之后的参数

网络文件:支持配置好网络之后的参数

initrd文件支持所有安装方式和所有参数,缺点是不便于修改;普通文件的方式不支持网络安装,支持的参数较全面(可以用安装选单参数配合),但是易于修改;网络文件缺点是需要联网,且有http或ftp服务器,支持的参数少。三种方式可以混合使用。

本人建议:

如果想在一个文件中配置所有参数那就选择initrd方式。否则可选择混合方式。

光盘安装,使用txt.cfg参数+普通文件的方式。PXE安装可选择initrd+网络方式。


initrd文件操作

Linux® 初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式 Linux 系统中,initrd 就是最终的根文件系统。(引自:http://www.ibm.com/developerworks/cn/linux/l-initrd.html)

安装镜像中包含有光盘安装(/install/initrd.gz)和PXE网络安装(/install/netboot/ubuntu-installer/amd64/initrd.gz)所需的两个initrd文件。他们的制作方式是相同的:

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

gunzip initrd.gz

mv initrd initrd.img

mkdir initrd

cd initrd

cpio –i <../initrd.img

这样initrd.gz会变成一个initrd路径,进入路径添加一个preseed.cfg文件,文件名不能错,下文讲到的preseed参数写在里边。然后重新打包initrd.gz

find . | cpio -o -H newc | gzip -9 > ../initrd.gz

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


txt.cfg指定

此种方式只限于少量参数,否则会很混乱。且似乎指能用于光盘安装。

/isolinux/txt.cfg

===== 8< ==========

default autoinstall

label autoinstall

menu label ^Auto Install Ubuntu Server

kernel /install/vmlinuz

append file=/cdrom/preseed/ubuntu-server-autoins.seed vga=788 initrd=/install/initrd.gz locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us quiet --

====== >8 =========

如图中橙色背景处的参数,与preseed的中的区别在于:

preseed中为>

# Preseeding only locale sets language, country and locale.

d-i debian-installer/locale string en_US

txt.cfg中应该为>

debian-installer/locale=en_US

因为locale 是 debian-installer/locale的简写形式(见参考资料),所以最终我们可以写成:

locale=en_US

其他参数类似,不再赘述


preseed参数

光盘镜像中包含一个配置文件示例(/doc/install/manual/example-preseed.txt.gz),下文为尝试使用中文注释的可配项(英语不太好,不准确请见谅,欢迎指正),'#'为注释符

###########################################################################

## 地区 和 键盘 配置

## 在文件配置方式下不可用,可在txt.cfg中添加 locale=en_US 和 console-setup/ask_detect=false keyboard-configuration/layoutcode=us

#############################################################################

# 预置 区域语言,国家和地区.

d-i debian-installer/locale string en_US

# 灵活的单独配置语言、国家、地区.

#d-i debian-installer/language string en

#d-i debian-installer/country string NL

#d-i debian-installer/locale string en_GB.UTF-8

# 可选项,指定附加的地区.

#d-i localechooser/supported-locales en_US.UTF-8, nl_NL.UTF-8

# 键盘 选择.

# 禁用交互式键盘布局自动探测.

d-i console-setup/ask_detect boolean false

# 指定键盘模式和布局

#d-i keyboard-configuration/modelcode string pc105

d-i keyboard-configuration/layoutcode string us

# 选择布局变种,比如dvorak(如果省略, 将使用基本布局)

#d-i keyboard-configuration/variantcode string dvorak

######################################################################################

## 配置网络

## (PXE网络安装时不可用)

######################################################################################

# 彻底禁用配置网络. 在没有网络设备的机器上使用光盘安装时非常有用,

# 否则会遇到讨厌的网络警告,长时间的等待超时等.

#d-i netcfg/enable boolean false

# 网络配置程序将会自动选择一个连接有网线的网口.

# 这会跳过在多网卡的机器上显示网口列表.

#d-i netcfg/choose_interface select auto

# 或直接指定要配置的网口:

d-i netcfg/choose_interface select eth0

# 如果你的dhcp服务器很慢,安装程序等待dhcp的配置.

# 这个超时选项可能很有用.

d-i netcfg/dhcp_timeout string 60

# 如果你想手动配置网络,解注此处和后边静态配置网卡的内容.

#d-i netcfg/disable_autoconfig boolean true

# 如果你想让本配置文件在有或者没有dhcp服务器的情况下都起作用,

# 解除此处的注释和后边静态配置网口的内容.

#d-i netcfg/dhcp_failed note

#d-i netcfg/dhcp_options select Configure network manually

# 静态网络配置.

#d-i netcfg/get_nameservers string 8.8.8.8

#d-i netcfg/get_ipaddress string 192.168.1.42

#d-i netcfg/get_netmask string 255.255.255.0

#d-i netcfg/get_gateway string 192.168.1.1

#d-i netcfg/confirm_static boolean true

# 从dhcp服务器获取的主机名和域名的优先级高于此处的配置

# 但是, 设置这些变量值仍然可以防止相关对话框的显示.

d-i netcfg/get_hostname string unassigned-hostname

#d-i netcfg/get_domain string unassigned-domain

# 禁用讨厌的 WEP 键 对话框.

#d-i netcfg/wireless_wep string

# 古怪的dhcp主机名,有些ISP使用它作为分类密码.

#d-i netcfg/dhcp_hostname string radish

# 如果需要不是自由软件的固件,网卡的或其他硬件的, 你可以配置安装程序总是加载他们而不提示,或者设置成false直接不询问.

#d-i hw-detect/load_firmware boolean true

######################################################################################

## 网络控制台

######################################################################################

# 使用后边的配置,如果你想使用网络控制台

# 通过SSH远程控制安装.这个只在你想手动控制剩下的安装时才有意义.

#d-i anna/choose_modules string network-console

#d-i network-console/password password r00tme

#d-i network-console/password-again password r00tme

# 用此处配置代替密码,如果你想用基于key文件的身份认证

#d-i network-console/authorized_keys_url http://host/authorized_keys
######################################################################################

## 镜像设置

######################################################################################

# 如果此处设置ftp,mirror/country 不需要设置.

#d-i mirror/protocol string ftp

#d-i mirror/country string manual

#d-i mirror/http/hostname string archive.ubuntu.com

#d-i mirror/http/directory string /ubuntu

d-i mirror/http/proxy string

# 第二选择:默认情况下,安装程序使用 CC.archive.ubuntu.com

# CC是选择的国家的 ISO-3166-2 代码 .

# 预置在此处安装过程中将不会再询问.

#d-i mirror/http/mirror select CC.archive.ubuntu.com

# 安装的软件包.

#d-i mirror/suite string trusty

# Suite to use for loading installer components (optional).

#d-i mirror/udeb/suite string trusty

# Components to use for loading installer components (optional).

#d-i mirror/udeb/components multiselect main, restricted

######################################################################################

## 时间和时区设置

######################################################################################

# 控制硬件时间是否设置为UTC.

d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of

# /usr/share/zoneinfo/ for valid values.

d-i time/zone string Asia/Shanghai

# Controls whether to use NTP to set the clock during the install

#d-i clock-setup/ntp boolean true

# NTP server to use. The default is almost always fine here.

#d-i clock-setup/ntp-server string ntp.example.com

######################################################################################

## Partitioning

######################################################################################

# If the system has free space you can choose to only partition that space.

# This is only honoured if partman-auto/method (below) is not set.

# Alternatives: custom, some_device, some_device_crypto, some_device_lvm.

#d-i partman-auto/init_automatically_partition select biggest_free

# auto unmount. This was missing in the example preseed

d-i preseed/early_command string umount /media || true

#d-i partman/unmount_active boolean true # this doesn't work

# Alternatively, you may specify a disk to partition. If the system has only

# one disk the installer will default to using that, but otherwise the device

# name must be given in traditional, non-devfs format (so e.g. /dev/hda or

# /dev/sda, and not e.g. /dev/discs/disc0/disc).

# For example, to use the first SCSI/SATA hard disk:

d-i partman-auto/disk string /dev/sda

# In addition, you'll need to specify the method to use.

# The presently available methods are:

# - regular: use the usual partition types for your architecture

# - lvm: use LVM to partition the disk

# - crypto: use LVM within an encrypted partition

d-i partman-auto/method string lvm

## with encrypted LVM you can set passphrase, it should more than 8 characters, I haven't find encrypt this and auto use weak passwd

#d-i partman-auto/method string crypto

#d-i partman-crypto/passphrase password 123456

#d-i partman-crypto/passphrase-again password 123456

partman-crypto partman-crypto/weak_passphrase boolean true

# If one of the disks that are going to be automatically partitioned

# contains an old LVM configuration, the user will normally receive a

# warning. This can be preseeded away...

d-i partman-lvm/device_remove_lvm boolean true

# The same applies to pre-existing software RAID array:

d-i partman-md/device_remove_md boolean true

# And the same goes for the confirmation to write the lvm partitions.

d-i partman-lvm/confirm boolean true

d-i partman-lvm/confirm_nooverwrite boolean true #NOTE: This was missing in the example preseed

# For LVM partitioning, you can select how much of the volume group to use

# for logical volumes.

d-i partman-auto-lvm/guided_size string max

#d-i partman-auto-lvm/guided_size string 10GB

#d-i partman-auto-lvm/guided_size string 50%

d-i partman-auto-lvm/new_vg_name string vg-workstation

# You can choose one of the three predefined partitioning recipes:

# - atomic: all files in one partition

# - home: separate /home partition

# - multi: separate /home, /usr, /var, and /tmp partitions

d-i partman-auto/choose_recipe select atomic

#d-i partman-auto/choose_recipe select custom-lvm

## Or provide a recipe of your own...

# If you have a way to get a recipe file into the d-i environment, you can

# just point at it.

#d-i partman-auto/expert_recipe_file string /hd-media/recipe

# If not, you can put an entire recipe into the preconfiguration file in one

# (logical) line. This example creates a small /boot partition, suitable

# swap, and uses the rest of the space for the root partition:

#d-i partman-auto/expert_recipe string \

# custom-lvm :: \

# 500 500 500 ext4 $primary{ } $bootable{ } \

# mountpoint{ /boot } \

# method{ format } \

# format{ } \

# use_filesystem{ } \

# filesystem{ ext4 } \

# . \

# 1024 1024 1024 ext4 $lvmok{ } \

# mountpoint{ /var } \

# lv_name{ var } \

# in_vg { vg-workstation } \

# method{ format } \

# format{ } \

# use_filesystem{ } \

# filesystem{ ext4 } \

# . \

# 1024 4096 1000000000 ext4 $lvmok{ } \

# mountpoint{ / } \

# lv_name{ root } \

# in_vg { vg-workstation } \

# method{ format } \

# format{ } \

# use_filesystem{ } \

# filesystem{ ext4 } \

# . \

# 64 512 300% linux-swap $lvmok{ } \

# lv_name{ swap } \

# in_vg { vg-workstation } \

# method{ swap } \

# format{ } \

# .

# If you just want to change the default filesystem from ext3 to something

# else, you can do that without providing a full recipe.

d-i partman/default_filesystem string ext4

# The full recipe format is documented in the file partman-auto-recipe.txt

# included in the 'debian-installer' package or available from D-I source

# repository. This also documents how to specify settings such as file

# system labels, volume group names and which physical devices to include

# in a volume group.

# This makes partman automatically partition without confirmation, provided

# that you told it what to do using one of the methods above.

d-i partman-partitioning/confirm_write_new_label boolean true

#d-i partman/choose_partition select finish # Note , this is worong! As follows

d-i partman/choose_partition \

select Finish partitioning and write changes to disk

d-i partman/confirm boolean true

d-i partman/confirm_nooverwrite boolean true

######################################################################################

## Partitioning using RAID

######################################################################################

# The method should be set to "raid".

#d-i partman-auto/method string raid

# Specify the disks to be partitioned. They will all get the same layout,

# so this will only work if the disks are the same size.

#d-i partman-auto/disk string /dev/sda /dev/sdb

# Next you need to specify the physical partitions that will be used.

#d-i partman-auto/expert_recipe string \

# multiraid :: \

# 1000 5000 4000 raid \

# $primary{ } method{ raid } \

# . \

# 64 512 300% raid \

# method{ raid } \

# . \

# 500 10000 1000000000 raid \

# method{ raid } \

# .

# Last you need to specify how the previously defined partitions will be

# used in the RAID setup. Remember to use the correct partition numbers

# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;

# devices are separated using "#".

# Parameters are:

# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \

# <devices> <sparedevices>

#d-i partman-auto-raid/recipe string \

# 1 2 0 ext3 / \

# /dev/sda1#/dev/sdb1 \

# . \

# 1 2 0 swap - \

# /dev/sda5#/dev/sdb5 \

# . \

# 0 2 0 ext3 /home \

# /dev/sda6#/dev/sdb6 \

# .

# For additional information see the file partman-auto-raid-recipe.txt

# included in the 'debian-installer' package or available from D-I source

# repository.

# This makes partman automatically partition without confirmation.

#d-i partman-md/confirm boolean true

#d-i partman-partitioning/confirm_write_new_label boolean true

#d-i partman/choose_partition select finish

#d-i partman/confirm boolean true

#d-i partman/confirm_nooverwrite boolean true

######################################################################################

## Controlling how partitions are mounted

######################################################################################

# The default is to mount by UUID, but you can also choose "traditional" to

# use traditional device names, or "label" to try filesystem labels before

# falling back to UUIDs.

#d-i partman/mount_style select uuid

######################################################################################

## Base system installation

######################################################################################

# Configure APT to not install recommended packages by default. Use of this

# option can result in an incomplete system and should only be used by very

# experienced users.

#d-i base-installer/install-recommends boolean false

# The kernel image (meta) package to be installed; "none" can be used if no

# kernel is to be installed.

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

######################################################################################

## Account setup

## The following command can be used to generate an MD5 hash for a password:

## $ printf "123456" | mkpasswd -s -m md5

######################################################################################

# Skip creation of a root account (normal user account will be able to

# use sudo). The default is false; preseed this to true if you want to set

# a root password.

d-i passwd/root-login boolean root

# Alternatively, to skip creation of a normal user account.

#d-i passwd/make-user boolean false

# Root password, either in clear text

#d-i passwd/root-password password 123456

#d-i passwd/root-password-again password 123456

# or encrypted using an MD5 hash.

d-i passwd/root-password-crypted password $1$mTX9z2NE$2GASUCmhyKysazfeD2jE80

# To create a normal user account.

d-i passwd/user-fullname string Ubuntu User

d-i passwd/username string ubuntu

# Normal user's password, either in clear text

#d-i passwd/user-password password 123456

#d-i passwd/user-password-again password 123456

# or encrypted using an MD5 hash.

d-i passwd/user-password-crypted password $1$z4dTGw4N$OvJwkB7XsVlLJBns2Y32m1

# Create the first user with the specified UID instead of the default.

#d-i passwd/user-uid string 1010

# The installer will warn about weak passwords. If you are sure you know

# what you're doing and want to override it, uncomment this.

d-i user-setup/allow-password-weak boolean true

# The user account will be added to some standard initial groups. To

# override that, use this.

#d-i passwd/user-default-groups string audio cdrom video

# Set to true if you want to encrypt the first user's home directory.

d-i user-setup/encrypt-home boolean false

######################################################################################

## Apt setup

######################################################################################

# You can choose to install restricted and universe software, or to install

# software from the backports repository.

#d-i apt-setup/restricted boolean true

#d-i apt-setup/universe boolean true

#d-i apt-setup/backports boolean true

# Uncomment this if you don't want to use a network mirror.

#d-i apt-setup/use_mirror boolean false

# Select which update services to use; define the mirrors to be used.

# Values shown below are the normal defaults.

#d-i apt-setup/services-select multiselect security

#d-i apt-setup/security_host string security.ubuntu.com

#d-i apt-setup/security_path string /ubuntu

# Additional repositories, local[0-9] available

#d-i apt-setup/local0/repository string \

# http://local.server/ubuntu trusty main

#d-i apt-setup/local0/comment string local server

# Enable deb-src lines

#d-i apt-setup/local0/source boolean true

# URL to the public key of the local repository; you must provide a key or

# apt will complain about the unauthenticated repository and so the

# sources.list line will be left commented out

#d-i apt-setup/local0/key string http://local.server/key
# By default the installer requires that repositories be authenticated

# using a known gpg key. This setting can be used to disable that

# authentication. Warning: Insecure, not recommended.

#d-i debian-installer/allow_unauthenticated boolean true

######################################################################################

## Package selection

## Available tasks as of this writing include:

## standard

## ubuntu-desktop

## kubuntu-desktop

## edubuntu-desktop

## xubuntu-desktop

## dns-server

## lamp-server

######################################################################################

#tasksel tasksel/first multiselect ubuntu-desktop

#tasksel tasksel/first multiselect lamp-server, print-server

#tasksel tasksel/first multiselect kubuntu-desktop

tasksel tasksel/first multiselect standard

# Individual additional packages to install

d-i pkgsel/include string openssh-server build-essential

# Whether to upgrade packages after debootstrap.

# Allowed values: none, safe-upgrade, full-upgrade

d-i pkgsel/upgrade select none

# Language pack selection

#d-i pkgsel/language-packs multiselect de, en, zh

# Policy for applying updates. May be "none" (no automatic updates),

# "unattended-upgrades" (install security updates automatically), or

# "landscape" (manage system with Landscape).

d-i pkgsel/update-policy select none

# Some versions of the installer can report back on what software you have

# installed, and what software you use. The default is not to report back,

# but sending reports helps the project determine what software is most

# popular and include it on CDs.

#popularity-contest popularity-contest/participate boolean false

# By default, the system's locate database will be updated after the

# installer has finished installing most packages. This may take a while, so

# if you don't want it, you can set this to "false" to turn it off.

d-i pkgsel/updatedb boolean false

######################################################################################

## Boot loader installation

######################################################################################

# Grub is the default boot loader (for x86). If you want lilo installed

# instead, uncomment this:

#d-i grub-installer/skip boolean true

# To also skip installing lilo, and install no bootloader, uncomment this

# too:

#d-i lilo-installer/skip boolean true

# With a few exceptions for unusual partitioning setups, GRUB 2 is now the

# default. If you need GRUB Legacy for some particular reason, then

# uncomment this:

#d-i grub-installer/grub2_instead_of_grub_legacy boolean false

# This is fairly safe to set, it makes grub install automatically to the MBR

# if no other operating system is detected on the machine.

d-i grub-installer/only_debian boolean true

# This one makes grub-installer install to the MBR if it also finds some other

# OS, which is less safe as it might not be able to boot that other OS.

d-i grub-installer/with_other_os boolean true

# Alternatively, if you want to install to a location other than the mbr,

# uncomment and edit these lines:

#d-i grub-installer/only_debian boolean false

#d-i grub-installer/with_other_os boolean false

#d-i grub-installer/bootdev string (hd0,0)

# To install grub to multiple disks:

#d-i grub-installer/bootdev string (hd0,0) (hd1,0) (hd2,0)

# Optional password for grub, either in clear text

#d-i grub-installer/password password r00tme

#d-i grub-installer/password-again password r00tme

# or encrypted using an MD5 hash, see grub-md5-crypt(8).

#d-i grub-installer/password-crypted password [MD5 hash]

# Use the following option to add additional boot parameters for the

# installed system (if supported by the bootloader installer).

# Note: options passed to the installer will be added automatically.

#d-i debian-installer/add-kernel-opts string nousb

# example:

##d-i debian-installer/add-kernel-opts string vga=normal nomodeset audit=0 intel_idle.max_cstate=0 processor.max_cstate=1 cgroup_enable=memory swapaccount=1

######################################################################################

## Finishing up the installation

######################################################################################

# During installations from serial console, the regular virtual consoles

# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next

# line to prevent this.

#d-i finish-install/keep-consoles boolean true

# Avoid that last message about the install being complete.

d-i finish-install/reboot_in_progress note

# This will prevent the installer from ejecting the CD during the reboot,

# which is useful in some situations.

d-i cdrom-detect/eject boolean true

# This is how to make the installer shutdown when finished, but not

# reboot into the installed system.

#d-i debian-installer/exit/halt boolean true

# This will power off the machine instead of just halting it.

#d-i debian-installer/exit/poweroff boolean true

######################################################################################

## X configuration

######################################################################################

# X can detect the right driver for some cards, but if you're preseeding,

# you override whatever it chooses. Still, vesa will work most places.

#xserver-xorg xserver-xorg/config/device/driver select vesa

# A caveat with mouse autodetection is that if it fails, X will retry it

# over and over. So if it's preseeded to be done, there is a possibility of

# an infinite loop if the mouse is not autodetected.

#xserver-xorg xserver-xorg/autodetect_mouse boolean true

# Monitor autodetection is recommended.

xserver-xorg xserver-xorg/autodetect_monitor boolean true

# Uncomment if you have an LCD display.

#xserver-xorg xserver-xorg/config/monitor/lcd boolean true

# X has three configuration paths for the monitor. Here's how to preseed

# the "medium" path, which is always available. The "simple" path may not

# be available, and the "advanced" path asks too many questions.

#xserver-xorg xserver-xorg/config/monitor/selection-method \

# select medium

#xserver-xorg xserver-xorg/config/monitor/mode-list \

# select 1024x768 @ 60 Hz

d-i preseed/late_command string echo 'hehe' > /var/log/test.txt

######################################################################################

## Preseeding other packages

######################################################################################

# Depending on what software you choose to install, or if things go wrong

# during the installation process, it's possible that other questions may

# be asked. You can preseed those too, of course. To get a list of every

# possible question that could be asked during an install, do an

# installation, and then run these commands:

# debconf-get-selections --installer > file

# debconf-get-selections >> file



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: