操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    一、samba 軟件簡(jiǎn)介

    SMB(Server Messages Block,信息服務(wù)塊)是基于NetBIOS(Network Basic Input/Output System)通訊協(xié)議開發(fā)的一種在局域網(wǎng)上共享文件和打印機(jī)的通信協(xié)議,主要用于 Windows 系統(tǒng)與類 Unix 系統(tǒng)之間進(jìn)行數(shù)據(jù)共享服務(wù),由服務(wù)器與客戶端程序構(gòu)成。由于NetBl0S是一種局域網(wǎng)通訊協(xié)議,所以SMB無法跨路由使用(Router/Gateway),但是可以通過設(shè)置“NetBIOS over TCP/IP”使得SMB不但能與局域網(wǎng)絡(luò)主機(jī)分享資源,還能與全世界的電腦分享資源。另外,SMB軟件的作者在申請(qǐng)商標(biāo)時(shí),因?yàn)镾MB沒有實(shí)際意義,所以更名為samba。

    samba程序主要應(yīng)用于以下方面:

    • 文件共享
    • 共享打印機(jī)
    • Samba登陸時(shí)身份驗(yàn)證
    • 可以進(jìn)行Windows的主機(jī)名解析
    • 可共享如CDROM等外圍設(shè)備。

    二、samba 服務(wù)的安裝

    目前在CentOS 6系統(tǒng)中主要是samba 3.x的版本,在RHEL 7或CentOS 7系統(tǒng)中主要是samba 4.x的版本。

    1、samba 程序包說明

    samba 3.x的版本

    • samba #主服務(wù)程序
    • samba-client #linux samba客戶端程序
    • samba-common #主服務(wù)程序與客戶端程序共用文件
    • samba-winbind #Windows域映射服務(wù)程序
    • samba-winbind-clients #Windows域映射客戶端程序

    samba 4.x

    • samba #主服務(wù)程序
    • samba-libs #主服務(wù)程序庫(kù)文件
    • samba-client #linux samba客戶端程序
    • samba-client-libs #linux samba客戶端程序庫(kù)文件
    • samba-common #主服務(wù)程序與客戶端程序共用文件
    • samba-common-libs #主服務(wù)程序與客戶端程序共用庫(kù)文件
    • samba-common-tools #主服務(wù)程序與客戶端程序共用工具文件
    • samba-winbind #Windows域映射服務(wù)程序
    • samba-winbind-clients #Windows域映射客戶端程序
    • samba-winbind-modules #Windows域映射模塊

    2、 安裝 samba 程序

    CentOS6 系統(tǒng)

    yum install -y samba samba-client

    RHEL7或CentOS7系統(tǒng)

    yum install -y samba samba-client samba-winbind samba-winbind-clients

    三、 samba 服務(wù)的啟動(dòng)與端口說明

    samba 服務(wù)是通過以下兩個(gè)守護(hù)進(jìn)程來控制共享的,分別是:

    • smbd:這個(gè)守護(hù)進(jìn)程主要用來管理samba服務(wù)器對(duì)文件、打印資源的共享訪問,利用TCP協(xié)議來傳輸數(shù)據(jù),開放的端口為139和445。
    • nmbd:這個(gè)守護(hù)進(jìn)程主要用來管理samba服務(wù)器工作組、NetBIOS主機(jī)名的解析,主要利用UDP協(xié)議開啟137,138端口來負(fù)責(zé)名稱解析的任務(wù)。

    所以啟動(dòng) samba 服務(wù)需要啟動(dòng)這兩個(gè)守護(hù)進(jìn)程。

    設(shè)置 samba 服務(wù)開機(jī)自啟,并啟動(dòng)服務(wù)。

    CentOS6 系統(tǒng)

    • chkconfig smb on #設(shè)置開機(jī)自啟
    • chkconfig nmb on #設(shè)置開機(jī)自啟
    • chkconfig --list | grep -E 'smb|nmb' #查看自啟狀態(tài)
    • service smb start #啟動(dòng)服務(wù)
    • service nmb start #啟動(dòng)服務(wù)

    RHEL7或CentOS7系統(tǒng)

    • systemctl enable smb.service #設(shè)置開機(jī)自啟
    • systemctl enable nmb.service #設(shè)置開機(jī)自啟
    • systemctl list-unit-files | grep -E 'smb|nmb' #查看自啟狀態(tài)
    • systemctl start smb.service #啟動(dòng)服務(wù)
    • systemctl start nmb.service #啟動(dòng)服務(wù)

    四、與 samba 服務(wù)的相關(guān)文件說明

    1. /etc/samba/smb.conf

    samba服務(wù)的主配置文件,主要用于samba服務(wù)器全局及共享資源的相關(guān)設(shè)置。

    a、 配置文件結(jié)構(gòu)

    #Global Settings全局設(shè)置

    [global] 全局設(shè)置

    設(shè)置項(xiàng)

    #Share Definitions共享定義

    [homes] 用戶家目錄共享設(shè)置

    設(shè)置項(xiàng)

    [myshare] 自定義共享目錄設(shè)置

    設(shè)置項(xiàng)

    [printers]:打印機(jī)共享設(shè)置

    設(shè)置項(xiàng)

    設(shè)置項(xiàng)格式為:name=value

    b、[global] 全局設(shè)置項(xiàng)參數(shù)

    workgroup=MYGROUP

    用于設(shè)定samba服務(wù)器所要加入的工作組名或域名。

    server string=Samba Server Version %v

    用于設(shè)定samba服務(wù)器的注釋,可以不填。%v表示samba的版本。

    netbios name=MYSERVER

    用于設(shè)置samba服務(wù)器的NetBIOS名稱,每臺(tái) samba 服務(wù)器需設(shè)置設(shè)為不同的名稱。netbios name和workgroup名稱需不相同。

    interfaces=lo eth0 192.168.12.2/24 192.168.13.2/24

    用于設(shè)置samba服務(wù)器對(duì)那塊網(wǎng)卡進(jìn)行監(jiān)聽,可以寫網(wǎng)卡名,也可以寫該網(wǎng)卡的IP地址,多個(gè)參數(shù)用空格分開。

    hosts allow=127. 192.168.12. 192.168.13.

    用于設(shè)置允許連接samba服務(wù)器的客戶端,多個(gè)參數(shù)以空格隔開。表示方法見以下說明。

    hosts deny=name1,name2

    用于設(shè)置禁止連接samba服務(wù)器的客戶端,多個(gè)參數(shù)以空格隔開。表示方法見以下說明。

    【表示方法說明】

    用完整IP地址表示:如192.168.1.100

    用IP網(wǎng)段表示:如127. 192.168.0.

    用EXCEPT進(jìn)行排除表示:如 192.168.1.EXCEPT 192.168.1.100

    用機(jī)器名表示:name1,name2

    max connections=0

    用于設(shè)置連接samba服務(wù)器的最大連接數(shù),如果超過這個(gè)連接數(shù),則新的連接請(qǐng)求將被拒絕。0表示不限制。

    deadtime=10

    用于設(shè)置samba服務(wù)器與客戶端在多長(zhǎng)時(shí)間內(nèi)沒有任何打開文件操作就斷開連接的時(shí)間。單位是分鐘,0代表不自動(dòng)切斷任何連接。

    log file=/var/log/samba/log.%m

    用于設(shè)置samba服務(wù)器日志文件的存儲(chǔ)位置以及日志文件名稱,%m表示客戶端的NetBIOS主機(jī)名

    max log size=50

    用于設(shè)置samba服務(wù)器日志文件的最大容量,單位為kB,0代表不限制。

    security=user

    用于設(shè)置用戶訪問samba服務(wù)器的驗(yàn)證方式,共有四種驗(yàn)證方式。

    • share

    用戶訪問samba服務(wù)器不需要提供賬號(hào)和密碼,安全性能較低。

    注意:新版本的samba security=share已經(jīng)不能用了,要換成

    security=user

    map to guest=Bad User

    如果繼續(xù)使用share,就會(huì)導(dǎo)致系統(tǒng)服務(wù)起不來。

    • user

    用戶訪問samba服務(wù)器需要使用賬號(hào)和密碼,而且身份驗(yàn)證由samba服務(wù)器負(fù)責(zé),賬號(hào)和密碼需在samba服務(wù)器中建立。

    • server

    用戶訪問samba服務(wù)器需要使用賬號(hào)和密碼,可指定其他Windows服務(wù)器或另一臺(tái)samba服務(wù)器來作身份驗(yàn)證。如果認(rèn)證失敗,samba服務(wù)器將使用user安全模式作為替代的認(rèn)證方式。

    • domain

    用戶訪問samba服務(wù)器需要使用賬號(hào)和密碼,使用Windows域控制器(PDC)來完成認(rèn)證。

    passdb backend=tdbsam

    passdb backend 就是用戶后臺(tái)的意思。目前有三種后臺(tái):smbpasswd、tdbsam和ldapsam。sam應(yīng)該是security account manager(安全賬戶管理)的簡(jiǎn)寫。

    • smbpasswd

    該方式是使用smb自己的工具smbpasswd來給系統(tǒng)用戶(真實(shí)用戶或者虛擬用戶)設(shè)置一個(gè)samba密碼,客戶端就用這個(gè)密碼來訪問samba的資源。smbpasswd文件默認(rèn)在/etc/samba目錄下,不過有時(shí)候需要手工建立該文件。

    • tdbsam

    該方式則是使用一個(gè)數(shù)據(jù)庫(kù)文件來建立用戶數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)文件名為passdb.tdb,默認(rèn)在/etc/samba目錄下。passdb.tdb用戶數(shù)據(jù)庫(kù)可以使用smbpasswd –a來建立samba用戶,不過要建立的samba用戶必須先是系統(tǒng)用戶。還可以使用pdbedit命令來建立samba用戶。pdbedit命令主要使用方法如下:

    pdbedit –a username #新建samba用戶。

    pdbedit –x username# #刪除samba用戶。

    pdbedit –L #顯示samba用戶列表。

    pdbedit –Lv #顯示samba用戶列表的詳細(xì)信息。

    pdbedit –c “[D]” –u username #暫停該用戶的賬號(hào)。

    pdbedit –c “[]” –u username #恢復(fù)該用戶的賬號(hào)。

    • ldapsam

    該方式則是基于LDAP的賬戶管理方式來驗(yàn)證用戶。首先要建立LDAP服務(wù),然后設(shè)置“passdb backend=ldapsam:ldap://LDAP Server”

    encrypt passwords=yes/no

    用于設(shè)置是否將認(rèn)證密碼加密。因?yàn)楝F(xiàn)在windows操作系統(tǒng)都是使用加密密碼,所以一般要開啟此項(xiàng)。不過配置文件默認(rèn)已開啟。

    password server=<NT-Server-Name>

    用于在security=server時(shí),指定某臺(tái)服務(wù)器作為用戶認(rèn)證服務(wù)器。

    smb passwd file=/etc/samba/smbpasswd

    用于定義samba用戶的密碼文件存放位置及名稱,習(xí)慣設(shè)置為/etc/samba/smbpasswd 。

    username map=/etc/samba/smbusers

    用于定義用戶名映射文件存放位置及名稱,習(xí)慣設(shè)置為/etc/samba/smbusers。此文件用于設(shè)置Windows系統(tǒng)用戶名與Linux系統(tǒng)用戶名的映射關(guān)系,如 root=administrator admin,這樣就可以用administrator或admin這兩個(gè)用戶來代替root用戶登陸samba服務(wù)器,更貼近windows用戶的習(xí)慣。

    guest account=nobody

    用于設(shè)置samba服務(wù)器用guest用戶登錄時(shí),所對(duì)應(yīng)的Linux系統(tǒng)用戶名,默認(rèn)為nobody用戶。

    smb ports=445 139

    用于指定服務(wù)器應(yīng)該偵聽哪些端口以獲取SMB流量,默認(rèn)為139 445端口。

    socket options=TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

    用于設(shè)置服務(wù)器和客戶端之間會(huì)話的Socket選項(xiàng),可以優(yōu)化傳輸速度。

    domain master=yes/no

    用于設(shè)置samba服務(wù)器是否要成為samba網(wǎng)絡(luò)主瀏覽器,samba網(wǎng)絡(luò)主瀏覽器可以管理跨子網(wǎng)域的瀏覽服務(wù)。

    local master=yes/no

    用于指定samba服務(wù)器是否試圖成為本地samba網(wǎng)絡(luò)的主瀏覽器。如果設(shè)為no,則永遠(yuǎn)不會(huì)成為主瀏覽器。但是即使設(shè)置為yes,也不等于該samba服務(wù)器就能成為主瀏覽器,還需要參加選舉。

    preferred master=yes/no

    用于設(shè)置samba服務(wù)器開機(jī)就強(qiáng)迫進(jìn)行主瀏覽器選舉,可以提高samba服務(wù)器成為本地samba網(wǎng)絡(luò)主瀏覽器的機(jī)會(huì)。如果該參數(shù)指定為yes時(shí),最好把domain master也指定為yes。使用該參數(shù)時(shí)要注意:如果在本samba服務(wù)器所在的子網(wǎng)有其他的機(jī)器(不論是windows NT,還是其他samba服務(wù)器)也指定為首要主瀏覽器時(shí),那么這些機(jī)器將會(huì)因?yàn)闋?zhēng)奪主瀏覽器而在網(wǎng)絡(luò)上大發(fā)廣播,影響網(wǎng)絡(luò)性能。

    如果同一個(gè)區(qū)域內(nèi)有多臺(tái)samba服務(wù)器,將上面三個(gè)參數(shù)設(shè)定在一臺(tái)服務(wù)器即可。

    os level=200

    用于設(shè)置samba服務(wù)器的os level值。該參數(shù)決定samba服務(wù)器是否有機(jī)會(huì)成為本地samba網(wǎng)絡(luò)的主瀏覽器。os level從0到255,WINNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果設(shè)置為0,則意味著samba服務(wù)器將失去瀏覽選擇。如果想讓samba服務(wù)器成為PDC,需將它os level值設(shè)置大些。

    domain logons=yes/no

    用于設(shè)置samba服務(wù)器是否要作為本地域控制器。主域控制器和備份域控制器都需要開啟此項(xiàng)。

    wins support=yes/no

    用于設(shè)置samba服務(wù)器是否提供wins服務(wù)。

    wins server=Windows服務(wù)器IP地址

    用于設(shè)置samba 服務(wù)器是否使用別的Windows服務(wù)器提供wins服務(wù)。

    wins proxy=yes/no

    用于設(shè)置samba 服務(wù)器是否開啟wins代理服務(wù)。

    dns proxy=yes/no

    用于設(shè)置samba 服務(wù)器是否開啟dns代理服務(wù)。

    load printers=yes/no

    用于設(shè)置是否在啟動(dòng)samba時(shí)就共享打印機(jī)。

    printcap name=cups

    用于設(shè)置共享打印機(jī)的配置文件。

    printing=cups

    用于設(shè)置samba共享打印機(jī)的類型。現(xiàn)在支持的打印系統(tǒng)有:bsd, sysv, plp, lprng, aix, hpux, qnx

    c、[share name] 共享參數(shù)

    comment=任意字符串

    用于設(shè)置對(duì)該共享資源的描述,可以是任意字符串。

    path=共享目錄路徑

    用于指定共享目錄的路徑。可以用%u、%m這樣的宏來代替路徑里的unix用戶和客戶機(jī)的NetBIOS name,用宏表示主要用于[homes]共享域。例如:如果我們不打算用home段作為客戶的共享,而是在/home/share/下為每個(gè)Linux用戶以他的用戶名建個(gè)目錄,作為他的共享目錄,這樣path就可以寫成:path=/home/share/%u; 。用戶在連接到這共享時(shí)具體的路徑會(huì)被他的用戶名代替,要注意這個(gè)用戶名路徑一定要存在,否則,客戶機(jī)在訪問時(shí)會(huì)找不到網(wǎng)絡(luò)路徑。同樣,如果我們不是以用戶來劃分目錄,而是以客戶機(jī)來劃分目錄,為網(wǎng)絡(luò)上每臺(tái)可以訪問samba的機(jī)器都各自建個(gè)以它的netbios name的路徑,作為不同機(jī)器的共享資源,就可以這樣寫:path=/home/share/%m 。

    browseable=yes/no

    用于指定該共享資源是否瀏覽可見。

    read only=yes/no

    用于指定該共享資源是否只讀

    writable=yes/no

    用于指定該共享資源是否可寫。

    directory mask=0755

    用于設(shè)置用戶新建目錄的權(quán)限。默認(rèn)值為directory mask=0755

    create mask=0744

    用于設(shè)置用戶新建文件的權(quán)限。默認(rèn)值為create mask=0744

    available=yes/no

    用于指定該共享資源是否可用。

    admin users=該共享的管理者

    用于指定該共享的管理員(對(duì)該共享具有完全控制權(quán)限)。在samba 3.0中,如果用戶驗(yàn)證方式設(shè)置成“security=share”時(shí),此項(xiàng)無效。

    例如:admin users=name1,name2(多個(gè)用戶中間用逗號(hào)隔開)。

    valid users=允許訪問該共享的用戶

    用于指定允許訪問該共享資源的用戶。例如:valid users=name1,@name1,@name2(多個(gè)用戶或者組中間用逗號(hào)隔開,如果要加入一個(gè)組就用“@+組名”表示。)

    invalid users=禁止訪問該共享的用戶

    用于指定禁止訪問該共享資源的用戶。例如:invalid users=root,@name1(多個(gè)用戶或組中間用逗號(hào)隔開。)

    write list=允許寫入該共享的用戶

    用于指定可以在該共享下寫入文件的用戶。例如:write list=name1,@name2

    guest ok=yes/no

    用于指定該共享是否允許guest賬戶訪問。

    public=yes/no

    同guest參數(shù)。

    d、在配置文件中常用的變量

    • %d samba服務(wù)器的進(jìn)程號(hào)。
    • %D 當(dāng)前用戶的域或工作組的名稱。
    • %g 當(dāng)前登陸的用戶組名。
    • %h samba主機(jī)的HOSTNAME。
    • %H 用戶的家目錄。
    • %l client端的IP地址。
    • %L 服務(wù)器端的NetBIOS主機(jī)名。
    • %m client端的NetBIOS主機(jī)名。
    • %M client端的lnternet 主機(jī)名,就是HOSTNAME。
    • %S 當(dāng)前服務(wù)的名稱,表示任何可登入的使用者都能登錄。
    • %T 目前的日期與時(shí)間。
    • %u 當(dāng)前登陸的用戶名。
    • %v samba的版本號(hào)。
    • %w winbind分隔符。

    2、 /etc/samba/Imhosts

    NetBIOS name 與IP地址的對(duì)應(yīng)關(guān)系文件,一般samba會(huì)自動(dòng)搜索(只對(duì)本機(jī)生效)。目前Samba預(yù)設(shè)會(huì)去使用本機(jī)名稱(hostname)作為NetBl0S name,因此不需要設(shè)定也可以。

    3、 /etc/sysconfig/samba

    提供啟動(dòng)smbd和nmbd服務(wù)時(shí),要加入的相關(guān)服務(wù)參數(shù)。

    4、/etc/samba/smbusers

    用來設(shè)置Windows系統(tǒng)與Linux系統(tǒng)管理員與訪客用戶名之間的對(duì)應(yīng)關(guān)系,需要配置文件中“username map”選項(xiàng)支持。如在Windows系統(tǒng)中管理員為administrator,Linux系統(tǒng)中為root。可在此文件中進(jìn)行如下設(shè)置。

    root=administrator admin

    nobody=guest pcguest smbguest

    5、/var/lib/samba/private/passdb.tdb,secrets.tdb

    管理samba的用戶賬號(hào)和密碼的數(shù)據(jù)庫(kù)文件。

    6、/usr/share/doc/samba-<版本>

    samba相關(guān)的所有技術(shù)文檔。

    五、samba管理常用命令

    • testparm(/usr/bin/testparm)

    服務(wù)器端命令,用于檢驗(yàn)samba服務(wù)配置文件smb.conf的語(yǔ)法是否正確。當(dāng)編輯過smb.conf文件需要使用這個(gè)命令來進(jìn)行檢查。

    • smbstatus(/usr/bin/smbstatus)

    服務(wù)器端命令,顯示samba服務(wù)器的聯(lián)機(jī)狀態(tài),包括samba服務(wù)器聯(lián)機(jī)的PlD,分享的資源,正在使用的用戶等信息。

    • smbpasswd,pdbedit(/usr/bin/smbpasswd or pdbedit)

    服務(wù)器端命令,用于管理samba服務(wù)的用戶賬號(hào)和密碼,早期使用smbpasswd命令, 后因使用TDB數(shù)據(jù)庫(kù)文件來保存samba用戶信息,改為pdbedit 命令來管理用戶數(shù)據(jù)。

    • tdbdump(/usr/bin/tdbdump)

    服務(wù)器端命令,用于查看samba用戶信息數(shù)據(jù)庫(kù)文件的內(nèi)容。需安裝tdb-tools軟件包。

    • tdbtool(/usr/bin/tdbtool)

    服務(wù)器端命令,可直接進(jìn)入數(shù)據(jù)庫(kù)文件手動(dòng)修改samba用戶的賬號(hào)與密碼。需安裝tdb-tools軟件包。

    • mount.cifs(/sbin/mount.cifs)

    客戶端命令,在Linux系統(tǒng)上,可使用mount(mount.cifs)命令將遠(yuǎn)程主機(jī)分享的資源掛載到Linux主機(jī)上。

    • nmblookup(/usr/bin/nmblookup)

    客戶端命令,主要用于查出NetB10S name。

    • smbtree(/usr/bin/smbtree)

    客戶端命令,以工作組與計(jì)算機(jī)名方式,樹形顯示samba服務(wù)的共享資源列表。

    • smbclient(/usr/bin/smbclient)

    客戶端命令,來查看其他計(jì)算機(jī)所分享出來的共享資源信息。

    以上是我在學(xué)習(xí)Linux系統(tǒng)中整理的一些學(xué)習(xí)要點(diǎn),肯定會(huì)有不對(duì)的地方,希望各位大俠給與指正,我們共同學(xué)習(xí)!謝謝!

    下篇:Linux服務(wù)器配置-samba服務(wù)配置(二)

    將介紹samba服務(wù)的防火墻配置,并通過實(shí)例說明samba共享資源無需密碼訪問的配置。

    今天抽時(shí)間折騰了一套無盤的 win10,簡(jiǎn)單來講,使用 ipxe 網(wǎng)絡(luò)啟動(dòng),將 win10 安裝到網(wǎng)絡(luò)的 iscsi 硬盤(存在服務(wù)器上的單獨(dú)文件)中,然后正常啟動(dòng)。這中間主要使用的幾個(gè)軟件工具及作用如下:

    1. tftpd(必須) tftp 的服務(wù)器,網(wǎng)絡(luò)啟動(dòng)必備。openwrt 的路由器的 dnsmasq 可以提供這個(gè)功能。不過,因?yàn)槲液罄m(xù)還要有 web 服務(wù)和共享服務(wù),還有 iscsi target 的服務(wù),都是在虛擬機(jī)中,不想在路由器上大動(dòng)干戈
    2. web(可選) tftp 的傳輸方式太慢了,還是 http/https 的比較快,所以就弄了一個(gè)這個(gè)
    3. samba(windows 安裝必須) windows 安裝的時(shí)候,必須使用默認(rèn)的安裝程序安裝,不能使用 pe 的方式安裝,pe 的方式安裝的時(shí)候會(huì)少驅(qū)動(dòng),導(dǎo)致啟動(dòng)后,因?yàn)闆]有網(wǎng)絡(luò) iscsi 設(shè)備而藍(lán)屏,并提示啟動(dòng)設(shè)備有問題
    4. tgt(iscsi 共享存儲(chǔ)服務(wù))或其他等效的我用的是 ubuntu 來做上面的服務(wù)器,在 ubuntu 上很簡(jiǎn)單,直接 apt install tgt 就可以了。
    5. netboot.xyz(或者其他的 ipxe,或者自己編譯) 沒有其他的原因,正好我一直在用 netboot.xyz 作為網(wǎng)絡(luò)啟動(dòng)的管理,而且手邊有 netboot.xyz 的源代碼,編譯又省事,所以就用它了

    我用的 virtualbox 進(jìn)行的測(cè)試,virtualbox 中創(chuàng)建了 openwrt,ubuntu, wins 三個(gè)虛擬機(jī)。并且在同一個(gè)內(nèi)網(wǎng)中。openwrt 用來做網(wǎng)關(guān)和提供 dhcp 服務(wù),因此需要雙網(wǎng)卡。ubutu 我為了主機(jī)訪問文件方便,也弄了個(gè)雙網(wǎng)卡。具體的使用和配置可以從網(wǎng)上搜索。wins 配置從網(wǎng)絡(luò)啟動(dòng),不添加硬盤,不從 uefi 啟動(dòng)。

    準(zhǔn)備工作

    openwrt 中的配置(可選)

    因?yàn)槲业?openwrt 僅僅提供基本的網(wǎng)絡(luò)服務(wù),因此其他的服務(wù)都是在 ubuntu 這個(gè)系統(tǒng)中的,包括 tftpd 服務(wù),因此需要將 tftpd 的訪問信息攔截并轉(zhuǎn)發(fā)到 ubuntu 中。dnsmasq YYDS!!。在/etc/dnsmasq.conf 中添加下面的內(nèi)容


    dhcp-option-force=211,60i #這個(gè)好像是設(shè)置超時(shí)的
    dhcp-option=option:tftp-server,192.168.1.127 #這個(gè)設(shè)置真實(shí)的tftp服務(wù)器的,這個(gè)ip就是ubuntu系統(tǒng)在內(nèi)網(wǎng)中的服務(wù)器,不能跨網(wǎng)段,本文中調(diào)到的這個(gè)ip需要換成實(shí)際的
    
    dhcp-boot=ipxe/netboot.xyz.kpxe,192.168.1.127,192.168.1.127 #這個(gè)是bios方式的ipx啟動(dòng)文件,后面的是tftp服務(wù)對(duì)應(yīng)的域名和ip
    
    dhcp-match=set:efi-x86_64,option:client-arch,7 #這兩行是efi啟動(dòng)方式,我沒有測(cè)試過
    dhcp-boot=tag:efi-x86_64,ipxe/netboot.xyz.efi,192.168.1.127
    

    ubuntu 系統(tǒng)(可選)

    下面這些其實(shí)都可以扔到 openwrt 中,只是我沒有想著擴(kuò)充 openwrt,好像硬盤只有 1G 還是多少的。ubuntu 系統(tǒng)安裝 docker, tgt。


    apt-get -y remove docker docker-engine docker.io containerd runc
        apt-get -y update
        apt-get -y install ca-certificates curl gnupg lsb-release tgt
    
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor  -o /usr/share/keyrings/docker-archive-keyring.gpg
        echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
        apt-get update -y
        apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
        #普通用戶想要執(zhí)行docker命令可以在普通用戶權(quán)限下運(yùn)行這個(gè)添加權(quán)限
        #sudo usermod -aG docker $USER
    

    ipxe 等服務(wù)的 docker 啟動(dòng)配置


    version: '3'
    services:
      tftp:
        image: pghalliday/tftp
        restart: always
        volumes:
        - ./buildout/buildout:/var/tftpboot:rw
        ports:
        - "69:69/udp"
        - "69:69/tcp"
        logging:
          driver: "json-file"
      samba:
        image: andyzhangx/samba:win-fix
        command:  "-r -w WORKGROUP -s \"share;/share;yes;no;yes;all;all\" "
        restart: always
        environment:
        - TZ=CST6CDT
        - NMBD=true
        - FILEMASK=0777
        - DIRECTORYMASK=0777
        - FORCEGROUP=root
        - FORCEUSER=root
        - USERID=0
        - GROUPID=0
        volumes:
        - /data:/share #/data中的目錄將被顯示在共享文件的share中
        ports:
        - "139:139"
        - "445:445"
        logging:
          driver: "json-file"
      web:
        image: nginx:alpine
        restart: always
        ports:
        - "80:80"
        volumes:
        - ./buildout:/var/www/html:rw
        - /data:/var/www/html/buildout/iso:rw
        - ./nginx-site.conf:/etc/nginx/conf.d/default.conf:rw
        logging:
          driver: "json-file"
    

    配置中的 nginx 的配置文件:


    server {
    listen       80;
    server_name  localhost;
    
    root /var/www/html/buildout;
    index index.php index.html index.htm;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    client_max_body_size    512m;
    client_body_buffer_size 512m;
    autoindex on;
    location / {
    try_files $uri $uri/ /index.html;
    }
    }
    

    netboot.xyz 構(gòu)建(ipxe 必須)

    roles/netbootxyz/files/ipxe/local/general.h 中添加如下配置,開啟 sanboot 相關(guān)功能


    #define PXE_STACK               /* PXE stack in iPXE - you want this! */
    #define PXE_MENU                /* PXE menu booting */
    #define DOWNLOAD_PROTO_NFS      /* Network File System Protocol */
    #define SANBOOT_PROTO_ISCSI     /* iSCSI protocol */
    #define SANBOOT_PROTO_AOE       /* AoE protocol */
    #define SANBOOT_PROTO_IB_SRP    /* Infiniband SCSI RDMA protocol */
    #define SANBOOT_PROTO_FCP       /* Fibre Channel protocol */
    #define SANBOOT_PROTO_HTTP      /* HTTP SAN protocol */
    #define PXE_CMD         /* PXE commands */
    

    user_overrides.yml 中修改相關(guān)配置:


    boot_domain: 192.168.1.127
    bootloader_http_enabled: true
    

    我寫了個(gè)小腳本來進(jìn)行 netbootxyz 的編譯:


    #!/bin/bash
    cd netboot.xyz
    docker build -t localbuild -f Dockerfile .
    docker run --rm -it -v $(pwd)/../buildout:/buildout localbuild
    

    netbootxyz 構(gòu)建出的 menu.ipxe 中添加下面的內(nèi)容(我的在 buildout 目錄中):


    #item --gap Default: 這行下面添加
    item win10_boot ${space} win10_64_boot
    item win10_install ${space} win10_64_install
    
    #下面的添加到最后
    :win10_boot
    echo "boot win10 from iscsi"
    set keep-san 1
    #ip地址需要注意,對(duì)于默認(rèn)的tgt來說,iqn之前的冒號(hào)前有個(gè)1
    sanboot iscsi:192.168.1.127:::1:iqn.rix.test.win:win10 || goto mainmenu
    
    :win10_install
    echo "install win10 to iscsi"
    imgfree
    set keep-san 1
    sanhook iscsi:192.168.1.127:::1:iqn.rix.test.win:win10
    kernel http://${boot_domain}/wimboot
    initrd  http://${boot_domain}/iso/win10/boot/bcd BCD
    initrd  http://${boot_domain}/iso/win10/boot/boot.sdi boot.sdi
    initrd  http://${boot_domain}/iso/win10/sources/boot.wim boot.wim
    boot
    

    上面的 iso/win10 目錄下存放的是從 win10 鏡像中解壓縮出來的文件

    tgt 配置

    我的 tgt 沒有放到 docker 中,所以單獨(dú)配置下吧。在/etc/tgt/conf.d 目錄下隨便添加一個(gè).conf 后綴的文件,內(nèi)容如下:


    <target iqn.rix.test.win:win10>
    backing-store /data/disks/win.img
    </target>
    

    上面的那個(gè) iqn 是很重要的,配置啟動(dòng)的時(shí)候需要用到。然后使用下列命令創(chuàng)建一個(gè)磁盤鏡像:


    fallocate -l 40G /data/disks/win10.img
    

    我將所有磁盤鏡像,windows 的安裝文件啥的都扔在/data 目錄下。重啟并檢查 tgt:


    sudo systemctl restart tgt
    sudo tgtadm --mode target --op show #這個(gè)命令應(yīng)該可以看到我們的iqn以及對(duì)應(yīng)的磁盤文件
    

    安裝

    win10 的虛擬機(jī)啟動(dòng),如果準(zhǔn)備工作正確的話,會(huì)看到 netboot.xyz 的界面,并且看到我們添加的自定義的菜單,然后選賊 win10_install。正確的話,會(huì)啟動(dòng) win10 的安裝流程,這個(gè)在虛擬機(jī)中運(yùn)行的時(shí)候,等待的時(shí)間比較長(zhǎng),也可能是以為我給虛擬機(jī)分配的內(nèi)存比較少。總之,如果看到 win10 的選擇語(yǔ)言的選項(xiàng),就說明正常了。

    如果這個(gè)時(shí)候按照正常的安裝邏輯的話,在安裝程序啟動(dòng)后,會(huì)找不到磁盤。所以,我們?cè)谡Z(yǔ)言之后,要選擇“修復(fù)計(jì)算機(jī)”->“疑難解答”->“命令行提示符”然后在彈出的命令行中輸入以下代碼:

    net use \\192.168.1.127\share
    \\192.168.1.127\share\win10\sources\setup.exe
    

    第一行表示使用共享目錄。第二行執(zhí)行共享目錄下 win10 目錄中原始的安裝程序。之后和正常的 win10 安裝一樣了。最后到倒計(jì)時(shí)重啟。重啟后,選擇 win10_64_boot 這項(xiàng)進(jìn)行啟動(dòng),以后都可以使用這個(gè)來進(jìn)行啟動(dòng)。

    使用體驗(yàn)

    使用流程除了從網(wǎng)絡(luò)啟動(dòng)外,其他的和有磁盤的方式?jīng)]太大區(qū)別。默認(rèn)的情況下,數(shù)據(jù)也可以保存,數(shù)據(jù)保存是自動(dòng)通過網(wǎng)絡(luò)保存到服務(wù)器上的,只是啟動(dòng)的過程比較慢,文件讀寫涉及到網(wǎng)卡速度,估計(jì)大文件會(huì)比較慢。

    使用這種方式創(chuàng)建的無盤系統(tǒng)只是作為一個(gè)參考,比不得專業(yè)的無盤系統(tǒng)的效率。

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有