Unix程式設計/應用問答中文版 ---21.FreeBSD相關問題(轉)

post0發表於2007-08-10
Unix程式設計/應用問答中文版 ---21.FreeBSD相關問題(轉)[@more@]

作者:不祥 [文章出自: ]

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 -n mbr -l 0200 -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 XXXX:0103 mov bx, 0400 XXXX:0106 mov cx, 0001 XXXX:0109 mov dx, 0080 XXXX:010C int 13 XXXX:010E int 3 XXXX:010F

-g=100

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 XXXX:0103 mov bx, 0200 XXXX:0106 mov cx, 0001 XXXX:0109 mov dx, 0080 XXXX:010C int 13 XXXX:010E int 3 XXXX:010F

-g=100 -q

第2個硬碟驅動器號是81h,修改DX暫存器賦值語句即可。

A: All of Solaris/FreeBSD/Linux Users

dd if= of=/dev/... bs=512 count=1

^^^^^^^^ 對應要處理的物理硬碟裝置

21.6 x86/FreeBSD 4.x下不能cp覆蓋/kernel

Q: 重新編譯核心後用cp命令無法覆蓋/kernel

A: deepin

# 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 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=""

static_routes=" ..."

route_="符合route add命令的語法格式"

route_="符合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

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 & scz 2001-11-20 09:42

0) vim主站在

1) # which cvsup

/usr/local/bin/cvsup

如果沒有,就用去搜一個好了,以"cvsup-bin tgz"做關鍵字

# wget ~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 # whic vim

/usr/local/bin/vim

21.11 FreeBSD下vi輸入中文會顯示x??x??

A: Shen Chuan-Hsing

這通常都是設定了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

通常是使用了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

某些主機快速訪問你的主機上一些沒有開放的埠,你的主機正在回覆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

&nbs

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940448/,如需轉載,請註明出處,否則將追究法律責任。

相關文章