标签 debian 下的文章

debian 11 网络远程自动安装测试 - pxe - preseed.cfg

如机房的机子,一般是远程管理,不方便实地用光盘或U盘安装系统,如 debian 11 是提供了完整的网络安装 netboot 文件及自动配置安装参数 preseed.cfg 的说明。

环境:用 VirtualBox 来创建两个虚拟机,A机为pxe服务所在的机子,B机当客户机。A机安装debian 11,分配两张网卡,一张公网,另一张是内网(enp0s8)

步骤:

  1. apt install dnsmasq # 在A机安装dnsmasq,为B机自动自动分配IP及网络引导启动、安装系统
  2. /etc/dnsmasq.conf # 配置文件内容。大概是设置好tftp的路径 /srv/tftp ,及为B机(传统BIOS启动)设置启动文件为 os-images/bullseye/netboot/pxelinux.0

    interface=enp0s8
    domain=debian.local
    dhcp-range=192.168.3.3,192.168.3.253,255.255.255.0,1h
    enable-tftp
    tftp-root=/srv/tftp
    # dhcp-optsfile=/etc/dnsmasq.opt
    #dhcp-match=ipxe,175
    # dhcp-boot=net:ipxe,default.ipxe
    # pxe-service=x86PC,"ipxe bios", ipxe/undionly.kpxe
    # pxe-service=tag:x86-64_efi,"ipxe efi", ipxe/ipxe.efi
    
    dhcp-match=set:bios-x86,option:client-arch,0
    # dhcp-boot=tag:bios-x86,ipxe/undionly.kpxe
    dhcp-boot=tag:bios-x86,os-images/bullseye/netboot/pxelinux.0
    
    # boot config for UEFI systems
    # dhcp-match=set:efi-x86_64,option:client-arch,7
    # dhcp-match=set:efi-x86_64,option:client-arch,9
    # dhcp-boot=tag:efi-x86_64,ipxe/ipxe.efi
    
    # dhcp-match=set:ipxe,175
    # dhcp-boot=tag:ipxe,http://192.168.3.1/boot2.php
    # dhcp-userclass=set:ENH,iPXE
    # dhcp-boot=tag:ENH,default.ipxe
  3. /srv/tftp/os-images/bullseye/netboot/pxelinux.cfg/01-08-00-27-49-b4-6c # 以B机的网卡mac地址为名创建一个pxelinux的启动配置文件内容。大概是将debian的自动应答文件preseed.cfg作为启动参数加载

    DEFAULT linux
     SAY Now booting the kernel from SYSLINUX...
    LABEL linux
     KERNEL debian-installer/amd64/linux
     APPEND auto=true hostname=auto2 domain=local preseed/url=tftp://192.168.3.1/os-images/bullseye/preseed.cfg initrd=debian-installer/amd64/initrd.gz
  4. os-images/bullseye/preseed.cfg # 文件内容。目的是自动回答安装过程中的问题,无人值守就可以完成系统安装

    #### Contents of the preconfiguration file (for bullseye). refer: https://www.debian.org/releases/bullseye/example-preseed.txt
    d-i debian-installer/locale string en_US
    d-i keyboard-configuration/xkb-keymap select us
    d-i netcfg/choose_interface select auto
    d-i netcfg/get_hostname string unassigned-hostname
    d-i netcfg/get_domain string unassigned-domain
    d-i netcfg/hostname string auto1
    d-i netcfg/wireless_wep string
    d-i mirror/country string manual
    d-i mirror/http/hostname string ftp.cn.debian.org
    d-i mirror/http/directory string /debian
    d-i mirror/http/proxy string
    d-i passwd/root-password password r00tme
    d-i passwd/root-password-again password r00tme
    d-i passwd/user-fullname string Debian User
    d-i passwd/username string debian
    d-i passwd/user-password password insecure
    d-i passwd/user-password-again password insecure
    d-i clock-setup/utc boolean true
    d-i time/zone string US/Eastern
    d-i clock-setup/ntp boolean true
    d-i partman-auto/method string lvm
    d-i partman-auto-lvm/guided_size string max
    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 atomic
    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-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
    d-i apt-setup/cdrom/set-first boolean false
    tasksel tasksel/first multiselect standard, ssh-server
    popularity-contest popularity-contest/participate boolean true
    d-i grub-installer/only_debian boolean true
    d-i grub-installer/with_other_os boolean true
    d-i grub-installer/bootdev  string default
    d-i finish-install/reboot_in_progress note
  5. /etc/nftables.conf # 如果A机要为B机充当网关,转发上网,还需要配置一下。发现一个现象是B机有时上不了外网,要重启一下nftables服务

    #!/usr/sbin/nft -f
    
    flush ruleset
    
    table inet filter {
        chain input {
                type filter hook input priority 0;
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
    }
    
    #######
    table inet nat {
        chain input {
                type nat hook input priority 0; policy accept;
                ip protocol icmp accept
        }
    
        chain prerouting {
                type nat hook prerouting priority 0; policy accept;
        }
    
        chain postrouting {
                type nat hook postrouting priority 100; policy accept;
    #               ip saddr 192.168.3.0/24 oifname "enp0s3" masquerade
                oifname "enp0s3" masquerade
        }
    
        chain output {
                type nat hook output priority 0; policy accept;
        }
    }

参考:

在 Oracle Cloud 甲骨文云里安装 Debian bookworm

步骤:

  1. 虚拟机选择的是Ubuntu 20系统
  2. 在Ubuntu系统里安装 refind
  3. 下载debian的网络安装包,保存到/boot/efi/debian-installer/amd64/linux 或 initrd.gz
  4. 如需要自动或启用远程安装,请修改 initrd.gz 文件内容
  5. 修改 /boot/efi/EFI/refind/refind.cfg 的配置内容,启用 textonly 且 增加debian的安装项,如:
    menuentry Debian-Installer {
    loader /debian-installer/amd64/linux
    initrd /debian-installer/amd64/initrd.gz
    options "auto=true priority=critical mirror/http/hostname=deb.debian.org"
    }
  6. 保存后,重启机子,在甲骨文机子的控制台,可以看到rEFInd的菜单,开始安装
  7. 如果需要在甲骨文机子的控制台看到安装过程,请增加如 DEBIAN_FRONTEND=text console=tty1 console=ttyS0 的参数,因为是需要在串口设备中看到输出内容

参考:

在 debian installer 里用 qemu kvm 测试硬盘上的系统运行

场景:远程服务器上的系统不能成功联网或启动,且没有ipmi可远程诊断。
尝试:如果主机商有提供急救系统,可用qemu来启动硬盘上的系统,在vnc里查看系统的运行情况。

例子:

  1. sysresccd 5.3.2的急救系统,无kvm模块。使用了amd64位的内核,且程序是32位的,无法方便地编译出kvm模块使用
  2. 可先安装kexec-tools,然后下载debian installer的网络安装文件,修改initrd,增加自动应答文件。通过kexec来启动debian远程安装,如 kexec --command-line="auto=true priority=critical mirror/http/hostname=deb.debian.org" --initrd=initrd.gz linux
  3. 通过ssh远程连接到debian installer,下载debian live中的 /lib/modules/5.10.0-8-amd64/kernel/arch/x86/kvm 和 /lib/modules/5.10.0-8-amd64/kernel/virt 到相应的目录
  4. depmod -a # 重新扫描模块的依赖
  5. modprobe kvm_intel # 启用kvm模块
  6. wget -qO- /tmp http://www.danpros.com/content/files/vkvm.tar.gz | tar xvz -C /tmp # 下载别人打包好的qemu文件
  7. /tmp/qemu-system-x86_64 -net nic -net user,hostfwd=tcp::3389-:3389 -m 2048M -localtime -enable-kvm -cpu host,+nx -M pc -smp 2 -vga std -usbdevice tablet -k en-us -hda /dev/sda -boot once=c -vnc :1 # 尝试启动硬盘上的Windows系统。当然,这里如端口转发是不生效的

参考:

BusyBox v1.30.1 (Debian 1:1.30.1-7) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/tmp # ls -l /dev/sd*
brw-------    1 root     root        8,   0 Aug 28 08:26 /dev/sda
brw-------    1 root     root        8,   1 Aug 28 08:26 /dev/sda1
brw-------    1 root     root        8,   2 Aug 28 08:26 /dev/sda2
brw-------    1 root     root        8,   3 Aug 28 08:26 /dev/sda3
brw-------    1 root     root        8,   4 Aug 28 08:26 /dev/sda4
/tmp # /tmp/qemu-system-x86_64 -net nic -net user,hostfwd=tcp::3389-:22 -m 2048M -localtime -enable-kvm -cpu host,+nx -M pc -smp 2 -vga std -usbdev
ice tablet -k en-us -hda /dev/sda -boot once=c -vnc :1

hyper-v - uefi - gpt - 虚拟机手动安装debian 10系统 - hyonix

问题:hyonix主机商仅提供Windows系统(UEFI + GPT),不可自定义镜像启动,无急救系统。如果想用Linux系统,怎么办呢?

步骤:

  1. 在当前Windows系统里,运行 msinfo32 ,先确认当前虚拟机的启动方式,如果是 UEFI 和 且启用了 Secure Boot
  2. 向主机商发工单,请求为虚拟机关闭 Secure Boot
  3. 在Windows系统里,安装 rEFInd
  4. 重启Windows,在虚拟机控制台里查看机子启动的变化,是否会出现 rEFInd 的界面
  5. 如果 rEFInd 启动有效,回到Windows系统里,下载 debian 10 的网络安装包
  6. 将 netboot.tar.gz 解压到的文件,放到ESP分区的相应位置里
  7. 重启机子,在 rEFInd 的菜单里选择相应的启动项,如 bootnetx64.efi
  8. 如果接着出现grub的提示符,那再加载相应的 linux 和 initrd 文件,启动
  9. 如果顺利,就可以看到debian的安装界面了

参考:

proxmox - debian 10 - 重启系统后无法连接 - auto - allow-hotplug

问题:在debian 10系统上安装proxmox,在创建linux bridge网络后重启机子,机子失联。

尝试:在proxmox管理界面创建linux bridge后,会自动更改/etc/network/interface的配置内容,如删除原网卡的allow-hotplug。如果这时没有将相应的网卡设置为自动启动autostart,那么重启机子后,机子会断网。

解决:将相应的网卡设置为自动启动(autostart)。

-# The loopback network interface
 auto lo
 iface lo inet loopback
 
-# The primary network interface
-allow-hotplug eno1
 iface eno1 inet static

proxmox-network-1.png

参考: