我有一个 PXE 启动设置,用于通过 Kickstart 安装 CentOS 5 和 Ubuntu 10.04。我使用 LVM 并在没有任何用户交互的情况下安装 CentOS,但 Ubuntu 在分区期间总是要求“确认将更改写入磁盘并配置 LVM”。如果我不使用 LVM,Ubuntu 不会要求任何确认,只会对磁盘进行分区。
我处理分区的 kickstart 文件部分如下所示:
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype ext2 --size 200 --asprimary
part swap --size 1024
part pv.01 --size 1 --grow
volgroup rootvg pv.01
logvol / --fstype ext4 --vgname=rootvg --size=1 --grow --name=rootvol
Run Code Online (Sandbox Code Playgroud)
如何告诉 Ubuntu 始终接受设置而不在屏幕上选择“是”?有没有类似的confirm all选择?
我正在使用 libvirt 的 virt-install 命令创建一个新的虚拟机。该命令使用 initrd-inject 从管理程序中提取本地预置文件:
virt-install \
--autostart \
--name vm1 \
--ram 4096 \
--location=http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-amd64/ \
--initrd-inject=/var/lib/libvirt/preseeds/vms/preseed.cfg \
--extra-args="locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us hostname=virtual domain=unassigned-domain interface=auto" \
--vcpu=4 \
--vnc \
--vnclisten=0.0.0.0 \
--noautoconsole \
--os-type=linux \
--os-variant=ubuntukarmic \
-w bridge=br0 \
-w bridge=br1 \
-w network=default \
--disk format=qcow2,size=20,bus=virtio,path=/export/vm/vm1.qcow2
Run Code Online (Sandbox Code Playgroud)
一切正常,直到 preseed 的 late_command 部分动态打印一个 upstart 脚本到文件中;
d-i preseed/late_command string printf "description \"the run-once bootstrap\"\n\nstart on net-device-up\nstop on runlevel [!2345]\n\npre-start script\n wget -O /root/bootstrap.sh http://my.bootstrap/bootstrap;\nchmod +x /root/bootstrap.sh;\n /root/bootstrap.sh > …Run Code Online (Sandbox Code Playgroud) 我正在尝试自动执行现有 Ubuntu 安装的重新安装过程。
分区布局:
我想要完成的是:
最重要的是保留现有 PV 上的数据。我能够通过在 lvm.conf 中设置一个过滤器来实现这一点,它排除了所有块设备,因此禁用了 lvm 支持。
问题是安装后我必须重新创建/dev/md/2,希望数据完好无损。
配置的预置部分是:
d-i partman/early_command string sed 's/filter\ =\ \[\ "a\/.*\/\"\ \]/filter\ =\ \[\ "r\/.*\/\"\ \]/g' -i /etc/lvm/lvm.conf
d-i partman-auto-raid/recipe string \
1 2 0 swap - /dev/sda1#/dev/sdb1 .\
1 2 0 ext3 / /dev/sda2#/dev/sdb2 .
d-i partman-auto/expert_recipe string \
multiraid :: \
2000 10 2000 raid $primary{ } …Run Code Online (Sandbox Code Playgroud) 除了 ONE 提示外,我已经从 cdrom 顺利进行了预安装。它会在安装软件之前扫描 cdrom,并询问我是否要插入额外的 CD 进行扫描。
有什么方法可以强制使用 preseed 回答这个问题?
这是仅从 CD1 安装的 7.5.0-wheezy。
2014 年 6 月 11 日更新:结束只是切换到 netinstall 而不是从 CD,所以实际上不知道下面的答案是否有效,但我已经接受了,因为它看起来是正确的方法。
我正在尝试编写一个 preseed.cfg,它应该用于 Debian wheezy 的全自动安装。出于某些原因,即使我在 preseed.cfg 中进行了设置,安装程序仍会要求选择一种语言。
我从官方 Debian 页面获得了这些选项:https : //www.debian.org/releases/wheezy/example-preseed.txt
# Preseeding only locale sets language, country and locale.
d-i debian-installer/language string en
d-i debian-installer/country string DE
d-i debian-installer/locale string en_US.UTF-8
# Optionally specify additional locales to be generated.
d-i localechooser/supported-locales multiselect de_DE.UTF-8
Run Code Online (Sandbox Code Playgroud) 我正在使用 USB 驱动器和不同类型的服务器(HP Proliant ML110、ML310、ML350)上的预置文件对 Ubuntu-14.04-server 进行无人值守安装。
/dev/sda,USB 驱动器占用/dev/sdb./dev/sda并且硬盘驱动器显示为/dev/sdb.由于这应该是完全无人值守的安装,无论服务器类型如何,我都需要找到一种方法来为d-i partman-auto/disk.
我的第一个想法是强制硬盘驱动器出现在 USB 驱动器之前,使其能够/dev/sda运行 ML350 服务器;但我没有找到办法做到这一点。
因此,我制作了一个小脚本,在partman执行之前检测设备名称,并将其记录在一个变量中$INSTALL_DEV:
d-i partman/early_command string \
for DEV in `ls /sys/block | grep sd`; do \
if [ -n "`ls -l /sys/block/$DEV | grep /usb`" ]; then \
USB_DEV=/dev/${DEV}; \
echo "USB_DEV is $USB_DEV" >> /var/log/syslog; \
else \ …Run Code Online (Sandbox Code Playgroud) 一些背景...
我认为这应该是一个与 linux 内核(或内核模块)相关的一般问题,尽管我在为自动安装预置 debian 时遇到了这个问题。
每次我从 USB 磁盘启动安装程序时,USB 磁盘都是 /dev/sda,但我使用的预置文件假定第一个硬盘(在这种情况下是 sata)应该是 /dev/sda。我正在使用相同的系统进行 pxe 网络安装,我希望它们保持一致。我还担心,如果我编写了一个预置配置,假设第一个磁盘是 sdb,那么由于某种原因,它可能不会在某个时候出现。
我尝试编写 udev 规则,将 USB 磁盘的设备名称更改为“INSTALLMEDIA”,这似乎有效,但是它不会导致 SATA 磁盘以 sda 启动,它们仍然以 sdb 启动。
我的问题...
什么决定了磁盘的发现和命名顺序?
如果有的话,我能做些什么来控制它?
如果我不能做任何事情来控制它,从 USB 启动时假设 USB 磁盘或多或少可以保证是 sda 并且第一个 SATA 磁盘始终是 sdb 是否安全?
我在官方文档中看到:
#d-i partman-auto/expert_recipe string \
# boot-root :: \
# 40 50 100 ext3 \
# $primary{ } $bootable{ } \
# method{ format } format{ } \
# use_filesystem{ } filesystem{ ext3 } \
# mountpoint{ /boot } \
# . \
Run Code Online (Sandbox Code Playgroud)
这是什么40 50 100?这些数字是什么意思?/boot分区的大小是多少?我在文档中没有找到解释?C
我可能需要在我们的英国和美国站点之间重建 1TB Windows 2008 DFS 复制文件夹。在开始复制之前为另一个副本设置种子是一种很好的做法,这样在初始复制期间不需要复制大量数据。
但是,我一直不确定这个种子是否需要种子的安全性(访问控制列表),或者您是否可以使用文件的简单副本?
过去,我们使用 robocopy 到外部 USB(有人拿出来),并带有 /sec 标志来复制安全性,但这在复制数据时引起了一些麻烦。
我正在通过 PXE 从另一个 virtualbox VM(使用 cobbler)启动一个 virtualbox VM。两台机器都有 2 个适配器:1) 外部网络和 2) 仅主机网络。
“客户端”虚拟机通过 PXE(使用仅主机网络适配器)成功引导到安装程序,但随后安装程序甚至不会尝试下载预置文件(根据服务器日志)或获取 IP 地址(再次根据到服务器日志 -之前确实显示了 TFTP 请求)。
我掉进一个壳里,看到:
我如何让安装程序看到我的网络适配器,或者至少我如何找到这个问题的原因?
这是 PXE 菜单项:
default linux
prompt 0
timeout 1
label linux
kernel /images/ubuntu-10.04-server-x86_64/vmlinuz
ipappend 2
append initrd=/images/ubuntu-10.04-server-x86_64/initrd.gz locale= interface=auto text root=/dev/sda1 priority=critical auto url=http://192.168.56.101/cblr/svc/op/ks/system/pierrot hostname=pierrot domain=local.lan suite=lucid
Run Code Online (Sandbox Code Playgroud) 在 debian 的安装过程中,EFI 分区被格式化为 ext4。
我正在尝试预先安装 debian jessie 并且我无法让它工作,因为 UEFI 分区是在 ext4 中格式化的(通过 blkid 获取信息)。
我的分区预置如下:
d-i partman-auto/expert_recipe string \
boot-root :: \
1 1 1 free \
$gptonly{ } \
$primary{ } \
$bios_boot{ } \
method{ biosgrub } \
. \
512 100 512 vfat \
$gptonly{ } \
$primary{ } \
method{ efi } \
format{ } \
$lvmignore{ } \
mountpoint{ /boot/efi } \
. \
...
.
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:“无法在 /boot/efi 上挂载 vfat 文件系统”
当然,它是一个 ext4 fs...! …
preseed ×11
debian ×5
ubuntu ×5
automation ×3
kickstart ×2
lvm ×2
boot ×1
dfs ×1
installation ×1
linux ×1
md ×1
partition ×1
pxe-boot ×1
replication ×1
uefi ×1
unattended ×1
usb-boot ×1
virtualbox ×1