㈠ Macbook pro 乙太網卡的BSD名稱怎麼修改啊,我要改成en0或en1,不然上不了校園網TAT
這個是系統設備信息,更改不了,你用的是小銳么?客戶端上有選擇呀,我記得可以選五個。
㈡ freebsd netgraph 虛擬網口怎麼刪除
1.打開虛擬機進入操作系統列表。 2.在操作系統列表,點擊要刪除的操作系統如圖要刪除一個Ubuntu。 3.點擊要刪除的操作系統後在主菜單中找到虛擬機。 4.點擊虛擬機菜單在子菜單中找到管理。 5.滑鼠移到管理菜單上。 6.點擊從磁碟刪除就可以徹底刪除該操作系統。請注意刪除後無法修復。
㈢ 誰有FreeBSD的使用手冊啊
24.4 撥入服務
Contributed by Guy Helmer. Additions by Sean Kelly.
為撥入服務配置FreeBSD系統與連接到終端是非常相似的,除非您正在使用 modem來撥號而不是終端。
24.4.1 外置vs.內置modem
外置modem看起來很容易撥號。 因為,外置 modem 可以通過儲存在非易失性的RAM中的參數來配置,它們通常提供指示器來顯示重要的RS-232信號的狀態。不停閃光的信號燈能給用戶留下比較深刻的印象,而且指示器也可以用來查看modem是否正常地工作。
內置modem通常缺乏非易失性的RAM, 所以對它們的配置可能會限制在通過 DIP 開關來設置。如果您的內置modem有指示燈,您也很難看得到。
24.4.1.1 Modem和線纜
如果您使用一個外置的 modem,那您將需要適當的電纜線。一個標準的串口線應當足夠長以至普通的信號能夠連接上:
表 24-4. 信號名稱
縮寫 全名
RD 收到數據 (Received Data)
TD 傳出數據 (Transmitted Data)
DTR 數據終端就緒 (Data Terminal Ready)
DSR 數據集就緒 (Data Set Ready)
DCD 數據載波檢測 (Data Carrier Detect) (RS-232 的收到線路信號檢測器)
SG 信號地 (Signal Ground)
RTS 要求發送數據 (Request to Send)
CTS 允許對方發送數據 (Clear to Send)
FreeBSD 對速度超過 2400 bps 的情形需要通過 RTS 和 CTS 信號來完成流控制, 通過 CD 信號來檢測呼叫響應和掛機,並通過 DTR 信號來在會話結束時對數據機進行復位。某些電纜在連接時沒有提供全部需要的信號, 這會給您帶來問題, 例如在掛斷時登錄會話不消失,這就有可能是電纜的問題。
與其它類 UNIX? 操作系統類似, FreeBSD 使用硬體信號來檢測呼叫響應, 以及在掛斷時掛斷並復位數據機。 FreeBSD 避免發送命令給數據機, 或監視其狀態。 如果您熟悉通過數據機來連接基於 PC 的 BBS 系統, 這可能看起來有點難用。
24.4.2 串口的考慮
FreeBSD支持基於 NS8250, NS16450, NS16550 和 NS16550A 的EIA RS-232C通訊介面。 8250和16450設備有單字元緩沖。 16550設備提供了一個 16 個字元的緩沖,可以提高更多的系統性能。 因為單字元緩沖設備比 16 個字元的緩沖需要更多的系統資源來工作,所以基於16550A的介面卡可能更好。 如果系統沒有活動的串口, 或有較大的負載, 16 字元緩沖的卡對於低錯誤率的通訊來說更好。
24.4.3 快速預覽
對於終端, init 會在每個配置串口上為每個撥入連接產生一個 getty 進程。 例如, 如果一個 modem 被附帶在 /dev/ttyd0 中,用命令ps ax可以顯示下面這些:
4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
當用戶撥上modem, 並使用它進行連接時, CD 線就會被 modem 認出。 內核注意到載波信號已經被檢測到, 需要完成 getty 埠的打開。 getty 發送一個登錄:在指定的初始線速度上的命令行。 Getty 會檢查合法的字元是否被接收,在典型的配置中, 如果發現 「垃圾」, getty 就會設法調節線速度,直到它接收到合理的字元。
用戶在鍵入他/她的登錄名稱後, getty執行/usr/bin/login, 這會要求用戶輸入密碼來完成登錄,然後啟動用戶的shell。
24.4.4 配置文件
如果希望允許撥入您的 FreeBSD 系統, 在 /etc 目錄中有三個系統配置文件需要您關注。 其一是 /etc/gettytab,其中包含用於 /usr/libexec/getty 服務的配置信息。 其二是 /etc/ttys, 它的作用是告訴 /sbin/init 哪些 tty 設備上應該運行 getty。 最後,關於埠的初始化命令, 應放到 /etc/rc.d/serial 腳本中。
關於在 UNIX 上配置撥入數據機有兩種主要的流派。一種是將本地計算機到數據機的 RS-232 介面配置為固定速率。 這樣做的好處是,遠程用戶總能立即見到系統的登錄提示符, 而其缺點則是,系統並不知道用戶真實的數據速率是多少, 因而, 類似 Emacs 這樣的程序, 也就無法調整它們繪制屏幕的方式, 以便為慢速連接改善響應時間。
另一種流派將數據機的 RS-232 介面速率配置為隨遠程用戶的連接速率變化。 例如, 對 V.32bis (14.4 Kbps) 連接, 數據機會讓自己的 RS-232 介面以 19.2 Kbps 的速率運行, 而 2400 bps 連接, 則會使數據機的 RS-232 介面以 2400 bps 的速率運行。 由於 getty 並不能識別具體的數據機的連接速率反饋信息, 因此, getty 會以初始速度給出一個 login: 提示, 並檢查用戶的響應字元。如果用戶看到亂碼, 則他們應知道此時應按下 Enter 鍵,直到看到可以辨認的提示符為止。 如果數據速率不匹配, 則 getty 會將用戶輸入的任何信息均視為 「亂碼」, 並嘗試以下一種速率來再次給出 login: 提示符。 這一過程可能需要令人作嘔地重復下去, 不過一般而言,用戶只要敲一兩下鍵盤就能看到正確的提示符了。 顯然, 這種登錄過程看起來不如前面所介紹的 「鎖定速率」 方法那樣簡單明了, 但使用低速連接的用戶,卻可以在運行全屏幕程序時得到更好的交互響應。
這一節將盡可能公平地介紹關於配置的信息,但更著力於介紹數據機速率隨連接速率變化的配置方法。
24.4.4.1 /etc/gettytab
/etc/gettytab是一個用來配置 getty 信息的 termcap 風格的文件。 請看看 gettytab 的聯機手冊了解完整的文件格式和功能列表。
24.4.4.1.1 鎖定速度的配置
如果您把您的modem的數據通訊率鎖定在一個特殊的速度上, 您不需要對 /etc/gettytab 文件作任何變化。
24.4.4.1.2 匹配速度的配置
您將需要在 /etc/gettytab 中設置一個記錄來告訴 getty 您希望在 modem 上使用的速度。 如果您的 modem 的速率是 2400 bit/s, 則可以使用現有的 D2400 的記錄。
#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
:nx=D2400:tc=300-baud:
如果您有一個更高速度的 modem, 必須在 /etc/gettytab 中添加一個記錄。 下面是一個讓您可以以最高 19.2 Kbit/s 的用在 14.4 Kbit/s的modem上的介面記錄:
#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
:nx=V9600:tc=std.19200:
這樣做的結果是 8-數據位, 沒有奇偶校驗的連接。
上面使用19.2 Kbit/s的連接速度的例子,也可以使用 9600 bit/s (for V.32), 2400 bit/s, 1200 bit/s,300 bit/s, 直到 19.2 Kbit/s。 通訊率的調節使用 nx= (「next table」) 來實現。 每條線使用一個 tc= (「table continuation」) 的記錄來加速對於一個特殊傳輸率的標准設置。
如果您有28.8 Kbit/s的modem,或您想使用它的 14.4Kbit/s 模式,就需要使用一個更高的超過 19.2 Kbit/s 的通訊速度的 modem。 這是一個啟動 57.6 Kbit/s 的 gettytab 記錄的例子:
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
:nx=VH9600:tc=std.57600:
如果您的 CPU 速度較低, 或系統的負荷很重, 而且沒有 16550A 的串口,您可能會在57.6 Kbit/s 上得到 「sio」 「silo」錯誤。
24.4.4.2 /etc/ttys
/etc/ttys文件的配置在 例 24-1中介紹過。 配置 modem 是相似的, 但我們必須指定一個不同的終端類型。鎖定速度和匹配速度配置的通用格式是:
ttyd0 "/usr/libexec/getty xxx" dialup on
上面的第一條是這個記錄的設備特定文件 —— ttyd0 表示 /dev/ttyd0 是這個 getty 將被監視的文件。 第二條 "/usr/libexec/getty xxx" 是將運行在設備上的進程 init。 第三條,dialup,是默認的終端類型。 第四個參數, on, 指出了線路是可操作的 init。也可能會有第五個參數, secure, 但它將只被用作擁有物理安全的終端 (如系統終端)。
默認的終端類型可能依賴於本地參考。 撥號是傳統的默認終端類型,以至用戶可以定製它們的登錄腳本來注意終端什麼時候撥號, 和自動調節它們的終端類型。 然而,作者發現它很容易在它的站點上指定 vt102 作為默認的終端類型,因為用戶剛才在它們的遠程系統上使用的是VT102模擬器。
您對/etc/ttys作修改之後,您可以發送 init 進程給一個 HUP 信號來重讀文件。您可以使用下面的命令來發送信號:
# kill -HUP 1
如果這是您的第一次設置系統, 您可能要在發信號 init 之前等一下,等到您的 modem 正確地配置並連接好。
24.4.4.2.1 鎖定速度的配置
對於一個鎖定速度的配置,您的 ttys 記錄必須有一個為 getty 提供固定速度的記錄。 對於一個速度被鎖定在 19.2kbit/s 的 modem, ttys 記錄是這樣的:
ttyd0 "/usr/libexec/getty std.19200" dialup on
如果您的 modem 被鎖定在一個不同的數據速度, 為 std.speed 使用適當的速度來代替 std.19200。 確信您使用了一個在 /etc/gettytab 中列出的正確的類型。
24.4.4.2.2 匹配速度的設置
在一個匹配速度的設置中,您的 ttys 錄需要參考在 /etc/gettytab 適當的起始 「auto-baud」 記錄。 例如, 如果您為一個以 19.2 Kbit/s 開始的可匹配速度的 modem 添加上面建議的記錄, 您的 ttys 記錄可能是這樣的:
ttyd0 "/usr/libexec/getty V19200" dialup on
24.4.4.3 /etc/rc.d/serial
高速數據機, 如使用 V.32、 V.32bis, 以及 V.34 的那些, 需要使用硬體 (RTS/CTS) 流控制。 您可以在 /etc/rc.d/serial 中增加 stty 命令來在 FreeBSD 內核中, 為數據機設置硬體流控制標志。
例如, 在 1 號串口 (COM2) 撥入和撥出設備上配置 termios 標志 crtscts, 可以通過在 /etc/rc.d/serial 增加下面的設置來實現:
# Serial port initial configuration
stty -f /dev/ttyd1.init crtscts
stty -f /dev/cuad1.init crtscts
24.4.5 Modem 設置
如果您有一個 modem, 它的參數能被存儲在非易失性的 RAM 中,您將必須使用一個終端程序來設置參數 (比如 MS-DOS? 下的 Telix 或者 FreeBSD 下的 tip)。使用同樣的通訊速度來連接 modem 作為初始速度 getty 將使用和配置 modem 的非易失性 RAM 來適應這些要求:
連接時宣告 CD
操作時宣告 DTR; DTR 消失時掛斷線路並復位數據機
CTS 傳輸數據流控制
禁用 XON/XOFF 流控制
RTS 接收數據流控制
寧靜模式 (無返回碼)
無命令回顯
請閱讀您 modem 的文檔找到您需要用什麼命令和 DIP 介面設置。
例如,要在一個 U.S. Robotics? Sportster? 14400 的外置 modem 上設置上面的參數,可以用下面這些命令:
ATZ
AT&C1&D2&H1&I0&R2&W
您也可能想要在 modem 上尋找機會調節這個設置, 例如它是否使用 V.42bis 和 MNP5 壓縮。
外置 modem 也有一些用來設置的 DIP 開關, 也許您可以使用這些設置作為一個例子:
Switch 1: UP —— DTR Normal
Switch 2: N/A (Verbal Result Codes/Numeric Result Codes)
Switch 3: UP —— Suppress Result Codes
Switch 4: DOWN —— No echo, offline commands
Switch 5: UP —— Auto Answer
Switch 6: UP —— Carrier Detect Normal
Switch 7: UP —— Load NVRAM Defaults
Switch 8: N/A (Smart Mode/Dumb Mode)
在撥號 modem 上的結果代碼應該被 禁用/抑制, 以避免當 getty 在 modem 處於命令模式並回顯輸入時錯誤地給出 login: 提示時可能造成的問題。 這樣可能導致 getty 與 modem 之間產生更長的不必要交互。
24.4.5.1 鎖定速度的配置
對於鎖定速度的配置, 您需要配置 modem 來獲得一個不依賴於通訊率的穩定的 modem到計算機 的傳輸率。 在一個 U.S. Robotics Sportster 14400 外置 modem 上, 這些命令將鎖定 modem 到計算機的傳輸率:
ATZ
AT&B1&W
24.4.5.2 匹配速度的配置
對於一個變速的配置, 您需要配置 modem 調節它的串口傳輸率匹配接收的傳輸率。 在一個 U.S. Robotics Sportster 14400 的外置 modem 上, 這些命令將鎖定 modem 的錯誤修正傳輸率適合命令要求的速度,但允許串口速度適應沒有糾錯的連接:
ATZ
AT&B2&W
24.4.5.3 檢查modem的配置
大多數高速的modem提供了用來查看當前操作參數的命令。 在USR Sportster 14400外置modem上, 命令 ATI5 顯示了存儲在非易失性RAM中的設置。要看看正確的 modem 操作參數, 可以使用命令 ATZ 然後是 ATI4。
如果您有一個不同牌子的 modem, 檢查 modem 的使用手冊看看如何雙重檢查您的 modem 的配置參數。
24.4.6 問題解答
這兒是幾個檢查撥號modem的步驟。
24.4.6.1 檢查FreeBSD系統
把您的modem連接到FreeBSD系統, 啟動系統, 然後, 如果您的 modem 有一個指示燈,當登錄時看看 modem 的 DTR 指示燈是否亮: 會在系統控制台出現命令行——如果它亮, 意味著 FreeBSD 已經在適當的通訊埠啟動了一個 getty 進程, 等待 modem 接收一個呼叫。
如果DTR指示燈不亮, 通過控制台登錄到 FreeBSD系統,然後執行一個 ps ax 命令來看 FreeBSD 是否正在正確的埠運行 getty進程。您將在進程顯示中看到像這樣的一行:
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
如果您看到是這樣的:
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
modem 不接收呼叫, 這意味著 getty 已經在通訊埠打開了。這可以指出線纜有問題或 modem 錯誤配置, 因為 getty 無法打開通訊埠。
如果您沒有看到任何 getty 進程等待打開想要的 ttydN 埠, 在 /etc/ttys 中雙擊您的記錄看看那兒是否有錯誤。 另外,檢查日誌文件 /var/log/messages 看看是否有一些來自 init 或 getty 的問題日誌。 如果有任何信息, 仔細檢查配置文件 /etc/ttys 和 /etc/gettytab,還有相應的設備文件 /dev/ttydN,是否有錯誤,丟失記錄,或丟失了設備指定文件。
24.4.6.2 嘗試接入Try Dialing In
設法撥入系統。 確信使用8位, 沒有奇偶檢驗, 在遠程系統上的1阻止位。如果您不能立刻得到一個命令行, 試試每隔一秒按一下 Enter。如果您仍沒有看到一個登錄: 設法發送一個 BREAK。如果您正使用一個高速的 modem 來撥號, 請在鎖定撥號 modem 的介面速度後再試試。
如果您不能得到一個登錄:prompt,再檢查一下 /etc/gettytab,重復檢查:
在/etc/ttys 中指定的初始可用的名稱與 /etc/gettytab 的一個可用的相匹配。
每個 nx= 記錄與另一個 gettytab 可用名稱匹配。
每個 tc= 記錄與另一個 gettytab可用名稱相匹配。
如果您撥號但 FreeBSD 系統上的 modem 沒有回應, 確信 modem 能回應電話。 如果 modem 看起來配置正確了, 通過檢查 modem 的指示燈來確認 DTR 線連接正確。
如果您做了好幾次,它仍然無法工作,打斷一會,等會再試試。 如果還不能工作,也許您應該發一封電子郵件給 FreeBSD 一般問題郵件列表 尋求幫助。
㈣ BSD BSD 2-clause BSD 3-clause 這三者之間是什麼關系
一、概覽
The BSD License(BSD)是Berkeley Software Distribution License(柏克萊軟體散布授權條款)的縮寫,許多軟體是在此一授權條款下發布的。因為BSD起源自加州大學柏克萊分校,所以最原始散布的BSD擁有者是加州大學董事會。又因一些軟體設計師修訂BSD的部份內容以做為其軟體程式授權使用,造成BSD有多種不同條款內容,統稱BSD-style授權條款。
最初的BSD是由四個主要條款構成的,其中廣告條款的存在讓許多後來參與修改原始碼的使用者均會將其名字加入聲明之中,而遭受GNU計畫(GNU Project)的批評:該廣告條款造成非常冗長的聲明內容,是相當不便利,且易發生使用上困擾而與GPL不相容。而為了回應Richard Stallman(GNU 計畫的主導者與GPL的起草者),BSD的官方主導人William Hoskins遂在一九九九年七月二十二日率先將該廣告條款自BSD中刪除,也引發其他使用BSD者的跟進,刪除廣告條款之後的BSD被稱為「三條款 BSD」(3-clause BSD),而原本的被稱為「四條款BSD」(4-clause BSD)。
而BSD與其他授權條款如GPL條款內容相比,是幾乎沒有限制的,因此是更接近公共領域(public domain)的。
二、運用狀況
目前實際上的使用是以三條款BSD為主,而又因為BSD可以任由他人修改條款部份內容以符合使用上需求,因此實務上有許多BSD-style授權條款存在。
目前實際使用上,只有NetBSD仍然使用四條款BSD;而在某些包含在KDE裡面的程式庫使用了二條款BSD,除刪除廣告條款外,亦將著作權所有者名稱作為背書使用許可的禁止規定去除,而這樣的二條款BSD在功能上相當於MIT;FreeBSD也是使用二條款BSD,但另增加了後繼貢獻者的觀點並非 FreeBSD計畫的官方觀點的額外聲明。
三、權利義務
(一) 被授權人權利
允許任何商業上或私有使用。
(二) 被授權人義務
1. 在原始碼的重製物中一定要保有本授權條款的著作權標示內容。
2. 以二進位制格式呈現的重製物必須再現本授權條款的著作權聲明和內容。
3. 在沒有事前書面同意的情況下,「the name of the 」及「the names of its contributors」均不得被用於支持或宣傳從既有軟體衍生出的產品(不為產品背書)。ORGANIZATION視使用BSD的使用者名稱而定。
四、其他重要特性
1. 可與其他授權條款並存。
2. 是一個近乎公共領域的授權條款,一般個人或組織可以為了使授權條款內容符合自身需求而更改」University of California」此一標示。
3. 使用BSD的軟體程式碼可以被任意使用,代表的是在開放源碼和封閉源碼軟體上均可利用採用此類授權條款的程式碼。
4. 簡單的免責條款。
5. 三條款BSD是由自由軟體基金會(FSF)所認可的自由軟體授權條款,也被開放源碼組織(OSI)認可為開放源碼授權條款。並與GPL相容。
㈤ bsd.exe是什麼怎麼樣刪除
安全模式下刪除
C:\WINDOWS\system32\stp.dll(最下面有徹底刪除的辦法)
C:\Program Files\Common Files\UPDATE\Update.exe
C:\WINDOWS\system32\bsd.exe
刪除C:\WINDOWS\system32\stp.dll
操作方法如下:
1.進安全模式,然後刪除文件 C:\WINDOWS\system32\stp.dll
然後運行 regedit ,打開注冊表編輯器,然後找到 HKEY_LOCAL_MACHINE\SOFTWARE\STDUP 和 HKEY_CURRENT_USER\Software\STDUP ,如果有這兩項,請刪除!
然後將 C:\Program Files\STDUP\ 文件夾整體刪除!
2.依次點擊打開:開始-》設置-》控制面板-》管理工具-》服務
找到一個叫StdService的服務,雙擊,在啟動類型這一欄,選已禁用,再在下面一行點停止,再點確定。就可以了。
如果要徹底一點,就進入windows目錄下的system32目錄,在裡面找到STDSVER.DLL這個文件,刪除。當然,先要在進程列表中關閉rundll32這個進程。
討厭的病毒就解決了!
㈥ freebsd怎樣清理history
如果想一次性的話,只要直接輸入 ifconfig lnc0 xxx.xxx.xxx.xxx netmask 255.255.255.0
即時生效,重啟後失效。
圖形界面配置IP
sysinstall --> configure --> Networking -->interfaces -->相應網卡名。
freebsd 單一網卡配置多個IP
如果一塊網卡以前的IP是192.168.30.3,現在在添加多個IP,可以rc.conf 中作如下設置,lnc0是設備名
ifconfig_lnc0="inet 192.168.30.3 netmask 255.255.255.0"
ifconfig_lnc0_alias0="inet 192.168.30.1 netmask 255.255.255.255"
指定的IP地址和你在一個子網,別名後面的netmask應是255.255.255.255,如果指定IP位於不同子網,用相應子網的netmask。
㈦ ubuntu中如何找到最新增加的設備節點
將自己開發的內核代碼加入到Linux內核中,需要3個步驟:
1、確定把自己開發代碼放入到內核合適的位置
將demo_chardev.c文件拷貝到.../drivers/char/目錄下。
demo_chardev.c
[cpp] view plain
#include <linux/init.h>
#include <linux/mole.h>
#include <linux/kernel.h>
/*結構體file_operations定義的頭文件*/
#include <linux/fs.h>
/*聲明_to/from_user函數的頭文件*/
#include <linux/uaccess.h>
/*聲明class_create 和device_create相關信息*/
#include <linux/device.h>
#define DEMO_DEBUG
#ifdef DEMO_DEBUG
#define dem_dbg(fmt, arg...) printk(KERN_WARNING fmt, ##arg)
#else
#define dem_dbg(fmt, arg...) printk(KERN_DEBUG fmt, ##arg)
#endif
#define DEVICE_COUNT 2
/*記錄當前驅動所佔用的主設備號*/
static int major = 0;
static int demo_open (struct inode *pnode, struct file *filp)
{
dem_dbg("[kern func]: %s major: %d minor: %d\n",
__FUNCTION__, imajor(pnode), iminor(pnode));
return 0;
}
static ssize_t demo_read (struct file *filp, char __user *buf, size_t count, loff_t *offp)
{
unsigned char ary[100] = "you are reading successfully!";
unsigned long len = min(count, sizeof(ary)); //min是個宏,用來獲取兩個數中較小的值
int retval;
dem_dbg("[kern func]: %s major: %d minor: %d\n",
__FUNCTION__, imajor(filp->f_dentry->d_inode),
iminor(filp->f_dentry->d_inode));
//file結構體的f_flags成員可用來判斷是否阻塞讀取,然後進行相應處理
if(_to_user(buf, ary, len) != 0){
retval = -EFAULT;
goto cp_err;
}
return len; //成功返回實際傳輸的位元組數
cp_err:
return retval;
}
static ssize_t demo_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
{
unsigned char ary[100] = "";
unsigned long len = min(count, sizeof(ary)); //min是個宏,用來獲取兩個數中較小的值
int retval;
dem_dbg("[kern func]: %s major: %d minor: %d\n",
__FUNCTION__, imajor(filp->f_dentry->d_inode),
iminor(filp->f_dentry->d_inode));
if(_from_user(ary, buf, len) != 0){
retval = -EFAULT;
goto cp_err;
}
printk("[msg]: writing context: %s\n",ary);
return len; //成功返回實際傳輸的位元組數
cp_err:
return retval;
}
static int demo_release (struct inode *pnode, struct file *filp)
{
dem_dbg("[kern func]: %s major: %d minor: %d\n",
__FUNCTION__, imajor(pnode), iminor(pnode));
return 0;
}
/*@定義file_operations結構體變數*/
static struct file_operations fops = {
.owner = THIS_MODULE,
.read = demo_read,
.write = demo_write,
.open = demo_open,
.release = demo_release,
};
static struct class *demo_class;
static int __init drvdemo_init(void)
{
struct device *demo_device;
int i;
int retval;
dem_dbg("[msg]:this is a driver demo, in mole initial function\n");
/*注冊字元驅動函數,成功 返回動態分配好的主設備號,失敗
*返回錯誤碼(負值)*/
major = register_chrdev(0, "demo_chrdev", &fops);
if(major < 0){
retval = major;
goto chrdev_err;
}
/*創建設備類*/
demo_class = class_create(THIS_MODULE,"demo_class");
if(IS_ERR(demo_class)){
retval = PTR_ERR(demo_class);
goto class_err;
}
/*創建設備文件,通知用戶在「/dev/」目錄下創件名字為demoX的設備文件*/
for(i=0; i<DEVICE_COUNT; i++){ //最多可創建255個設備節點(register_chrdev函數會申請0-254范圍的從設備號)
demo_device = device_create(demo_class,NULL, MKDEV(major, i), NULL,"demo%d",i);
if(IS_ERR(demo_device)){
retval = PTR_ERR(demo_device);
goto device_err;
}
}
return 0;
device_err:
while(i--) //設備節點創建的回滾操作 device_destroy(demo_class,MKDEV(major, i));
class_destroy(demo_class); //刪除設備類
class_err:
unregister_chrdev(major, "demo_chrdev");
chrdev_err:
return retval;
}
static void __exit drvdemo_exit(void)
{
int i;
dem_dbg("[msg]:in mole exit function\n");
/*注銷字元驅動函數,無返回值,major為已分配的主設備號*/
unregister_chrdev(major, "demo_chrdev");
/*刪除設備節點和設備類*/
for(i=0; i<DEVICE_COUNT; i++)
device_destroy(demo_class,MKDEV(major, i));
class_destroy(demo_class);
}
mole_init(drvdemo_init);
mole_exit(drvdemo_exit);
MODULE_LICENSE("Dual BSD/GPL"); //BSD/GPL雙重許可證
MODULE_AUTHOR("hanbo"); //模塊作者(可選)
MODULE_DESCRIPTION("used for studing linux drivers"); //模塊兒簡介(可選)
2、把自己開發的功能增加到Linux內核的配置選項中,使用戶能夠選擇此功能
vi drivers/char/Konfig 在文件結尾,endmenu的前面加入一個config選項
[cpp] view plain
config DEMO_CHARDEV
bool "demo_chardev driver for hanbo chardev boards"
default y
help
this is CHARDEV driver for hanbo chardev boards.
3、構建或修改Makefile,根據用戶的選擇,將相應的代碼編譯到最終生成的Linux內核中去
make menuconfig(添加配置選項)(如果提示找不到「ncurses」庫則執行命令: sudo apt-get install libncurses5-dev )
Device driver -->
character devices ->
[*] demo_chardev driver for hanbo chardev boards
4、vi drivers/char/Makefile 添加內容如下:
..........
obj-$(CONFIG_DEMO_CHARDEV) +=demo_chardev.o (添加)
obj-$(CONFIG_JS_RTC) +=js-rtc.o(自帶)
js-rtc-y = rtc.o (自帶)
5、make (更新內核鏡像到開發板)
6、交叉編譯測試程序,放到開發板運行
arm-linux-gcc-gcc test.c -o demo
test.c
[cpp] view plain
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
int fd1 = 0, fd2 = 0;
unsigned char buf1[100] = "I am a test program!";
unsigned char buf2[100] = {0};
int retval;
//以讀寫、不阻塞方式打開設備文件
fd1 = open("/dev/demo0", O_RDWR | O_NONBLOCK);
if(fd1 < 0){
perror("open /dev/demo1");
goto out;
}
//以只讀、阻塞方式打開設備文件
fd2 = open("/dev/demo1", O_RDONLY);
if(fd2 < 0){
perror("open /dev/demo2");
goto out;
}
//成功返回實際寫入位元組數,失敗返回負值
retval = write(fd1, buf1, strlen(buf1)+1);
if(retval < 0){
perror("writing fd1 failed!");
goto out;
}
printf("<user space>: write bytes: %d write content: %s\n", retval, buf1);
//成功返回實際讀取位元組數,失敗返回負值
retval = read(fd2, buf2, sizeof(buf2));
if(retval < 0){
perror("reading fd2 failed!");
goto out;
}
printf("<user space>: read bytes: %d read content: %s\n", retval, buf2);
return 0;
out:
if(fd1 > 0)
close(fd1);
if(fd2 > 0)
close(fd2);
return -1;
}
二、手動載入驅動 .ko文件
1、上面的demo_chardev.c文件放到內核下編譯生成 .ko文件
Makefile
[cpp] view plain
#如果已定義KERNELRELEASE,說明是由內核構造系統調用的
#可以利用內建語句
ifneq ($(KERNELRELEASE),)
obj-m +=demo_chrdev.o
#此時由內核構造系統調用
else
#定義並記錄內核源碼路徑
KERNELDIR = /home/hanbo/linux-2.6.35.7(自己源碼路徑,2.6.35.7指當前內核版本)
#記錄當前工程目錄
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) moles
@rm -rf *.o .t* .m* .*.cmd *.mod.c *.order *.symvers
endif
clean:
rm -rf *.ko *.o .t* .m* .*.cmd *.mod.c *.order *.symvers
2、 然後用命令載入 .ko 驅動
lsmod 列舉當前系統中的所有模塊
lsmod 列舉當前系統中的所有模塊
rmmod xxx 卸載指定模塊(不需要.ko後綴)
3、如果自己編譯的代碼中沒有用
/*創建設備類*/
demo_class = class_create(THIS_MODULE,"demo_class");
/*創建設備文件,通知用戶在「/dev/」目錄下創件名字為demoX的設備文件*/
demo_device = device_create(demo_class,NULL, MKDEV(major, i), NULL,"demo%d",i);
則需要手動添加設備節點
mknod /dev/demo1 c 主設備號 0
mknod /dev/demo2 c 主設備號 1
注意:若卸載時出現提示 rmmod:chdir(2.6.35.7):No such file or directory
則在開發板根文件系統下創建目錄:/lib/moles/2.6.35.7(跟當前內核版本同名)
㈧ BSD中回收站如何實現
第一步:在$HOME目錄下建立一個 .Trash 文件夾和一個 .del 可執行文件。
.del 可執行文件內容如下: mv $* $HOME/.Trash
第二步:在$HOME/.profile中加上這么兩句:PATH=$PATH: $HOME
alias rm=".del"
執行徹底刪除使用: /bin/rm -rf $HOME/.Trash/*
㈨ 請問下freebsd 下怎麼手動分區 詳細點吧
2.6 分配磁碟空間
您的第一個工作就是要分配 FreeBSD 用的硬碟空間以便 sysinstall 先做好一些准備。 為了完成這個工作,您必須先對 FreeBSD 如何找到磁碟信息做一個了解。
2.6.1 BIOS 磁碟編號
當您在系統上安裝配置 FreeBSD 之前,有一個重要的事情一定要注意,尤其是當您有多個硬碟的時候。
在 pc 架構,當您跑像 MS-DOS® 或 Microsoft® Windows® 這種跟 BIOS 相關的操作系統的時候,BIOS 有能力改變正常的磁碟順序, 然後這些操作系統會跟著 BIOS 做改變。這讓使用者不一定非要有所謂的 「primary master」 硬碟開機。許多人發現最簡單而便宜備份系統的方式就是再去買一塊一模一樣的硬碟,然後定期將數據從第一塊硬碟復制到第二個硬碟,使用 Ghost® 或 XCOPY。所以,當第一個硬碟死了, 或者是被病毒破壞,或者有壞軌道,他們可以調整 BIOS 中的開機順序而直接用第二塊硬碟開機。就像交換硬碟的數據線,但是無需打開機箱。
比較昂貴,配有 SCSI 控制卡的系統通常可以延伸 BIOS 的功能來讓 SCSI 設備 (可達七個) 達到類似改變順序的功能。
習慣於使用這種方式的使用者可能會感到驚訝, 因為在 FreeBSD 中並非如此。FreeBSD 不會參考 BIOS, 而且也不知道所謂的 「BIOS 邏輯磁碟對應」 是怎麼回事。這會讓人感覺很疑惑,明明就是一樣的硬碟而且資料也完全從另一塊復制過來的, 結果卻沒辦法像以前那樣用。
當使用 FreeBSD 以前,請將 BIOS 中的硬碟開機順序調回正常的順序,並且以後不要再改變。 如果一定要交換硬碟順序, 那請用硬體的方式, 打開機箱並調整調線。
2.6.2 使用 FDisk 創建分區
注意: 如果不再做改變,數據將會寫進硬碟。如果您犯了一個錯誤想重新開始, 請選擇 sysinstall 安裝程序的退出按鈕(exit)。或按 U 鍵來 Undo 操作。如果您的操作沒有結果, 您總可以重新啟動您的計算機來達到您的目的。
當您在 sysinstall 主菜單選擇使用標准安裝後,您會看到下面的信息:
Message
In the next menu, you will need to set up a DOS-style ("fdisk")
partitioning scheme for your hard disk. If you simply wish to devote
all disk space to FreeBSD (overwriting anything else that might be on
the disk(s) selected) then use the (A)ll command to select the default
partitioning scheme followed by a (Q)uit. If you wish to allocate only
free space to FreeBSD, move to a partition marked "unused" and use the
(C)reate command.
[ OK ]
[ Press enter or space ]
如屏幕指示,按 Enter 鍵,然後您就會看到一個列表列出所有在探測設備的時候找到的硬碟。 圖 2-13 範例顯示的是有找到兩個 IDE 硬碟的情形,這兩個硬碟分別為 ad0 和 ad2。
圖 2-13. 選擇要分區的硬碟
您可能正在奇怪,為什麼 ad1 沒有列出來?為什麼遺失了呢?
試想,如果您有兩個 IDE 硬碟,一個是在第一個 Primary master, 一個是 Secondary master,這樣會發生什麼事呢? 如果 FreeBSD 依照找到的順序來為他們命名,如 ad0 和 ad1 那麼就不會有什麼問題。
但是,現在問題來了。如果您現在想在 primary slave 加裝第三個硬碟,那麼這個硬碟的名稱就會是 ad1,之前的 ad1 就會變成 ad2。這會造成什麼問題呢?因為設備的名稱 (如 ad1s1a)是用來尋找文件系統的,因此您可能會發現,突然,您有些文件系統從此無法正確地顯示出來, 必須修改 FreeBSD 配置文件(譯註:/etc/fstab)才可以正確顯示。
為了解決這些問題,在配置內核的時候可以叫 FreeBSD 直接用 IDE 設備所在的位置來命名,而不是依據找到的順序。使用這種方式的話, 在 secondary master 的 IDE 設備就 永遠是 ad2,即使您的系統中沒有 ad0 或 ad1 也不受影響。
此為 FreeBSD 內核的默認值,這也是為什麼上面的畫面只顯示 ad0 和 ad2 的原因。畫面上這台機器的兩顆硬碟是裝在 primary 及 secondary 的 master 上面;並沒有任何一個硬碟安裝在 slave 插槽上。
您應該選擇您想安裝 FreeBSD 的硬碟,然後按下 [ OK ]。之後 FDisk 就會開始,您會看到類似 圖 2-14的畫面。
FDisk 的顯示畫面分為三個部分。
第一部分是畫面上最上面兩行,顯示的是目前所選擇的硬碟的信息。 包含它的 FreeBSD 名稱、硬碟分布以及硬碟的總容量。
第二部分顯示的是目前選擇的硬碟上有哪些分區,每個分區的開始及結束位置、所佔容量、FreeBSD 名稱、它們的描述以及類別(sub-type)。此範例顯示有兩個未使用的小分區, 還有一個大的 FAT 分區, (很可能是 MS-DOS 或 Windows 的 C: ), 以及一個擴展分區(在 MS-DOS 或 Windows 裡面還可以包含邏輯分區)。
第三個部分顯示 FDisk 中可用的命令。
圖 2-14. 典型的尚未編輯前的 Fdisk 分區表
接下來要做的事跟您要怎麼給您的硬碟分區有關。
如果您要讓 FreeBSD 使用整個硬碟(稍後您確認要 sysinstall 繼續安裝後會刪除所有這個硬碟上的資料),那麼您就可以按 A 鍵(Use Entire Disk )目前已有的分區都會被刪除,取而代之的是一個小的,標示為 unused 的分區,以及一個大的 FreeBSD 分區。之後, 請用方向鍵將游標移到這個 FreeBSD 分區,然後按 S 以將此分區標記為啟動分區。 您會看到類似 圖 2-15 的畫面。注意,在 Flags 欄中的 A 記號表示此分區是 激活 的, 因而啟動將從此分區進行。
要刪除現有的分區以便為 FreeBSD 騰出空間, 您可以將游標移動到要刪除的分區後按 D 鍵。 然後就可按 C 鍵,並在彈出的對話框中輸入將要創建的分區的大小。 輸入合適的大小後按 Enter 鍵。 一般而言, 這個對話框中的初始值是可以分配給該分區的最大值。它可能是最大的鄰接分區或未分配的整個硬碟大小。
如果您已經建立好給 FreeBSD 的分區 (使用像 PartitionMagic®類似的工具), 那麼您可以按下 C 鍵來建立一個新的分區。同樣的,會有對話框詢問您要建立的分區的大小。
圖 2-15. Fdisk 分區使用整個硬碟
完成後,按 Q 鍵。您的變更會存在 sysinstall 中, 但是還不會真正寫入您的硬碟。
2.6.3 安裝多重引導
在這步驟您可以選擇要不要安裝一個多重引導管理器。 一般而言,如果碰到下列的情形,您應該選擇要安裝多重引導管理程序。
*
您有一個以上的硬碟,並且 FreeBSD 並不是安裝在第一個硬碟上。
*
除了 FreeBSD,您還有其它的操作系統安裝在同一塊硬碟上,所以您需要在開機的時候選擇要進入哪一個系統。
如果您在這台機器上只安裝一個 FreeBSD 操作系統, 並且安裝在第一個硬碟, 那麼選擇 Standard 安裝就可以了。如果您已經使用了一個第三方的多重引導程序, 那麼請選擇 None。
選擇好配置後請按 Enter。
圖 2-16. Sysinstall 多重引導管理程序
按下 F1 鍵所顯示的在線說明中有討論一些操作系統共存可能發生的問題。
2.6.4 在其它硬碟上創建分區
如果您的系統上有一個以上的硬碟,在選擇完多重引導管理程序後會再回到選擇硬碟的畫面。 如果您要將 FreeBSD 安裝在多個硬碟上,那麼您可以在這里選擇其它的硬碟, 然後重復使用 FDisk 來建立分區。
重要: 如果您想讓 FreeBSD 來管理其它的硬碟, 那麼兩個硬碟都必須安裝 FreeBSD 的多重引導管理程序。
圖 2-17. 離開選擇硬碟畫面
Tab 鍵可以在您最後選擇的硬碟、 [ OK ] 以及 [ Cancel ] 之間進行切換。
用 Tab 鍵將游標移動到 [ OK ] 然後按 Enter 鍵繼續安裝過程。
2.6.5 使用 bsdlabel 創建分區
您現在必須在剛剛建立好的 slice 中規劃一些 label。 請注意,每個 label 的代號是 a 到 h,另外,習慣上 b、 c 和 d 是有特殊用途的,不應該隨意變動。
某些應用程序可以利用一些特殊的分區而達到較好的效果,尤其是分區分散在不同的硬碟的時候。但是,現在您是第一次安裝FreeBSD,所以不需要去煩惱如何分割您的硬碟。最重要的是,裝好FreeBSD然後學習如何使用它。當您對FreeBSD有相當程度的熟悉後,您可以隨時重新安裝FreeBSD,然後改變您分區的方式。
下面的範例中有四個分區 —— 一個是磁碟交換分區,另外三個是文件系統。
表 2-2. 為第一個硬碟分區
分區 文件系統 大小 描述
a / 512 MB 這是一個根文件系統(root filesystem)。 任何其它的文件系統都會掛在根目錄(譯註:用根目錄比較親切) 下面。 512 MB 對於此目錄來說是合理的大小,因為您往後並不會在這里存放太多的數據; 在安裝 FreeBSD 後會用掉約 128 MB 的根目錄空間。 剩下的空間是用來存放臨時文件用的,同時,您也應該預留一些空間,因為以後的FreeBSD版本可能會需要較多的 /(根目錄)空間。
b N/A 2-3 x RAM
b 分區為系統磁碟交換分區 (swap space)。選擇正確的交換空間大小可是一門學問唷。一般來說,交換空間的大小應該是您系統上內存(RAM) 大小的2到3倍。 交換空間至少要有 64 MB。因此, 如果您的電腦上的 RAM 比 32 MB 小, 請將交換空間大小設為 64 MB。
如果您有一個以上的硬碟, 您可以在每個硬碟上都配置交換分區。FreeBSD 會利用每個硬碟上的交換空間,這樣做能夠提高 swap 的性能。 如果是這種情形,先算出您總共需要的交換空間大小 (如128 MB),然後除以您擁有的硬碟數目(如2塊),算出的結果就是每個硬碟上要配置的交換空間的大小。 在這個例子中, 每個硬碟的交換空間為 64 MB。
e /var 256 MB 至 1024 MB /var 目錄會存放不同長度的文件、日誌以及其它管理用途的文件。大部分這些文件都是 FreeBSD 每天在運行的時候會讀取或是寫入的。當這些文件放在另外的文件系統(譯註:即/var)可以避免影響到其它目錄下面類似的文件存取機制。
f /usr 剩下的硬碟空間 (至少 2 GB) 您所有的其它的文件通常都會存在/usr 目錄以及其子目錄下面。
警告: 上面例子中的數值僅限於有經驗的用戶使用。 通常我們鼓勵用戶使用 FreeBSD 分區編輯器中一個叫做 Auto Defaults的自動分區布局功能。
如果您要將FreeBSD安裝在一個以上的硬碟, 那麼您必須在您配置的其它分區上再建立分區。最簡單的方式就是在每個硬碟上建立兩個分區,一個是交換分區, 一個是文件系統分區。
表 2-3. 為其它磁碟分區
分區 文件系統 大小 描述
b N/A 見描述 之前提過,交換分區是可以跨硬碟的。但是,即使 a 分區沒有使用,習慣上還是會把交換分區放在 b 分區上。
e /diskn 剩下的硬碟空間 剩下的空間是一個大的分區,最簡單的做法是將之規劃為 a分區而不是e分區。然而, 習慣上a分區是保留給根目錄 (/) 用的。您不一定要遵守這個習慣,但是 sysinstall 會,所以照著它做會使您的安裝比較清爽、干凈。您可以將這些文件系統掛在任何地方,本範例建議將它們掛在 /diskn 目錄,n 依據每個硬碟而有所不同, 但是,您喜歡的話也可將它們掛在別的地方。
分區的配置完成後,您可以用sysinstall. 來建立它們了。您會看到下面的信息:
Message
Now, you need to create BSD partitions inside of the fdisk
partition(s) just created. If you have a reasonable amount of disk
space (200MB or more) and don't have any special requirements, simply
use the (A)uto command to allocate space automatically. If you have
more specific needs or just don't care for the layout chosen by
(A)uto, press F1 for more information on manual layout.
[ OK ]
[ Press enter or space ]
按下 Enter 鍵開始FreeBSD分區表編輯器,稱做 Disklabel。
圖 2-18 顯示您第一次執行 Disklabel的畫面。 畫面分為三個區域。
前幾行顯示的是您正在編輯的硬碟以及您正在建立的 slice 位於哪個分區上。(在這里,Disklabel 使用的是 分區名稱 而不是 slice 名)。 此畫面也會顯示 slice 還有多少空間可以使用;亦即,有多餘的空間,但是尚未指派分區。
畫面中間區域顯示已建立的區區,每個分區的文件系統名稱、所佔的大小以及一些關於建立這些文件系統的參數選項。
下方的第三區顯示在 Disklabel 中可用的按鍵。
圖 2-18. Sysinstall Disklabel 編輯器
Disklabel 您可以自動配置分區以及給它們預設的大小。這些默認的分區是由內部的分區尺寸演算法根據磁碟的大小計算出的。 您可以按 A鍵使用此功能。您會看到類似 圖 2-19的畫面。根據您硬碟的大小,自動分配所配置的大小不一定合適。但是沒有關系, 您並不一定要使用預設的大小。
注意: 默認情況下會給/tmp 目錄一個獨立分區,而不是附屬在 / 之下。這樣可以避免將一些臨時文件放到根目錄中(譯註: 可能會用完根目錄空間)。
圖 2-19. Sysinstall Disklabel 編輯器-使用自動配置
如果您不想使用默認的分區布局, 則需要用方向鍵移動游標並選中第一個分區, 然後按 D 來刪除它。 重復這一過程直到刪除了所有推薦的分區。
要建立第一個分區 (a,作為 / —— 根文件系統), 請確認您已經在屏幕頂部選中了正確的 slice, 然後按 C。 接下來將出現一個對話框, 要求您輸入新分區的尺寸 (如 圖 2-20 所示)。您可以輸入以塊為單位的尺寸,或以 M 表示MB、 G 結尾表示GB, 或者 C 表示柱面數的方式來表達尺寸。
圖 2-20. 根目錄使用空間
如果使用此處顯示的默認尺寸, 則會創建一個占滿整個 slice 空餘空間的 partition。如果希望使用前面例子中描述的 partition 尺寸, 則應按 Backspace 鍵刪除這些數字, 並輸入 512M,如 圖 2-21 所示。 然後, 按下 [ OK ]。
圖 2-21. 編輯要分區大小
輸入完大小後接著問您要建立的分區是文件系統還是交換空間,如 圖 2-22所示。第一個分區是文件系統,所以確認選擇 FS後按Enter 鍵。
圖 2-22. 選擇根分區類型
最後,因為您要建立的是一個文件系統,所以必須告訴 Disklabel 這個文件系統要掛接在什麼地方,如 圖 2-23所示。根文件系統的掛接點 /, 所以請輸入 /,然後按 Enter鍵。
圖 2-23. 選擇根掛接點
剛剛製作好的分區會顯示在畫面上。您應該重復上述的動作以建立其它的分區。當建立交換空間的時候,系統不會問您要將它掛接在哪裡,因為交換空間是不用掛在系統上的。 當您在建立最後一個分區/usr的時候, 您可以直接使用默認的大小,即所有此分區剩餘的空間。
您最終的 FreeBSD DiskLabel 編輯器畫面會類似 圖 2-24, 實際數字按您的選擇而有所不同。按下 Q 鍵完成分區的建立。
㈩ 如何卸載freebsd
在Vista下使用磁碟格式化工具顯示出來FreeBSD的分區,然後格式化為NTFS分區即可