們都知道Windows 10包含家庭版、專業(yè)版、企業(yè)版和教育版等,而從網(wǎng)上下載的安裝鏡像也大都只包含其中的一兩個版本。于是問題就來了:
你的電腦是家庭版,為了實現(xiàn)某個功能必須升級到專業(yè)版;公司電腦是企業(yè)版,但卻需要教育版里的特殊功能。此時你會咋整?重新安裝嗎?但你知道你所需的組建包含在哪個系統(tǒng)版本的鏡像里嗎?
最近很多童鞋都在問相關問題,所以CFan今天就教大家如何制作一個保護Windows全版本的安裝文件,并將陸續(xù)更新的補丁也一股腦地塞進去的通用安裝盤。
從家庭版入手
由于在眾多Windows版本中家庭版是最低版本,也是最干凈的,所以建議大家以家庭版系統(tǒng)為藍本,并在它的基礎上升級到其他版本即可(下載地址大家就自己搜索吧)。
為了減少集成補丁的工作量,建議童鞋們要下載最新版本哦(目前Windows 10是version_1607)。版本升級借助系統(tǒng)自帶的DISM命令即可完成,為了方便操作這里建議使用DISM++來協(xié)助集成補丁等操作。
實戰(zhàn)操作
首先,在資源管理器中打開下載到的家庭版(版本名稱對應為“windows_10_iot_core”)安裝文件,右擊選擇“打開方式→資源管理器”,將其加載到虛擬光驅(qū)假設盤符為L:。
啟動Dism++后點擊“文件→加載鏡像”,在彈出的窗口鏡像文件選擇“L:\sources\install.wim”,目標鏡像則選擇其中的“家庭版”,將其加載到d:\win10目錄中(需要預先在D:\新建該目錄),點擊“確定“加載”。
加載指定的家庭版鏡像
成功加載鏡像后在DISM++主窗口點擊“打開對話”,切換到“APPX管理”,這里可以根據(jù)自己的實際需要對Windows 10內(nèi)置的應用進行刪除,比如“microsoft.bing.weather”對應“天氣”應用,如果不要該應用,勾選后點擊“刪除”即可進行卸載。
卸載內(nèi)置應用
切換到“Windows功能”,在右側功能列表找到“.NET Framework 3.5(包括.net 2.0和3.0)”選項將其勾選,在右側本地源定位到“L:\souces\sxs”,即加載的虛擬光驅(qū),默認安裝文件已經(jīng)內(nèi)置.NET Framework 3.5組件,只是沒有在Windows 10中默認安裝。
如果你使用的是精簡版安裝文件,請自行到http://www.itellyou.cn/下載下載.NET Framework3.5組件,并在此定位到下載目錄。點擊“應用”,將很多軟件需要用到的.NET Framework 3.5組件集成到安裝系統(tǒng)中。
集成.NET Framework 3.5組件
切換到“更新管理”,點擊“掃描”,DISM++會自動聯(lián)機到微軟升級服務器進行掃描,勾選掃描到的所有補丁文件進行更新即可,這樣可以在安裝文件中集成最新的系統(tǒng)補丁文件。
掃描并下載更新文件
如果在線下載的速度慢或者無法完成在線安裝,還可以自行到https://www.sysgeek.cn/windows-10-hotfix/查看補丁文件,根據(jù)自己版本點擊即可離線下載,下載到的是類似“windows10.0-kb3176936-x64_795777f8a7f8cd1a4c96ee030848f9f888490555.msu”這樣的.msu離線補丁文件。只要在上述窗口點擊“添加”,將離線下載的補丁全部集成到安裝文件即可。
離線下載補丁
這樣通過上述的操作,我們就在家庭版映像中卸載不必要的內(nèi)置應用、集成.NET Framework 3.5組件和最新的補丁文件。在Dism++窗口選中加載的鏡像,點擊“文件→另存為鏡像”,然后將其保存為“core.wim”并卸載原來加載的鏡像文件。
同上,在Dism++中再將上述處理過的“core.wim”加載到“D:\win10”,啟動命令提示符輸入“DISM /Image:d:\win10 /Get-TargetEditions”,查看當前鏡像可以升級到什么版本。
查看鏡像可以升級版本
可以看到當前家庭版的鏡像可以升級到專業(yè)版、企業(yè)版和教育版,繼續(xù)輸入“DISM /Image:d:\win10 /Set-Edition:Professional”,這個命令會將當前版本升級到專業(yè)版。
升級版本
繼續(xù)輸入“DISM /Commit-Image /MountDir:d:\win10 /Append”,將升級的專業(yè)版映像添加到“core.wim”鏡像文件中,這樣在這個鏡像文件中就包含“家庭版”和“專業(yè)版”兩個安裝映像文件。
操作同上,繼續(xù)輸入DISM /Image:d:\win10 /Set-Edition:Enterprise升級到企業(yè)版、輸入DISM/Image:d:\win10 /Set-Edition:Education升級到教育版。這樣加載的鏡像文件中就包含Windows10所有版本。
繼續(xù)輸入“DISM /Unmount-Image /MountDir:d:\win10 /Discard”提交保存。因為后續(xù)添加的映像文件沒有添加名稱與標志,同上在Dism++中再次加載“core.wim”,然后按照各自版本提示進行修改即可。
修改映像
最后將“core.wim”更改為“install.wim”,將其替換原來安裝文件中的同名文件,這樣以后需要重裝系統(tǒng)的時候,只要按當前電腦版本選擇對應的映像文件進行安裝即可,安裝好的系統(tǒng)就自動集成.NET Framework 3.5組件和最新的補丁文件,這樣使用起來是不是方便多了呢?
系統(tǒng)服務是一種應用程序類型,它在后臺運行。服務應用程序通常可以在本地和通過網(wǎng)絡為用戶提供一些功能。有些軟件無需安裝解壓就能使用,或者在安裝時未向系統(tǒng)注冊服務。如果我們需要開機啟動,需要手動創(chuàng)建服務。
相對于在注冊表中創(chuàng)建開機啟動程序,服務具有優(yōu)先級高,權限大,無需賬戶登錄即可啟動的優(yōu)點。
和計劃任務相比,服務可以手動停止,重啟。而計劃任務是周期性作業(yè),只能按設定的規(guī)則執(zhí)行一次或循環(huán)執(zhí)行。
WinSW是一款開源免費,用于創(chuàng)建Windows服務的工具,項目地址:https://github.com/winsw/winsw
Win10選擇WinSW.NET461,低版本系統(tǒng)如Win7選擇NET4,XP選擇NET2。如果本機沒有.NET框架的可以下載帶.NET的版本。sample-allOptions.xml是完整示例配置文件,一般我們下載sample-minimal.xml最小化示例配置文件。
需要注意的是,每一個啟動服務對應一個winsw程序,制作成服務后winsw.exe和相應配置文件不可刪除。
示例:
在Win10上配置frp服務端和客戶端開機啟動。新建frp文件夾,復制2個WinSW.NET461.exe副本,命名為start_frps.exe和start_frpc.exe,復制2個sample-minimal.xml副本,命名為start_frps.xml和start_frpc.xml。(exe程序和xml配置文件名要一至)。
<service>
<id>frps</id>
<name>Frp Server</name>
<description>My Frp Server</description>
<executable>C:\Tools\Frp\frps.exe</executable>
<arguments>-c "C:\Tools\Frp\config\frps.ini"</arguments>
</service>
<service>
<id>frpc</id>
<name>Frp Client</name>
<description>My Frp Client</description>
<executable>C:\Tools\Frp\frpc.exe</executable>
<arguments>-c "C:\Tools\Frp\config\frpc.ini"</arguments>
</service>
配置說明:
在開始菜單點右鍵,用管理員身份打開PowerShell,定位到frp目錄。
執(zhí)行:
start_frps.exe install
start_frpc.exe install
打開services.msc,可以看到服務已安裝成功。
可以設為自動啟動。
如果需要刪除服務,在frp目錄中執(zhí)行:
start_frps.exe uninstall
start_frpc.exe uninstall
如果僅僅只需要開機啟動,直接把執(zhí)行代碼寫在 /etc/rc.local 中即可。有些發(fā)行版不存在該文件,手動建立,并設為可執(zhí)行權限即可。
rc.local 文件:
#!/bin/bash
// ...執(zhí)行代碼
文件權限設為可執(zhí)行:chmod 755 /etc/rc.local
言歸正傳,Linux創(chuàng)建服務如下:
在 /etc/init.d 中創(chuàng)建文件,如:tomcat,并設為可執(zhí)行權限。
文件內(nèi)容:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: engr-z
# Required-Start:
# Required-Stop:
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 3 4 5
# Default-Stop:
# Short-Description:
# Description:
### END INIT INFO
#
export CATALINA_HOME="tomcat目錄"
export CATALINA_BASE="實例目錄instance"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo "start tomcat ..."
$CATALINA_HOME/bin/startup.sh
fi;;
stop)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo "stop tomcat ..."
$CATALINA_HOME/bin/shutdown.sh
fi;;
*)
echo $"Usage: $0 {start|stop}"
exit 1;;
esac
文件### BEGIN INIT INFO和### END INIT INFO之間的聲明是必須的,給出了服務啟動時依賴的服務和運行級別。
執(zhí)行以下命令,讓系統(tǒng)開機加載腳本:
update-rc.d <服務文件名> defaults 99
現(xiàn)在主流Linux發(fā)行版啟動都交給systemctl管理(舊的用chkconfig管理),配置起來簡單很多,不需要對Linux服務啟動原理過多了解。
systemctl腳本存放在:/usr/lib/systemd/,有系統(tǒng)(system)和用戶(user)之分,像需要開機不登陸就能運行的程序,就將程序存在系統(tǒng)服務里,即:/usr/lib/systemd/system 目錄下。
該目錄下的服務有以service結尾的,也有target結尾的。
配置文件一般會分為3部分:[Unit]、[Service]和[Install]
[Unit] # 主要是服務說明
Description=test # 簡單描述服務
After=network.target # 描述服務類別,表示本服務需要在network服務啟動后在啟動
Before=xxx.service # 表示需要在某些服務啟動之前啟動,After和Before字段只涉及啟動順序,不涉及依賴關系。
[Service] # 核心區(qū)域
Type=forking # 表示后臺運行模式。
User=user # 設置服務運行的用戶
Group=user # 設置服務運行的用戶組
KillMode=control-group # 定義systemd如何停止服務
PIDFile=/usr/local/test/test.pid # 存放PID的絕對路徑
Restart=no # 定義服務進程退出后,systemd的重啟方式,默認是不重啟
ExecStart=/usr/local/test/bin/startup.sh # 服務啟動命令,命令需要絕對路徑
PrivateTmp=true # 表示給服務分配獨立的臨時空間
[Install]
WantedBy=multi-user.target # 多用戶
以下是我在Linux下frps啟動服務腳本(frps.service):
[Unit]
Description=frps service
Requires=network.target network-online.target
After=network.target network-online.target
[Service]
Type=simple
PIDFile=/tmp/frps.pid
ExecStart=/opt/frp/frps -c /opt/frp.conf/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl 提供了一組子命令來管理單個的 unit,其命令格式為:
systemctl [command] [unit]
示例:
systemctl daemon-reload # 重載系統(tǒng)服務
systemctl enable *.service # 設置某服務開機啟動
systemctl start *.service # 啟動某服務
systemctl stop *.service # 停止某服務
systemctl reload *.service # 重啟某服務
由于篇幅有限,systemctl更多用法和說明就不寫了。以上幾個命令用于操作系統(tǒng)服務足夠。
除非注明,否則均為"攻城獅·正"原創(chuàng)文章,轉載請注明出處。
本文鏈接:https://engr-z.com/314.html