GB | BIG5
|
| 首頁 > 編程技術 > C/C++ > 正文 |
 |
| Unix編程/應用問答中文版 ---21.FreeBSD相關問題 |
| 本文出自:http://www.nsfocus.com 維護:小四 (2002-11-15 06:02:00) |
21. FreeBSD相關問題
21.1
21.2 如何將一個512字節的文件寫入主引導扇區
21.3
21.4
21.5
21.6 x86/FreeBSD 4.x下不能cp覆蓋/kernel
21.7 x86/FreeBSD下如何設置路由
21.8
21.9 什是locale
21.10 用cvsup安裝vim
21.11 FreeBSD下vi輸入中文會顯示\x??\x??
21.12
21.13
21.14
21.15 UDMA ICRC error是什意思
21.16 Limiting closed port RST response什意思
21.17
21.18
21.19
21.20
--------------------------------------------------------------------------
21.2 如何將一個512字節的文件寫入主引導扇區
A: All of DOS Programmers 2001-10-16 18:05
這個問題如果在90年代初MS-DOS盛行的時候出現,是要被人砍死的,如今時過境遷,
居然能進入這份Unix文檔,權當是一種追憶吧。所謂主引導扇區就是硬盤0柱面、0磁
頭、1扇區。啟動DEBUG,
-f 0200 l 0200 0 <-- 從0200h處開始清零,長512字節
-n mbr <-- 假設我們的要處理的文件名為mbr
-l 0200 <-- 讀到0200h處
-d 03be 03ff <-- 檢查分區表
XXXX:03B0 00 00 ..
XXXX:03C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
XXXX:03D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
XXXX:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
XXXX:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
-
-a 100 <-- 讀主引導扇區的匯編代碼
XXXX:0100 mov ax, 0201 <-- 讀取一個扇區,ah=02(功能碼),al=01(扇區總數)
XXXX:0103 mov bx, 0400 <-- 讀取存放在0400h處,長512字節
XXXX:0106 mov cx, 0001 <-- ch=00(柱面號,10bit),cl=01(扇區號,6bit)
XXXX:0109 mov dx, 0080 <-- dh=00(磁頭號),dl=80h(驅動器號)
XXXX:010C int 13 <-- int 13h 磁盤I/O BIOS
XXXX:010E int 3 <-- 單步中斷,可以換成int 20h
XXXX:010F
-g=100 <-- 從0100h處開始執行
AX=0050 BX=0400 CX=0001 DX=0080 SP=FFEE BP=0000 SI=0000 DI=0000
DS=XXXX ES=XXXX SS=XXXX CS=XXXX IP=010E NV UP EI PL NZ NA PO NC
XXXX:010E CC INT 3
-d 05be 05ff <-- 檢查分區表
XXXX:05B0 80 01 ..
XXXX:05C0 01 00 06 FE 3F 7F 3F 00-00 00 41 60 1F 00 00 00 ....?.?...A`....
XXXX:05D0 01 80 0F FE FF FF 80 60-1F 00 22 3C A0 01 00 00 .......`.."<....
XXXX:05E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
XXXX:05F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
-
-m 05be l 40 03be <-- 復制分區表
-d 03be l 40 <-- 確認分區表復制成功
XXXX:03B0 80 01 ..
XXXX:03C0 01 00 06 FE 3F 7F 3F 00-00 00 41 60 1F 00 00 00 ....?.?...A`....
XXXX:03D0 01 80 0F FE FF FF 80 60-1F 00 22 3C A0 01 00 00 .......`.."<....
XXXX:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
XXXX:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 ..............
-a 100 <-- 寫主引導扇區的匯編代碼
XXXX:0100 mov ax, 0301 <-- 寫一個扇區,ah=03(功能碼),al=01(扇區總數)
XXXX:0103 mov bx, 0200 <-- 待寫入數據存放在0200h處,長512字節
XXXX:0106 mov cx, 0001 <-- ch=00(柱面號,10bit),cl=01(扇區號,6bit)
XXXX:0109 mov dx, 0080 <-- dh=00(磁頭號),dl=80h(驅動器號)
XXXX:010C int 13 <-- int 13h 磁盤I/O BIOS
XXXX:010E int 3 <-- 單步中斷,可以換成int 20h
XXXX:010F
-g=100 <-- 從0100h處開始執行
-q <-- 退出DEBUG
第2個硬盤驅動器號是81h,修改DX寄存器賦值語句即可。
A: All of Solaris/FreeBSD/Linux Users
dd if=<path to file> of=/dev/... bs=512 count=1
^^^^^^^^ 對應要處理的物理硬盤設備
21.6 x86/FreeBSD 4.x下不能cp覆蓋/kernel
Q: 重新編譯內核用cp命令無法覆蓋/kernel
A: deepin <deepin@nsfocus.com>
# ls -lo /kernel
-rwxr-xr-x 1 root wheel schg /kernel*
^^^^注意這裡,類似Linux的chattr那些東西
# chflags noschg /kernel
參看CHFLAGS(1)、INSTALL(1)手冊頁。這樣修改可以cp覆蓋/kernel了。最恢復
chflags設置
# chflags schg /kernel
21.7 x86/FreeBSD下如何設置路由
A: backend <backend@nsfocus.com> 2001-10-25 11:33
/etc/defaults/rc.conf或者/etc/rc.conf中會有這樣的設置
--------------------------------------------------------------------------
defaultrouter="NO" # Set to default gateway (or NO).
static_routes="" # Set to static route list (or leave empty).
--------------------------------------------------------------------------
下面分析static_routes的用法,從/etc/rc.network腳本中可以看到這樣的處理
--------------------------------------------------------------------------
# Configure routing
#
case ${defaultrouter} in
[Nn][Oo] | '')
;;
*)
static_routes="default ${static_routes}"
route_default="default ${defaultrouter}"
;;
esac
# Set up any static routes. This should be done before router discovery.
#
if [ -n "${static_routes}" ]; then
for i in ${static_routes}; do
eval route_args=\$route_${i}
route add ${route_args}
done
fi
--------------------------------------------------------------------------
注意eval命令導致二次變量替換,對上述腳本分析可知static_routes用法如下
--------------------------------------------------------------------------
defaultrouter="<IP>"
static_routes="<name1> <name2> ..."
route_<name1>="符合route add命令的語法格式"
route_<name2>="符合route add命令的語法格式"
... ...
--------------------------------------------------------------------------
舉例說明
--------------------------------------------------------------------------
defaultrouter="192.168.0.1"
static_routes="entry1 entry2"
route_entry1="-net 10.10.1.0 -netmask 255.255.255.0 -gateway 192.168.254.1"
route_entry2="-net 10.10.2.0 -netmask 255.255.255.0 -gateway 192.168.254.2"
--------------------------------------------------------------------------
當然,你可以不用兩個rc.conf文件,而是在/etc/rc.local中直接用route命令增加
路由。
21.9 什是locale
A: Shen Chuan-Hsing <statue@freebsd.sinica.edu.tw>
locale 指定一組C語言處理自然語言(文字)的方式,也可以簡單地說,locale反映了
一組"地區性語言"的配置信息
LC_ALL 代表所有的locale(如下)
LC_CTYPE 字符定義(包含字符分類與轉換規則)
LC_MESSAGES 信息顯示
LC_TIME 時間格式
LC_NUMERIC 數字格式
LC_MONETARY 貨幣格式
LC_COLLATE 字母順序與特殊字符比較順序
其中與一般使用者息息相關的是是LC_CTYPE與LC_MESSAGES。LC_CTYPE直接關系到某
些字符或碼在目前locale下是否可顯示?要如何轉換編碼?對應到哪一個字?等等。
LC_MESSAGES則關系到軟件的信息輸出是否符合地域性,例如:我們需要的是中文。
而一個真正完整支持locale系統,是當使用者在shell prompt下,直接設置好環境變
量就馬上切換到那種語言了,例如:
% export LC_CTYPE=zh_TW.Big5
設置locale的字符定義為台灣地區的Big5繁體中文碼定義。有了正確的locale定義,
使得任何地區的的文字,只要在加入適當的locale data之,C Library就能正確地
處理軟件顯示信息,而我們使用的[中文]當然也不例外。
21.10 用cvsup安裝vim
A: deepin <deepin@nsfocus.com> & scz <scz@nsfocus.com> 2001-11-20 09:42
0) vim主站在http://www.vim.org/
1) # which cvsup
/usr/local/bin/cvsup
如果沒有,就用www.google.com去搜一個好了,以"cvsup-bin tgz"做關鍵字
# wget http://people.freebsd.org/~jdp/s1g/i386-nogui/cvsup-16.1e.tgz
# pkg_add cvsup-16.1e.tgz
2) # cd /usr/share/examples/cvsup
# cp ports-supfile scz
# vi scz
# cvsup -g -L 2 scz
--------------------------------------------------------------------------
#
# cvsup配置文件
#
*default host=cvsup.cn.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
#ports-all
ports-editors
--------------------------------------------------------------------------
3) # cd /usr/ports/editors/vim
# make -DWITHOUT_X11 install <-- 否則必須在X下使用vim
# whic vim
/usr/local/bin/vim <-- vim直接支持輸入中文
21.11 FreeBSD下vi輸入中文會顯示\x??\x??
A: Shen Chuan-Hsing <statue@freebsd.sinica.edu.tw>
這通常都是設定了LC_CTYPE為zh_TW.Big5(對大陸是zh_CN.EUC)或是沒設定LC_CTYPE
才會發生的問題,在~/.cshrc中加上下面的alias即可:
alias vi 'env LC_CTYPE=en_US.ISO_8859-1 vi'
參看PRINTENV(1)手冊頁了解更多env命令細節。直接改用vim也可以支持中文。
21.15 UDMA ICRC error是什意思
Q: 在console上出現錯誤信息"UDMA ICRC error writing... ...",什意思
A: tt <warning3@nsfocus.com>
通常是使用了40線的IDE硬盤線,然而硬盤被設置成使用DMA模式,這種模式需要80線
硬盤線。也有可能是您的硬盤不支持DMA方式。解決方法有幾種
1) 換用一根80線的IDE硬盤線(沒幹過)
2) 在CMOS BIOS中關閉對UDMA的支持
3) 在FreeBSD中關閉對UDMA的支持
vi /etc/sysctl.conf
hw.atamodes=pio,pio,pio,pio,
這樣做,可能會降低硬盤速率。
21.16 Limiting closed port RST response什意思
Q: console上出現"Limiting closed port RST response",什意思
A: tt <warning3@nsfocus.com>
某些主機快速訪問你的主機上一些沒有開放的端口,你的主機正在回復RST報文,這
是正常反應。但FreeBSD內核限制了每秒鐘回復RST報文的數量,以防止發生可能的
DoS攻擊。例如,如果攻擊者通過偽造源IP來向你的未開端口發送大量連接請求,就
可能誘使你的主機向該主機發送RST報文。這可能導致受害主機所在網絡的帶寬佔用。
如果你不想看到上述信息,可以打開黑洞模式來停止響應RST報文。這也可以減緩遠
程攻擊者對你的主機的掃描速度。
# sysctl -w net.inet.tcp.blackhole=2
# sysctl -w net.inet.udp.blackhole=1
也可以在/etc/sysctl.conf中增加下列選項使黑洞模式每次啟動都生效
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
Unix編程/應用問答中文版 ---20.shell script問題 (2002-11-14 17:21:54) Unix編程/應用問答中文版 ---19.終端相關問題 (2002-11-14 10:33:14) Unix編程/應用問答中文版 ---17.文件查看問題 18.補丁相關問題 (2002-11-06 06:02:01) Unix編程/應用問答中文版 ---16.庫相關問題 (2002-11-05 06:02:01) Unix編程/應用問答中文版 ---14.一些小工具的使用 15.32-bit/64-bit相關問題 (2002-11-04 06:02:00) Unix編程/應用問答中文版 ---12.日志相關問題 13.進程相關問題 (2002-11-01 06:02:00) Unix編程/應用問答中文版 ---11. package相關問題 (2002-10-31 06:02:00) Unix編程/應用問答中文版 ---10.網卡相關問題 (2002-10-30 06:02:01) Unix編程/應用問答中文版 ---9.圖形界面相關問題 (2002-10-29 06:02:00) Unix編程/應用問答中文版 ---8.Solaris內核編程相關問題 (2002-10-28 06:02:00)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |