这是坚持技术写作计划(含翻译)的第7篇,定个小目标999,每周最少2篇。
本文主要讲解通过CentOS7.6 Minimal + Cobbler 自动化安装CentOS,Ubuntu,Windows 10 和 Windows Server 2019(应该算是全网第一篇Cobbler+Win10/WinServer2019了)。
请注意,一般安装windows是用或者WDS居多,毕竟是巨硬自己家的,而且MDT还支持分布式镜像传输(主要是巨硬家的OS,动辄超过4G,万兆网卡也会卡啊)。本文不涉及到MDT或者WDS相关操作,感兴趣的可自行百度或者msdn。
准备
- (分别下载 和 )
- 下载
- 下载
注意,adk的两个都要下载,这俩都是引导包,真正的安装程序会由这俩软件进行下载。其中WinPE需要用到5G左右的磁盘空间,简直不能忍受。。。
msdn i tell u 堪称良心站,是windows装机神站啊,不过,没有直达页面挺不爽。为了防止下错,特意截图。安装ADK和WinPE
我已经装过,且忘记截图了,这是事后补图,只需要勾选必须的就行
安装完后,以管理员身份打开部署和映像工具环境
定制Win 10 PE
copype amd64 C:\winpeDism /mount-image /imagefile:C:\winpe\media\sources\boot.wim /index:1 /mountdir:C:\winpe\mountecho net use z: \\192.168.0.253\share >> C:\winpe\mount\Windows\System32\startnet.cmdecho z:\win\setup.exe /unattend:z:\win\win10_x64_bios_auto.xml >> C:\winpe\mount\Windows\System32\startnet.cmdDism /unmount-image /mountdir:C:\winpe\mount /commitMakeWinPEMedia /ISO C:\winpe C:\winpe\winpe_win10_amd64.iso复制代码
- 本地生成winpe文件目录
- dism 挂载 winpe的启动文件到winpe的mount目录
- 将启动命令硬编码写死到winpe的startnet.cmd文件里
- 无人值守安装
- 卸载winpe的挂载(一定要执行,否则直接强制删除文件夹会出一些稀奇古怪的问题)
- 制作win10镜像,名为 winpe_win10_amd64.iso
第三步的硬编码是无奈之举,因为要想挂载共享文件夹,必须要知道smb主机,但是这个参数又很难传递进来。
如果是U盘启动,可以写死U盘路径,大不了插上U盘后,手动改卷标(当然因为U盘挂载顺序不一致,可以通过for循环A-Z盘,挨个盘访问某个文件名,如果存在,即认为此盘是自己U盘,设置环境变量)。而网上说的,startnet.cmd调用另外一个bat,多是基于这个原理。而如果PXE要达到跟上述要求,动态设置smb主机,要么写死域名,然后劫持或者配置域名,加上bat文件,在winpe启动时,通过startnet.cmd下载,并执行。要么找办法,看看能不能在启动时,传入参数(目前我还没找到),当然还可以用MDT方案,看着比PXE+无人应答文件简单很多。
配置Cobbler Server
导入Cobbler
使用WinScp 等工具,将 winpe_win10_amd64.iso 上传到 Cobbler 服务器上
[root@localhost ~]# cobbler distro add --name=windows_10_x64 --kernel=/var/lib/tftpboot/memdisk --initrd=/root/winpe_win10_amd64.iso --kopts="raw iso"[root@localhost ~]# touch /var/lib/cobbler/kickstarts/winpe.xml[root@localhost ~]# cobbler profile add --name=windows_10_x64 --distro=windows_10_x64 --kickstart=/var/lib/cobbler/kickstarts/winpe.xml复制代码
创建自动应答文件
直接从 通过简单配置后,下载即可(只支持简单操作,比如,装系统,格式化磁盘,设置密码等)。当然也可以使用 【Windows系统映像管理器】,不过挺难用的,具体用法可以参考 。也可以通过MDT简化操作。
但是如果使用直接生成的,有点问题,即使页面设置了安装语言,但是仍旧需要手动选择,经过多方研究,发现
主要卡在UILanguage和Inputlocale上,全写zh-CN无效。复制代码 en-US 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7} zh-CN zh-CN zh-CN zh-CN
另外就是安装密钥,统一替换为 VK7JG-NPHTM-C97JM-9MPGT-3V66T
下面是我的应答文件,仅做参考。
en-US 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7} zh-CN zh-CN zh-CN zh-CN en-US 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7} zh-CN zh-CN zh-CN zh-CN 1 Primary 100 true 2 Primary true NTFS 1 1 0x27 true NTFS C 2 2 0 true 0 2 false true AnJia AnJia VK7JG-NPHTM-C97JM-9MPGT-3V66T 1 Primary 100 true 2 Primary true NTFS 1 1 0x27 true NTFS C 2 2 0 true 0 2 false true AnJia AnJia VK7JG-NPHTM-C97JM-9MPGT-3V66T false false 1 1 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7} zh-CN zh-CN zh-CN zh-CN 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7} zh-CN zh-CN zh-CN zh-CN true true 0 0 AnJia-PC VK7JG-NPHTM-C97JM-9MPGT-3V66T AnJia-PC VK7JG-NPHTM-C97JM-9MPGT-3V66T true</PlainText> </Password> <Enabled>true</Enabled> <Username>AnJia</Username> </AutoLogon> <OOBE> <HideEULAPage>true</HideEULAPage> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <NetworkLocation>Work</NetworkLocation> <SkipUserOOBE>true</SkipUserOOBE> <SkipMachineOOBE>true</SkipMachineOOBE> <ProtectYourPC>1</ProtectYourPC> </OOBE> <UserAccounts> <LocalAccounts> <LocalAccount wcm:action="add"> <Password> <Value></Value> <PlainText>true</PlainText> </Password> <Description>AnJia</Description> <DisplayName>AnJia</DisplayName> <Group>Administrators</Group> <Name>AnJia</Name> </LocalAccount> </LocalAccounts> </UserAccounts> <RegisteredOrganization>AnJia</RegisteredOrganization> <RegisteredOwner>AnJia</RegisteredOwner> <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <Description>Control Panel View</Description> <Order>1</Order> <CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v StartupPage /t REG_DWORD /d 1 /f</CommandLine> <RequiresUserInput>true</RequiresUserInput> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>2</Order> <Description>Control Panel Icon Size</Description> <RequiresUserInput>false</RequiresUserInput> <CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v AllItemsIconView /t REG_DWORD /d 0 /f</CommandLine> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>3</Order> <RequiresUserInput>false</RequiresUserInput> <CommandLine>cmd /C wmic useraccount where name="AnJia" set PasswordExpires=false</CommandLine> <Description>Password Never Expires</Description> </SynchronousCommand> </FirstLogonCommands> <TimeZone>China Standard Time</TimeZone> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <AutoLogon> <Password> <Value></Value> <PlainText>true</PlainText> </Password> <Enabled>true</Enabled> <Username>AnJia</Username> </AutoLogon> <OOBE> <HideEULAPage>true</HideEULAPage> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <NetworkLocation>Work</NetworkLocation> <SkipUserOOBE>true</SkipUserOOBE> <SkipMachineOOBE>true</SkipMachineOOBE> <ProtectYourPC>1</ProtectYourPC> </OOBE> <UserAccounts> <LocalAccounts> <LocalAccount wcm:action="add"> <Password> <Value></Value> <PlainText>true</PlainText> </Password> <Description>AnJia</Description> <DisplayName>AnJia</DisplayName> <Group>Administrators</Group> <Name>AnJia</Name> </LocalAccount> </LocalAccounts> </UserAccounts> <RegisteredOrganization>AnJia</RegisteredOrganization> <RegisteredOwner>AnJia</RegisteredOwner> <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <Description>Control Panel View</Description> <Order>1</Order> <CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v StartupPage /t REG_DWORD /d 1 /f</CommandLine> <RequiresUserInput>true</RequiresUserInput> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>2</Order> <Description>Control Panel Icon Size</Description> <RequiresUserInput>false</RequiresUserInput> <CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v AllItemsIconView /t REG_DWORD /d 0 /f</CommandLine> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>3</Order> <RequiresUserInput>false</RequiresUserInput> <CommandLine>cmd /C wmic useraccount where name="AnJia" set PasswordExpires=false</CommandLine> <Description>Password Never Expires</Description> </SynchronousCommand> </FirstLogonCommands> <TimeZone>China Standard Time</TimeZone> </component> </settings></unattend>复制代码
配置samba
在Cobbler上执行
安装samba
[root@localhost ~]# yum install samba -y复制代码
修改smb config
[root@localhost ~]# vi /etc/samba/smb.conf # /etc/samba/smb.conf[global]log file = /var/log/samba/log.%mmax log size = 5000security = userguest account = nobodymap to guest = Bad Userload printers = yescups options = raw [share]comment = share directory目录path = /smb/directory mask = 0755create mask = 0755guest ok=yeswritable=yes复制代码
启动smb服务
[root@localhost ~]# service smb start[root@localhost ~]# systemctl enable smb复制代码
挂载win10系统
通过winscp等软件将 cn_windows_10_business_edition_version_1809_updated_sept_2018_x64_dvd_84ac403f.iso 上传到cobbler服务器上,并将创建的应答文件,上传到cobbler /smb/win/win10_x64_bios_auto.xml
[root@localhost ~]# mkdir -p /smb/win[root@localhost ~]# mount -o loop,ro /tmp/cn_windows_10_business_edition_version_1809_updated_sept_2018_x64_dvd_84ac403f.iso /mnt/[root@localhost ~]# cp -r /mnt/* /smb/win[root@localhost ~]# umount /mnt/复制代码
自动化安装Windows10
从vmware创建一台内存4G,cpu2核,磁盘60G的空盘,win10虚拟机,然后开机。记得选BIOS,别选UEFI。
至于如何激活,参考
Windows Server 2019
因为2019用的也是1809版本的,所以制作步骤一样的,在此不再赘述。
参考资料
招聘小广告
山东济南的小伙伴欢迎投简历啊 , 一起搞事情。
长期招聘,Java程序员,大数据工程师,运维工程师,前端工程师。