树莓派家用服务器
设备:raspberry pi 4b
os: Ubuntu Server 20.04.2 LTS 32-bit

检查可用的软件包更新
sudo apt update
安装可用的软件包更新
sudo apt upgrade
query ip
sudo apt install net-tools
ifconfig

nmap 网络嗅探器
sudo apt install nmap
扫描局域网主机发现
sudo nmap -sP 192.168.45.0/24

打印所有服务状态
sudo service --status-all

查看整个系统磁盘使用情况 df -h
列出所有可用block设备的信息 lsblk
打印已安装包列表 dpkg -l

配置静态IP地址
sudo nano /etc/netplan/50-cloud-init.yaml
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
sudo netplan apply
实现通过网络,为无硬盘客户机安装系统到服务器的iSCSI目标中并启动
背景
准备
服务器
客户端
任务
搭建DHCP服务
DHCP(Dynamic Host Configuration Protocol 动态主机配置协议),是一个用于IP网络的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:
- 用于局域网或网络服务供应商动态分配IP地址给用户
- 用于局域网管理员对所有电脑作中央管理,基于UDP的67和68端口进行通信
安装DHCP服务器
sudo apt install isc-dhcp-server

配置DHCP服务器
sudo nano /etc/dhcp/dhcpd.conf
# 编辑配置文件
option client-architecture code 93 = unsigned integer 16;
subnet 192.168.45.0 netmask 255.255.255.0 {
range 192.168.45.240 192.168.45.250;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.45.255;
option routers 192.168.45.231;
next-server 192.168.45.231;
if exists user-class and ( option user-class = "iPXE" ) {
filename "http://192.168.45.231/nbp/boot.ipxe";
}
elsif option client-architecture = 00:00 {
filename "ipxe.pxe";
}
else {
filename "ipxe.efi";
}
}
# 编辑缺省配置文件
sudo nano /etc/default/isc-dhcp-server
# 验证配置文件
dhcpd -cf /etc/dhcp/dhcpd.conf

重启DHCP服务器
sudo service isc-dhcp-server restart
搭建TFTP服务
TFTP(Trivial File Transfer Protocol, 简单文件传输协议),是一种于1981年在RFC783中定义的简化的文件传输协议(FTP)。
TFTP常被用于引导计算机,例如没有大容量存储器的路由器。
现在它仍然被用于在一个网络上主机之间传输小文件,例如从一台网络主机或服务器引导一个远程X Window System终端或其他的瘦客户端。
基于UDP的69端口进行通信。
安装TFTP服务器
sudo apt install tftpd-hpa

存放所需文件进TFTP目录
将iPXE编译完成后得到的两个可执行文件,转存到TFTP目录下
sudo mv /ipxe/src/bin/ipxe.pxe /srv/tftp/
sudo mv ipxe/src/bin-x86_64-efi/ipxe.efi /srv/tftp/

搭建SMB服务
SMB(Server Message Block,服务器消息块),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
它也提供经认证的进程间通信机能。它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务。
基于TCP的445端口进行通信。
安装SMB服务器
sudo apt install samba -y

配置SMB服务器
sudo mkdir -p /srv/samba/win_installations
sudo chown nobody:nogroup /srv/samba/win_installations
sudo chmod 0777 /srv/samba/win_installations
# 编辑配置文件
sudo vi /etc/samba/smb.conf
[share]
comment = My Public Storage
path = /Samba
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
# 允许匿名访问 guest ok = yes
valid users = yang
# 为访问添加用户密码
sudo smbpasswd -a yang
重启SMB服务器
sudo /etc/init.d/smbd restart
搭建NFS服务
NFS(Network File System,网络文件系统)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由Sun(已被甲骨文公司收购)开发,于1984年发布。
基于TCP的111、2049端口和UDP的111、4046端口进行通信。
安装NFS服务器
sudo apt install nfs-kernel-server -y
配置NFS服务器
sudo mkdir -p /srv/nfs/Windows
sudo chown nobody:nogroup /srv/nfs/Windows
sudo chmod 0777 /srv/nfs/Windows
sudo nano /etc/exports
# 编辑 /etc/exports 文件
/srv/nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
/srv/nfs/windows7 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
# 192.168.1.0/24:允许访问的客户端网段
# rw:可读写
# sync:同步写入
# no_subtree_check:提高访问效率
# no_root_squash:客户端 root 用户可以直接访问(安全环境下可用)
# sudo systemctl restart nfs-kernel-server
sudo exportfs -ra
# 应用配置
sudo systemctl enable nfs-kernel-server

搭建HTTP服务
Nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由俄罗斯程序员伊戈尔·赛索耶夫开发,并于2004年首次公开发布
2011年成立同名公司以提供支持服务。
2019年3月11日,Nginx公司被F5网络公司以6.7亿美元收购。
安装HTTP服务器
sudo apt install nginx -y


cd /etc/nginx/sites-enabled/
## 新建文件设置虚拟主机
重启HTTP服务器
sudo service nginx restart
搭建iSCSI服务
iSCSI(Internet Small Computer System Interface,Internet小型计算机系统接口),又称为IP-SAN,是一种基于Internet及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。
透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存设备。
基于TCP的860、3260端口进行通信。
与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:
- 把原来只用于本机的SCSI协议透过TCP/IP网络发送,使连接距离可作无限的地域延伸;
- 连接的服务器数量无限(原来的SCSI-3的上限是15);
- 由于是服务器架构,因此也可以实现在线扩容以至动态部署;
安装iSCSI服务器
sudo apt install targetcli-fb -y

配置iSCSI服务器
sudo mkdir -p /iscsi_disks
sudo dd if=/dev/zero of=/iscsi_disks/win10_disk.img bs=1M count=30720
# 创建一个 30GB的文件用于后端存储,方便管理,容易删除和扩容
sudo targetcli
# 列出当前目录树
ls
o- / ................................................................................ [...]
o- backstores ..........# iscsi后端支持的存储类型 #................................. [...]
| o- block .............# 块设备,磁盘驱动器、磁盘分区、逻辑卷等 #.........[Storage Objects: 0]
| o- fileio ............# 指定大小的文件 #.............................. [Storage Objects: 0]
| o- pscsi .............# 物理SCSI设备 #............................... [Storage Objects: 0]
| o- ramdisk ...........# 内存盘,重启失效 #............................ [Storage Objects: 0]
o- iscsi .................................................... [mutual disc auth, Targets: 0]
o- loopback ................................................................ [Targets: 0]
o- vhost ................................................................... [Targets: 0]
# 导航到backstores/fileio目录创建存储对象(Storage Object)
cd /backstores/fileio
/backstores/fileio create win10_disk /iscsi_disks/win10_disk.img 30G
# /iscsi_disks/win10_disk.img exists, using its size (32212254720 bytes) instead
# Created fileio win10_disk with size 32212254720
# 导航到iscsi目录创建目标(Target)
cd iscsi
/iscsi create
# Created target iqn.2003-01.org.linux-iscsi.ubuntu.aarch64:sn.733eacf6c06b.
# Created TPG 1.
# Global pref auto_add_default_portal=true
# Created default portal listening on all IPs (0.0.0.0), port 3260.
# 导航到target/tpg1/luns目录创建逻辑单元号
cd /iscsi/iqn.2003-01.org.linux-iscsi.ubuntu.aarch64:sn.733eacf6c06b/tpg1/luns
create /backstores/fileio/win10_disk
# Created LUN 0.
# 导航到target/tpg1/acls目录创建允许访问客户
cd /iscsi/iqn.2003-01.org.linux-iscsi.ubuntu.aarch64:sn.733eacf6c06b/tpg1/acls
create iqn.1991-05.com.microsoft:192.168.1.200
# Created Node ACL for iqn.1991-05.com.microsoft:desktop-g701sk8
# Created mapped LUN 0.
# Global pref auto_add_default_portal=true
# Created default portal listening on all IPs (0.0.0.0), port 3260.
# 导航到root目录保存设置
cd /
saveconfig
# Configuration saved to /etc/rtslib-fb-target/saveconfig.json
# 退出
exit
iPXE
链式加载 iPXE
If you have a large number of machines which already have a PXE implementation (such as network cards with an existing Intel PXE ROM), then you may want to avoid having to reflash each machine's network card individually. You can achieve this by using chainloading.
To enable chainloading, you need to place a copy of iPXE on your TFTP server. Your machines will download this copy of iPXE from the TFTP server each time that they boot.
编译iPXE
# 安装编译所需的工具
sudo apt install git gcc make liblzma-dev
# 下载iPXE的源码
git clone https://github.com/ipxe/ipxe.git
# 进入源码目录
cd ipxe/src
# 修改源码开启额外功能/ipxe/src/config/general.h
# 按平台所需(https://ipxe.org/appnote/buildtargets)进行编译
make bin/ipxe.pxe
make bin-x86_64-efi/ipxe.efi
# 如需编译时内嵌脚本
# make bin-x86_64-efi/ipxe.efi EMBED=menu.ipxe

wimboot
wimboot 专门用来加载和引导 .wim 文件(Windows 安装盘和 WinPE 里的核心文件就是这种格式)。
能够不依赖本地硬盘或光盘,而是通过网络直接引导进入 Windows PE(预安装环境)用于部署或恢复系统。
下载
cd /var/www/html/
# 新建目录
(Network Bootstrap Program)
sudo mkdir -p nbp
sudu wget https://github.com/ipxe/wimboot/releases/latest/download/wimboot
WinPE
Windows 评估和部署工具包 (Windows ADK) 及 Windows PE 附加组件提供对 Windows 映像进行大规模部署定制所需的工具,同时还支持测试系统、其附加组件及其运行的应用程序的质量和性能。
Windows ADK 包括:
- Windows 评估工具包和 Windows 性能工具包,用于评估系统或组件的质量和性能。
- 兼容性管理器和标准用户分析器工具。
- 部署工具,例如 Windows PE、Sysprep 和其他可用于自定义和部署 Windows 11 映像的工具。
- Windows 预安装环境 (Windows PE) 可与评估和部署工具包 (ADK) 分开下载。
下载
要将 Windows PE 添加到 ADK 安装中,请在安装 ADK 后下载并安装 Windows PE 加载项。
下载最新的适用于 Windows 10 版本 2004 的 Windows ADK
下载最新的适用于 ADK 版本 2004 的 Windows PE 加载项
自定义Windows PE
以管理员身份运行“部署和映像工具环境”
copype amd64 C:\WinPE_Win10_2004_amd64
# 装载 Windows PE 启动映像
Dism /Mount-Image /ImageFile:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\en-us\winpe.wim" /index:1 /MountDir:"C:\Mount"
# 获取映像已装载的驱动,并输出到文件
Dism /Image:C:\Mount /Get-Drivers /all > C:\DriversList.txt
# 获取映像已装载的功能包
Dism /Get-Packages /Image:"C:\Mount"
# 卸载映像并提交更改
Dism /unmount-image /mountdir:C:\Mount /commit
# 获取
DISM /image:C:\Mount /Get-Capabilities
wpeinit
# 配置硬盘
diskpart
list disk
select disk 0
list partition
select partition 1
assign letter=Z
exit
bcdedit /store Z:\EFI\Microsoft\Boot\BCD /enum /all
bcdedit /store Z:\EFI\Microsoft\Boot\BCD /set {default} sos on
bcdedit /store Z:\EFI\Microsoft\Boot\BCD /set {default} bootlog Yes
bcdedit /store Z:\EFI\Microsoft\Boot\BCD /set {default} recoveryenabled No
net view 192.168.1.119
net use z: \\192.168.1.119\share
z:\sources\setup.exe
# 离线修改注册表
reg load HKLM\OFFLINE_SYSTEM E:\Windows\System32\config\SYSTEM
reg add "HKLM\OFFLINE_SYSTEM\ControlSet001\Control\Session Manager\Memory Management" /v PagingFiles /t REG_MULTI_SZ /d " " /f
reg unload HKLM\OFFLINE_SYSTEM

浙公网安备 33010602011771号