是否可以通过网络安装 Ubuntu?

Vis*_*ali 12 networking system-installation

我想为近 120 个用户安装 Ubuntu。但是使用USB和驱动器非常困难。

有什么建议?

Eli*_*gan 11

您可以安装一个 Ubuntu 系统(通常是 Ubuntu Server 系统,但并非必须如此),然后将其用作服务器以 PXE 引导并安装其他系统。客户端(您要安装 Ubuntu 的地方)上的 BIOS 必须支持 PXE(即网络引导)才能使其工作。但是现在大多数 BIOS 都可以。

如果您已经进行了设置并且知道如何在非 Ubuntu 系统上配置必要的服务器,那么您应该也可以使用非 Ubuntu 系统作为主机来执行此操作。


PXEInstallServer Ubuntu的帮助wiki文章介绍了如何建立一个Ubuntu系统PXE服务器,以及如何从它的其他系统中安装Ubuntu。很难总结要点——细节非常重要。所以这里是整件事(有轻微的格式和标点变化):

介绍

这将指导您将 Ubuntu 服务器作为 PXE 安装服务器运行。您需要在网络上运行 DHCP 服务器,不一定是这台服务器,但您确实需要一台。

安装需要的包

您需要安装以下软件包:(inetutils-inetd 以前netkit-inetd),tftpd-hpa(请参阅 安装软件)。

  • 对于 Ubuntu 10.04,存在一个错误inetutils-inetd。它只侦听 IPv6,而不侦听 IPv4。作为一种快速解决方法,您可以 openbsd-inetd改用。

如果这也将成为您的 DHCP 服务器,请安装以下软件包中包含的 dhcp 服务器:(dhcp3-server请参阅 安装软件)。

配置 tftpd-hpa

您需要告诉 tftpd-hpa 启动它的守护进程(默认情况下它不会)。为此,请编辑/etc/default/tftpd-hpa文件,并确保它看起来像这样:

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
Run Code Online (Sandbox Code Playgroud)

然后,运行启动脚本以实际启动守护程序:

/etc/init.d/tftpd-hpa restart
Run Code Online (Sandbox Code Playgroud)

配置 dhcpd

如果你的 pxe 服务器也是你的 dhcp 服务器,你将需要这样的东西/etc/dhcp3/dhcpd.conf

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.100 192.168.0.200;
        filename "pxelinux.0";
}
Run Code Online (Sandbox Code Playgroud)

如果您有一个现有的 dhcp 服务器,您应该通过执行以下操作将其指向您的 pxe 服务器:

subnet 192.168.0.0 netmask 255.255.255.0 {
    <other config here>
    filename "pxelinux.0";
    next-server <pxe host>;
}
Run Code Online (Sandbox Code Playgroud)

请务必重新启动 dhcp 服务器以使更改生效:

sudo /etc/init.d/dhcp3-server restart
Run Code Online (Sandbox Code Playgroud)

配置 tftpd-hpa

tftpd-hpa从 调用inetd。因此,tftpd-hpa 在启动时传递给的选项可以在/etc/inetd.conf

默认值对我们来说很好,你/etc/inetd.conf应该有一个这样的条目:

tftp    dgram   udp    wait    root    /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Run Code Online (Sandbox Code Playgroud)

(尽管您可能需要编辑此文件并替换udpudp4,就像tftpd-hpa现在期望的 IPv6 地址一样。)

现在我们将从 Ubuntu CD 复制所需的文件:

sudo cp -r /media/cdrom/install/netboot/* /var/lib/tftpboot/
Run Code Online (Sandbox Code Playgroud)

如果您的 dhcp 服务器发出正确的网络信息并且您的 pxe 客户端可以访问网络,那么此时您将能够使用 Internet 存储库进行 Ubuntu 安装。

但是,我想更进一步,从安装服务器安装所有内容,并自定义一些要安装的软件包。

安装阿帕奇

目前 nfs 安装没有得到很好的支持(如果我错了,请纠正我)所以我们将通过 http 安装。为此,我们的安装服务器上也需要一个网络服务器:安装以下软件包:(apache请参阅 安装软件)。

复制 Ubuntu 文件

在新安装的 apache 文档根目录下创建一个 ubuntu 目录,并将 Ubuntu Alternate CD 的所有内容复制到该目录:

mkdir /var/www/ubuntu
cp -r /media/cdrom/* /var/www/ubuntu/
Run Code Online (Sandbox Code Playgroud)

自定义安装

有一个名为的包system-config-kickstart,它是创建 kickstart 文件的 GUI 前端。kickstart 文件告诉安装程序从哪里获取软件包、安装什么以及许多其他有用的设置。有关更多信息,请参阅KickstartCompatibility

该软件包不必安装在您的安装服务器上,它可以安装在某个方便的 Ubuntu 桌面上。

创建自定义ks.cfg使用system-config-kickstart,确保在“安装方法”来指定HTTP。提供您安装服务器的 IP 并制作 HTTP 目录/ubuntu/。保存文件并将其复制到安装服务器下的/var/www/html/.

一个非常简约的 `ks.cfg 文件,它只使用安装服务器上的安装文件并询问所有其他问题,可能如下所示:

install
url --url http://192.168.0.1/ubuntu/
Run Code Online (Sandbox Code Playgroud)

使用您的 ks.cfg

为了让您的网络 Ubuntu 安装使用您的 kickstart 文件,您必须告诉它在哪里可以找到它。编辑 /var/lib/tftpboot/pxelinux.cfg/default并添加 ks=http://<installserver>/ks.cfg到追加行。然后它应该看起来像这样(请注意,附加行是一行):

label linux
        kernel ubuntu-installer/i386/linux
        append ks=http://192.168.0.1/ks.cfg vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16432
Run Code Online (Sandbox Code Playgroud)

root=/dev/rd/0 rw --

在 Jaunty [以及可能是以后的版本,包括您可能使用的任何版本] 1 中,默认文件已被分解为包含。可以在以下位置找到附加行 /ubuntu-installer/i386/boot-screens/text.cfg

label install
        menu label ^Install (from my http server)
        menu default
        kernel ubuntu-installer/i386/linux
        append ks=http://192.168.0.1/ks.cfg vga=normal initrd=ubuntu-installer/i386/initrd.gz -- quiet
Run Code Online (Sandbox Code Playgroud)

启动并安装

您现在应该能够通过网络在 LAN 上启动另一台 PC 并让它自动安装 Ubuntu。:) 您可以更改 tftp 和 http 安装点,以便在您的网络上安装多个版本的 Ubuntu。

直接使用 CD(或 .iso)

您还可以实现上述目的,而无需在任何地方实际复制任何文件。您可以挂载 CD(或 .iso),然后使用该--bind选项进行其他挂载。优点是您可以升级 CD(或 .iso)而无需更新安装服务器文件。

例如,在将 CD(或 .iso)/media/cdrom/挂载到 后,您可以将 ubuntu 文件挂载到 web 目录:

mount --bind /media/cdrom/ /var/www/ubuntu/
Run Code Online (Sandbox Code Playgroud)

同样,您可以对以下内容执行相同操作tftproot

mount --bind /media/cdrom/install/netboot/ /var/lib/tftpboot/
Run Code Online (Sandbox Code Playgroud)

如果您要pxelinux.cfg使用适当的默认文件创建一个目录,您可以将它挂载到已挂载 CD 的顶部,以便 tftp 服务器提供您的 pxelinux.cfg/default 文件。例如,可以像这样挂载一个pxelinux.cfg目录~/pxelinux.cfg

mount --bind ~/pxelinux.cfg /var/lib/tftpboot/pxelinux.cfg
Run Code Online (Sandbox Code Playgroud)

(注意,在上面的例子中,实际安装的目录的点最终将作为 /var/lib/tftpboot/ubuntu-installer/i386/pxelinux.cfg由于 pxelinux.cfg是在CD上一个符号链接(或.iso))。

PXEInstallServer,格式、标点符号和大小写略有变化,主要是为了适应 Ask Ubuntu 格式。

那篇文章来自Ubuntu 文档 wiki。它由“Ubuntu 文档维基的贡献者”编写,并在CC-BY-SA 3.0获得许可,允许包含在此处,并具有适当的署名。

1【带括号的斜体文字】非原创;这是我的评论。


请注意此方法与Mitch 建议的方法之间的区别。该方法涉及从 CD/DVD 或 USB 闪存驱动器启动,然后通过网络安装系统。默认情况下,此网络是 Internet;为了使该方法能够合理地安装到网络上的数百台机器上,您可能希望在您的网络上创建和托管一个 Ubuntu 存储库,并将您的安装指向该存储库。

执行此操作所需的工作和基础结构与 PXE 引导机器所需的工作量相当,如上所述。因此,虽然这种方式可能满足您的需求,但如果您确实需要在没有“物理介质”的情况下进行安装,我建议您考虑使用 PXE 启动。