上一篇介绍了部署服务器的基本环境准备,本文介绍ubuntu无人值守安装的流程和deb源服务器的搭建,打通离线部署和安装一条龙。
镜像准备
从ubuntu官网下载iso文件,因为使用autoinstall的方法,所以需要准备server的镜像文件
https://ubuntu.com/download/server
下载后将镜像文件放到/var/www/html目录下
tftp内核准备
mount /var/lib/tftpboot/ubuntu-22.04.1-live-server-amd64.iso /mnt/
mkdir /var/lib/tftpboot/boot/
mkdir /var/lib/tftpboot/boot/ubuntu_live/
cp /mnt/casper/vmlinuz /var/lib/tftpboot/boot/ubuntu_live/
cp /mnt/casper/initrd /var/lib/tftpboot/boot/ubuntu_live/
umount /mnt
grub文件准备
vi /var/lib/tftp/grub/grub.cfg
###
default=autoinstall
timeout=10
timeout_style=menu
d=autoinstall
menuentry "Ubuntu 22.04 Auto - Installer" --id=autoinstall {
echo "Loading Kernel..."
linux /boot/ubuntu_live/vmlinuz ip=dhcp url=http://xxx.xxx.xxx.xxx/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net\;s=http://xxx.xxx.xxx.xxx/autoinstall/
echo "Loading Ram Disk..."
initrd /boot/ubuntu_live/initrd
}
###
autoinstall文件准备
meta-data创建
cat > /var/www/html/autoinstall/meta-data <<EOF
instance-id: jammy-autoinstall
EOF
user-data创建,可以根据实际情况修改成适合自己的
vi var/www/html/autoinstall/user-data
#cloud-config
autoinstall:
identity:
hostname: test
password: $6$n0hcY0lIJ2420PuT$yx4fqZpWG81Rhh99wRiQNFmHsnfvw..GPk0bUgFZYUyCo13HznFyRM5TtgBqbU6ZJU9U4ATufUpApT4IhTguI0
realname: test
username: test
kernel:
package: linux-generic
keyboard:
layout: us
toggle: null
variant: ''
locale: en_US.UTF-8
ssh:
allow-pw: true
authorized-keys: []
install-server: true
storage:
layout:
name: lvm
updates: security
swap:
swap: 1G
late-commands:
- curtin in-target --target=/target -- wget -P /root http://xxx.xxx.xxx.xxx/autoinstall/init.sh
- curtin in-target --target=/target -- bash /root/init.sh
version: 1
离线桌面安装
如果需要使用桌面版,但是又在局域网内无法联网,可以制作离线ubuntu-desktop安装包,在init.sh内进行安装。
1. 安装ubuntu server,并保证改电脑可以联网
2. # -d --download-only 表示下载模式,只下载不会安装,centos中yum也有--downloadonly参数
sudo apt-get -d update
# 缓存openssh-server包 或者改为下载 vsftpd等其他软件
sudo apt-get -d install ubuntu-desktop
# 进入到缓存目录
cd /var/cache/apt/archives
# 先在A机器上测试安装
dpkg -i *.deb
# 安装完毕后重启查看是否安装成功,如果安装成功,那么将所有的deb包打包成tar.gz文件
tar -czvf offline-desktop.tar.gz *.deb
# 放到http服务器
cp offline-desktop.tar.gz /var/www/html
deb源服务器准备
需要准备1台可以上网的电脑,用于下载source文件;如果有文件服务器,可以通过挂载的方式存放,以22.04为例,大概需要200G数据量;mirror.list内可以自定义修改base_path(source的存放位置),deb源下载链接需根据实际ubuntu版本适配。
如果准备好了deb源服务器,可以不用制作离线安装包,在init.sh内设置aptproxy后使用apt install ubuntu-desktop直接安装。
apt-get install apt-mirror
vim /etc/apt/mirror.list
############# config ##################
#
set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security multiverse
clean http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
###
更改完成后执行
apt-miiror
开始下载,大概200G左右数据
新建软连接,保证可以通过http获取到资源
ln -s /var/spool/apt-mirror/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu /var/www/html/ubuntu
自定义sh脚本
#pre autotest tool
wget -P /root/ http://xx.xx.xx.xx/xxx/ -r --no-parent --reject "index.html*"
mv /root/xx.xx.xx.xx/xxx/ /root/xxx/
rm /root/xx.xx.xx.xx/ -rf
chmod +x /root/xxx/
#aptproxy
cp /root/xxx/00aptproxy /etc/apt/apt.conf.d
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
systemctl stop ufw.service
systemctl disable ufw.service
echo -e "NTP=xx.xx.xx.xx\nRootDistanceMaxSec=200" >> /etc/systemd/timesyncd.conf
systemctl restart systemd-timesyncd
apt-get update
apt upgrade -y
# install desktop
##23.04的desktop版本除了legacy版本镜像,有需要了解可以私信,不常上线,看缘分回答。
#如果准备好了源服务器可以直接安装,不需要准备离线deb包。apt install -y ubuntu-desktop
mkdir /root/offline_desktop_deb/
wget -P /root/offline_desktop_deb/ http://xx.xx.xx.xx/offline-desktop.tar.gz
cd /root/offline_desktop_deb/
tar -zxvf /root/offline_desktop_deb/offline-desktop.tar.gz
dpkg -i /root/offline_desktop_deb/*.deb
#auto login
sed -i 's/# AutomaticLoginEnable = true/AutomaticLoginEnable = true/' /etc/gdm3/custom.conf
sed -i 's/# AutomaticLogin = user1/AutomaticLogin = test/' /etc/gdm3/custom.conf
rm -rf /root/offline_desktop_deb/
rm -rf /root/init.sh
#set time zone
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp -rf /root/xxx/package/*.xml /usr/share/glib-2.0/schemas/
glib-compile-schemas /usr/share/glib-2.0/schemas
#sudo without pwd
echo -e "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
efibootmgr -o 0000
最后需要在DHCP服务器内配置好tftp地址和bootfile名称,网络内电脑就可以通过pxe安装了。