個人心情和 Linux / FreeBSD 等技術

2007/11/17

最近好忙 = =

忙學校網站之餘還要準備12/5、12/12的資訊研習講義內容

筆記一下內容

一、資訊素養議題
 包含網路倫理、智慧財產權、資訊安全等 (預計1小時結束)

二、自由軟體議題
 1.介紹自由軟體的開放源碼(Open Source)觀念
 2.介紹Open Source的作業系統 (簡單帶過好了...老實說六小時根本講不到什麼)
 3.文書處理 OpenOffice運用 (writer、Calc、Impress、Draw)
 4.網頁設計 Nvu 操作
 5.影像處理 GIMP 操作
 6.瀏覽器 FireFox 簡介

大概先這樣吧,最近努力打講義中。

os.13號又從中橫滑壘…左手擦傷...Orz 手臂抽痛中,
  右邊摔完換左邊( ︶︿︶)_╭∩╮
  新增蘭嶼地區的危險路段

2007/10/10

網路斷線了四天...

學校網路從星期五晚上跳電,但只剩下50V左右

因為校舍某些燈還有微弱的亮光才知道跳電只跳了一半 ?!

還好主機有不斷電,但是我們的小烏龜就在星期六

修復電力後莫名其妙的壞了..內部完全PING不到

但是中華電信卻從外部PING的到

到了星期二才有工作人員來看看.....

沒想到只看了小烏龜燈號有沒有正常,然後留下了一組

台東工作站的電話人就走了  ̄▽ ̄|| os.誰才是中華電信員工呀

最後留下我電話中聯絡測試他們才確定是小烏龜壞了

那位領班先生馬上寄(飛機)了新的小烏龜進來

下午3點半左右終於結束了沒有網路的日子

學校中因為這次跳電還壞了一台router,電腦教室教師用的電腦也

開不起來啦 Orz

心得:

下次發現電壓不穩的跳電情況直接切斷學校總電源好了...

全部斷電比跳電跳一半的好一點 . . .

2007/09/29

東清的月亮

928日的夜晚,東清今晚的月亮看起來像是

月餅內的蛋黃餡料。不仔細看還以為是落日呢。

2007/09/03

防止主機內容被挖到搜尋網站上

在網頁根目錄下touch一個robots.txt
內容為
User-agent: *
Disallow: /

2007/08/20

Enrique Iglesias Do You Know



女主角不錯看 XDD

fail2ban這程式

無意間翻到威力寰這篇讓我心動了一下
過去只針對sshd安裝了denyhosts,但鑒於有安裝apache
等服務還是覺得不太安全來試裝了一下fail2ban,
在安裝前先把iptables給裝好

Debian ETCH
$sudo aptitude install iptables fail2ban

開始設定fail2ban
$sudo vi /etc/fail2ban/jail.local (拷貝/etc/fail2ban/jail.conf)
[DEFAULT]

ignoreip = 127.0.0.1 (空白鑑隔開填入要信任的ip位置)
bantime = -1 (設成了永久ban掉..)
maxretry = 20 (設定20次重試~)

[ssh]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 20


[apache]

enabled = true
port = http
filter = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 20

設定完後重跑

$sudo /etc/init.d/fail2ban restart

收工~
參考資料
Willie's Blog


2007/08/13

HTTPS on Debian ETCH

我是用光碟安裝apache2的,不知道為什麼沒裝到產生憑證的程式
,另外查了一下apache-ssl這個套件則會安裝1.3x版的apache,
只好手動安裝產生憑證的程式囉~

1.$sudo aptitude install ca-certificates ssl-cert openssl

裝完後應該會有make-ssl-cert(本來是apache2-ssl-certificate),
印象中這隻程式應該是interactive mode才對,但是裝了卻不是這麼回事
( ̄_ ̄;)

2.只好自己手動打指令產生
$sudo openssl req $@ -new -x509 -days 365 -nodes -out \
/etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

3.設定權限
$sudo chmod 600 /etc/apache2/apache.pem

4.讓apache可以調用ssl模組
$sudo a2enmod ssl

>Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

5.新增port 443
$sudo vi /etc/apache2/ports.conf
加入 Listen 443

6.最後修改/etc/apache2/sites-enabled/000-default
把VirtualHost *:80到結束/VirtualHost的內容複製一次
貼到底下並把"*:80" 改成"*:443"

7.最後重跑apache
$sudo apache2ctl restart

2007/08/04

蘭嶼的不知名果實

剛美茜姐從路邊的樹上採來的吃起來像是杏仁,
還脆脆的,真是不錯吃 XD
達悟族都很熱情呀~
補張圖

2007/08/03

島唄

看來是沖繩的民歌

夏川里美版本


The Boom 版本


GACKT

2007/08/02

簡單的Mysql語法

最近灌xoops要用到 = =
先筆記一下

進入資料庫
shell> mysql -h host -u user -p
Enter password: ********

伺服器上當前存在什麼資料庫
mysql> SHOW DATABASES;

創建資料庫
mysql> CREATE DATABASE dbname

嘗試存取資料庫
mysql> USE dbname
Database changed

刪除資料庫
mysql> DROP DATABASE dbname

顯示資料庫表的內容
mysql> SHOW TABLES;

取消命令 \c


資料參考
MySQL中文參考手冊

2007/07/18

蘭嶼東清村初到印象

感覺像是回到40年前的農家社會,路上隨時會看到家畜,像是

雞、豬、狗和很多的羊。在我宿舍旁邊不時可以聽到公雞的啼叫和

羊的咩咩聲,重點是這些家畜還不會怕人,幾隻公雞看到我的出現

還會一直往我這走來 (喂喂~我身上沒帶飼料呀) 真怕幾位公雞大哥

一個不爽會啄我。還有這邊的羊咩咩已經可以當路霸了,話說就在

昨天我一邊騎車一邊載著不醒人事的幹事騎在中橫道路上,在一個

連續彎路的下坡上忽然發現一群羊橫越在馬路上,還趴的真舒服呢

Orz,嚇的我緊急煞車,羊群看到機車的大燈才紛紛閃避,我彷彿

看到了一群羊咩咩對我白眼 (迷之聲~這邊的動物也講究路權的嗎?)

不過在路上能看到這麼多不怕人類的動物心情還是很好 XD,

在台灣很難看的到的景象呀

2007/07/13

消失了快一個半月

最近一個半月人當兵去了,經歷了成功嶺三中隊軍事基礎訓和在澄清湖練的專訓

忽然覺得在成功嶺三中隊和澄清湖有種地獄和天堂的強烈反差感。

三中隊就不贅述了 Orz

由於專訓考差了,之後要到蘭嶼去服役一年一個月XD。

不過蘭嶼和南投縣仁愛鄉的發祥國小比起來,我還是比較偏愛蘭嶼。

最近查資料忽然發現了金曲歌王 陳建年的blog

對蘭嶼島的原住民文化介紹的蠻詳細的,

話說陳建年的歌聲真好

希望未來的一年內能看到蘭嶼上的珠光鳳蝶和蘭嶼角鴞 XD


ps. willie 要慎重考慮還要不要當替代役呀~~

2007/05/23

淚光閃閃

看完電影再重聽一次這首歌,又讓我掉眼淚了...
據說歌曲由來就是紀念去世的哥哥

2007/05/20

cdrecord & mkisofs

語法
cdrecord [general options] dev=device [track option] track1...trackn

dev
的語法是 dev= scsibus,target,lun 或是 dev= target,lun.

scsibustargetlun 都是整數數字。這些數字代表裝置

的位置,如果你有 SCSI介面的裝置,WindowsXP的裝置

管理員中也會看到類似的代號。


cdrecord
是完全基於 SCSIbus 的命令,所以基本能夠對應所

有的SCSI燒錄機,而因 ide-scsi 驅動程式的關係,在linux

使用IDE或其他規格的控制介面燒錄器,已經不是問題了,因

ide-scsi 核心模組能將IDE燒錄器模擬成 SCSI燒錄器。

scsibus 0
則是預設的 SCSI bus ,可在開機訊息和 log中多留

意你機器上的 SCSI設定。



假如不知道或忘了 dev 的設定值,可以試試 -scanbus 的參

數來掃瞄代號。

# cdrecord -scanbus 只需要作一次把掃得的代號記住,ex: 0,1,0

常用的 General Options

-version
顯示 cdrecord 版本訊息


-v
顯示詳細訊息,用於燒錄時


-dao Disc At Once 模式寫入模式的一種。燒寫光碟時,

Lead-in開始寫起,一次從頭到尾把資料寫完,並且自動

close Disc。用此模式寫入,軌與軌之間將不會有Link Block

(Gap) 產生,所以若以此法複製碟片,子片總長度會和原來的

來源光碟片相同。(建議使用)


-saoDisc at Once相似,兩者最主要的差別是 Disc at Once

在寫之後,此光碟片便無法再寫入資料,但Session at Once

可以利用 Multi-Session 方式再將資料寫入光碟片內。


-tao 寫入模式的一種。燒寫光碟時,一次只寫入一軌,所以寫

入時可以在軌與軌之間中斷。這種寫入模式是用在漸增式寫入

Incremental Recording)的方式上。


Speed=# 這個值也是整數,寫入 CD 的話 speed=1 的速度大約

150 KB/s 1385 kB/s for DVD 。沒有指定寫入速度的話 ,會

/etc/cdrecord.conf 的設定檔中 CDR_SPEED=__ 的值當作預設

寫入速度,如果沒指定這個值的話,則會以所支援的最大速度寫入

如果指定 speed=0 的話,裝置則會以最慢速度寫入(最慢不見得就好

...有時會適得其反造成寫入品質低落,而且也會造成過度耗電和發熱...

,建議速度是燒錄機最大速度砍一半, ex : 16倍就以8倍燒


-multi 多區段寫入,可用於 sao

-format 用在 DVD+RW 等可複寫式的要重新寫入資料前,把RW片清空用。

blank=type format 是用於 CD-RW( all fast )

-data 這種格式簡單來說就是燒錄一般資料使用,會以 Mode 1

寫入。Mode1 Data CD ,光碟的容量計算是以MB為單位,含

所謂的錯誤修正碼 ( ECC ) 於光碟片的每個磁區,其大小為2048

Bytes,可以藉此來修正讀取資料時的錯誤,以保資料的正確性,

通常此種資料結構適用於不允取有絲毫錯誤的資料上。


-mode2 mode2Audio CD & Video CD,光碟的容量計算是以

分鐘為單位,備份像RMVBAVI這種影像檔雖說是影像檔,但仍

然算是mode 1格式... 由於mode 2記錄方式並沒有放入糾錯碼

(因此mode 2寫入往往可以寫入較多資料) 因此,為防mode 2寫入

造成錯誤,造成了mode 2 理論上寫入速度越慢越好。


另外需要用到 mkisofs 這個小程式

語法

mkisofs [ options ] [ -o filename ] path

-o 是指輸出成什麼名字,例如 image image.iso

path 是指哪個目錄下的檔案要燒錄

-r 設定在所有光碟中的檔案為公眾可讀和開啟 Rock Ridg

這種格式能unix檔案系統的特有資訊 (長檔名、擁有者、

權限位元)保存在光碟上且同時保持 ISO 9660 格式的相容性。

-J joliet格式,windows系統需要。


所以看起來會長成這樣子


# mkisofs -rJ -o image.iso path/


ps.
單一檔案如果超過2GB以上的話要改用 -udf 的選項,

udf 格式詳見wiki



最後燒錄

# cdrecord -v -dao speed=8 dev=0,0,0 -data image.iso


參考資料

cdrecord manpage

mkisofs manpage

中文版HowTo

PTT CD-R版

2007/05/10

rsync 保持檔案同步

把指令寫入crontable跑即可~

# rsync -ae ssh your.machine.tw:/usr/local/apache/htdocs > \
/usr/local/apache/htdocs/

不過這樣使用要注意 ssh key 已經安裝到各個機器上了

Dance With Me Tonight

這首歌聽說是K歌情人的導演12歲的兒子寫出來的

2007/05/06

CD-DVD Speed 測出的 Jitter 值如何解釋?

Jitter 的概念,就是指每一個 Pit,Land 的規定長度與實際長度
的差,單位為ns(十億分之一秒)。紅皮書規定了 CD 的 3T-Jitter
值應當小於 35ns 。

在 DVD 的場合,由於加入了資料對於 PLL 時鐘電路信號的偏差,
其 Jitter值的標準並不是以 ns 這個單位來表示,而是以%來表示。
一張質量好的DVD 光碟, Jitter 的範圍應當控制在8%以 下。
但是理論上 Jitter 值越小越好。

就針對刻錄盤而言,Jitter的大小除了受到 Pit 和 Land 長度偏差
的影響之外,還與刻錄深度對於讀取電平的 平衡度(Beta)、Pit
和 Land 之間的跳轉信號清晰度有關係。

請注意,用此功能所測得的 Jitter 曲線是相對值,它可以讓用戶
看到一張光碟上的 Jitter 值的變化趨勢。表徵一張碟片品質的穩
定程度。使用此功能對一張光碟進行測試時,必須結合該光碟的
C1/C2 或者 PI/PO 綜合判斷。

單純使用此功能對 2 張不同的碟片進行 Jitter 測試,來比較其
結果數值的大小是沒有任何實際意義的,也完全不能說明這
2 張光碟的刻錄品質(也包括音質在內)誰好誰壞!

資料來源
PTT bbs CD-R版精華區

2007/05/05

squid 效能等注意事項!

關於 filesystem
  • Linux
    • Reiserfs
      • reiserfs3 works just fine, it's recommended that

      • you mount with noatime and notail options, and

      • for theperformance freaks put the journal on a

      • different spindle

    • ext3
      • another fine blend, the defaults filesystem
      • creation parameters are just good for squid
      • - watch out for the number of inodes - squid
      • cached objects are usually about 12-16 kb in
      • size, make sure you have enough.

    • ext2
      • well, ext2 is a venerable good filesystem. But
      • do youreally want to wait for hours while your
      • FS is being checked?

  • Solaris
    • UFS
      • UFS is the old Solaris File System, which good and stable.
      • Use "noatime" as mount option.

    • ZFS
      • Use ZFS, if you want really high performance for your
      • Squid Cache. ZFS is included in Solaris beginning with
      • Solaris 10.Release 6/06. Use "noatime" as mount option.
關於RAID
squid 對於 RAID 的擊中率特別的差勁 = =,尤其是 RAID
4 / 5簡單了說就是不建議使用 RAID

關於SMP
Squid is a single process application and can not make use of SMP

If you want to make Squid benefit from a SMP system you
will needto runmultiple instances of Squid and find a way to
distribute yourusers on thedifferent Squid instances just as
if you had multiple Squid boxes.

Having two CPUs is indeed nice for running other CPU
intensive tasks onthe same server as the proxy, such as if
you have a lot of logs and need torun various statistics
collections during peak hours.

The authentication and group helpers barely use any CPU
and does notbenefit from dual-CPU configuration

*大意是...squid這隻程式無法在多 cpu 的系統獲得更多好處
,但是多個cpu的確能夠讓 unix 系統在額外執行程式時更流暢...*

關於OS安裝

Running Squid on separate drives to that which your OS is
running is often a very good idea

*將OS和squid快取分開安裝在不同的disk上是不錯的*

Generally seek time is what you want to optimize for Squid,
or moreprecisely the total amount of seeks/s your system
can sustain.This is why it is better to have your cache_dir
spread over multiple smallerdisks than one huge drive
(especially with SCSI).

*把 cache_dir 分派在多個而容量較小的disk效能會勝過單一
容量大的硬碟*
ex: 單一2GB*5個會比單一10GB的要好

If your system is very I/O bound, you will want to have
both yourOS and log directories running on separate drives.

*系統I/O頻繁時最好把系統和 log 與 disk cache分開,另外
最好是一個partition 就只放一個 cache_dir *

如何找出在 cache 中最大的物件
# sort -r -n +4 -5 access.log | awk '{print $5, $7}' | head -25

如何把cache清除乾淨?

# squid -k shutdown
# echo . . > /cache1/swap.state (每個cache都要)

Squid.conf中cache_mem代表的是?

cache_mem不代表 squid 所使用記憶體的最大值,它只能表示
需要用多少記憶體留住 " hot " (點擊率高)的檔案。

Squid需要多少記憶體?
1GB的cache_dir大約佔用10MB的 ram ,但是在64位元的 server
上會更多

*簡言之,記憶體插曹插滿就對了 = =*

沒有多餘記憶體的話,要如何降低記憶體使用

1.使用不同的malloc library ,例如GNU malloc 或是 dlmalloc

2.降低 squid.conf 設定檔中 cache_mem 的量 (Reducing this
parameterwill not significantly affect performance, but you may
recieve somewarnings in cache.log if your cache is busy)

3. Turn the memory_pools off in the config file. This causes
Squid togive up unused memory by calling free() instead of
holding on to thechunk for potential, future use. Generally
speaking, this is a bad ideaas it will induce heap fragmentation.
Use memory_pools_limit instead.

4. 降低設定檔中的 cache_swap . This will reduce the number
of objectsSquid keeps. Your overall hit ratio may go down a little,
but your cache will perform significantly better.

*某些malloc不支援超過2GB的記憶體,包括dlmalloc,當記憶體
大於2GB時則只能使用到2GB*

參考資料
squid的wiki

The FreeBSD Booting Process

FreeBSD開關機流程

1. Boot Manager :
在MBR或boot manager裡的程式碼通常是指開機流程的 stage 0(第0階段),
底下會討論兩種boot manager: boot0 和 LILO

The boot0 Boot Manager :這個 manager 可在剛安裝 FreeBSD
或以 boot0cfg工具安裝安裝後預設位置在 /boot/boot0 。
(boot0程式非常的簡單輕巧,由於 slice table 和 0x55AA 識別符放置
在MBR結尾處的關係,boot0 只有446bytes大小)。如果你有多個系統,
開機時你將會看到如下列的圖示

Example 12-1. boot0 Screenshot
F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2

其他系統,特別是Windows,會將自己的開機loader寫入MBR中,
如果你想用FreeBSDloader蓋寫現存的MBR可以使用下列命令

# fdisk -B -b /boot/boot0 device

如果想以現存的linux loader(LILO)開機,可先開起linux 編輯 /etc/lilo.conf
如下

other=/dev/hdXY (hd是ide硬碟,XY可自己代換成linux上的磁區編號)
table=/dev/hdX
loader=/boot/chain.b (如果兩個系統是在同一個硬碟上可忽略這行)
label=FreeBSD

存檔後執行 /sbin/lilo -v 讓新的變更生效

2. Stage One, /boot/boot1, 和 Stage Two, /boot/boot2
stage1 和 stage2 在概念上屬於同一程式和同一磁碟區域,由於磁區
大小限制,他們被分成了兩個階段,但是安裝時會一起安裝。他們存
在於檔案系統之外,位於開機slice的第一軌,開始於第一個 sector 。

這是 boot0 或是任何其他存放於MBR的程式所要尋找以繼續完成開機
程序的地方。 boot1 也無法超過512bytes,不過這對 FreeBSD disk
label 而言已經足夠。 disklabel 是用來儲存 slice 的相關訊息,並去找
到和執行 boot2 。

boot2 比較高階和精密,boot2 必須要在FreeBSD的檔案系統上找到
檔案,並提供一個介面去選擇 kernel 或 loader 來執行。因 loader
又比 boot2 更高一級,且易於設定,所以 boot2 通常會執行它,
但是通常會直接執行kernel

Example 12-2. boot2 Screenshot

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel <--執行kernel
boot:

如果要取代現有的boot1和boot2 可用 bsdlabel工具
# bsdlabel -B diskslice (diskslice是指機器開機的slice,例如ad0s1)

3. Stage Three, /boot/loader
loader 是三步驟中的最後一步,且置於 FreeBSD 的檔案系統之內,
通常是/boot/loader.rc 初始化時,loader 會探測終端機和磁碟,
辨識是從哪個硬碟啟動的。開始設置所要開啟的磁碟、設定變數對
應,並啟動解譯程式開始解釋loader所傳遞的命令

loader 然後會讀取並執行 /boot/loader.rc, 預設地讀取
/boot/defaults/loader.conf
以設定可靠的預設變數,讀取
/boot/loader.conf
對這些變數作區域修改。loader.rc 依據這些
變數進行動作,加載任何被選取的模組和核心。

最後,預設地,loader 會停留 10 秒等待按鍵, 若沒有發生中斷
,就開始啟動核心。如果被中斷,用戶會得到一個指令行輔助說明
符, 在這裡用戶得變更變數、解除裝載所有模組、加載模組、最後
啟動 或重新啟動。

4. kernel interaction During Boot
一但 kernel 經由 loader 或 boot2 (略過執行loader),kernel將會
檢查它的開機旗標 (flag) ,如果有,就開始依照旗標做一些必要調節。

常用開機旗標
-a :在kernel初始化階段,訊問要使用哪一個裝置當root檔案系統。
-C :從光碟機開機
-c :執行userconfig,開機階段的kernel配置檔。
-s :進入單人模式
-v :在kernel啟動時顯示較多訊息

5. Device Hints
在FreeBSD5.0版後才出現在起始系統啟動時,loader 會讀取 device.hints
檔案。這個檔案以變數的形式儲存著核心啟動資訊, 有時被稱為
「 device hints 」。 裝置驅動程式用「 device hints " 對裝置進行配置。

Device hints 也可以在 第三階段的boot loader 的指令行輔助說明符中指定。
變數可以用 set /boot/device.hints 設定的變數亦可以在這裡被覆寫。
鍵入 boot loader 中的變數不是永久性的,在下次啟動時就會被忘記。

指令添加,unset 指令移除, show 指令檢視。在檔案 /boot/device.hints
設定的變數亦可以在這裡被覆寫。寫入 boot loader 中的變數並非永久性的,
在下次啟動時就會被忘記。

一旦系統啟動成功,kenv 指令可以用來清楚所有的變數。
檔案 /boot/device.hints 的語法是一行一個變數, 使用「#」作為註釋記號。
每行是按照如下方式組織的:

hint.driver.unit.keyword="value"

第三階段 boot loader 的語法是:

set hint.driver.unit.keyword=value

driver 是裝置驅動程式名,unit 是裝置驅動程式單位名,keyword 是
hint 關鍵字。

關鍵字可以由以下選項組成:

at:指明裝置所連結的匯流排
port:指明所使用 I/O 的起始位址。
irq:指明所使用的中斷要求號。
drq:指明 DMA channel 號。
maddr:指明裝置使用的物理記憶體位址。
flags:給裝置設定各種旗標。
disabled:如果設成 1, 裝置被禁用。

裝置驅動程式能夠接受更多的 hints,建議參看它們的手冊。參看
device.hints(5)、kenv(1)、loader.conf(5) 和 loader(8) 關機手冊以獲得
更多資訊。

6. Init :進行系統控制權轉移
一旦 kernel 完成載入後, kernel 就將控制權交給使用者層的
命令 init ,位於/sbin/init。或是loader的環境變數 init_path
所指定的位置。

自動reboot啟動程序
這個程序會確認系統將要使用的檔案系統是存在的。如果不在,
則fsck就不能正常的被執行去修復磁碟機,接著init把系統切換
成單人模式,系統管理者就可以在這時候直接處理這個錯誤。

單人模式
要進入這模式可以經由自動 reboot 啟動程序,或是在開機階
段設置 -s 參數,或設定 boot_single 的變數給 loader。或是
在多人模式之下執行 shutdown ,不加上reboot (-r)或halt (-h)
參數也可以進入單人模式。

如果系統主控台 console 在 /etc/ttys 之中是設定成 insecure 的,那麼在進
入單人模式時,系統就會要求輸入 root 的密碼。

*insecure的console代表你決定你的console的安全等級是
insecure 的 ; 而不是代表你的
console是insecure,而是你要
多一點的安全防護,則請選擇insecure,而不是secure



多人模式
如果init無誤的找到了你的檔案系統,或結束了單人模式,系統
就會進入多人模式,並開始資源配置(rc)。

7. 系統資源配置(rc)

資源配置系統會先執行預設的配置檔 /etc/defaults/rc.conf 和系
統詳細配置
/etc/rc.conf。接著依照 /etc/fstab 來掛載檔案系統,
再啟動網路服務、和其他的系統監控程式,最後執行部份程式
的起始script。

8. 關機程序

藉由 shutdown 可以控制系統進行關機, init 將會執行
/etc/rc.shutdown這個script。接著送出終止信號給所有的程序,
在此時如果有無法終止的程序就送出 kill (-9)的信號。

參考資料
http://www.freebsd.org/doc/zh_TW.Big5/books/handbook/boot.html
os.還有忘了再哪看到的中文文件~ = =||

2007/05/03

cruel unix

摘錄
You now, unix is a cruel operating system, sometimes parent kills its children, and what it worse, it sometimes turns them into zombies.

詳見pavelmachek

Say Yes

ASKA的認真版



os 他認真起來還真可愛 XDD

La Bamba



歌詞
para bailar la bamba,
para bailar la bamba,
se necesita una poca de gracia.
una poca de gracia pa mi pa ti.
arriba y arriba
y arriba y arriba, por ti sere,
por ti sere.
por ti sere.
yo no soy marinero.
yo no soy marinero, soy capitan.
soy capitan.
soy capitan.
ba-ba-bamba,
ba-ba-bamba,
ba-ba-bamba,
ba...
para bailar la bamba,
para bailar la bamba, se necesita una poca de gracia.
una poca de gracia pa mi pa ti.
arriba, arriba.
r-r-r-r-r, ja! ja!

para bailar la bamba,
para bailar la bamba,
se necesita una poca de gracia.
una poca de gracia pa mi pa ti.
arriba y arriba
y arriba y arriba, por ti sere,
por ti sere.
por ti sere.
ba-ba-bamba.
ba-ba-bamba.
ba-ba-bamba.

magjcjet2

新發現的射擊遊戲,magicjet2

繼我把新版ZooKeeper玩爛之後的首選...

大概還可以讓我玩一陣子XD

Linux Startup Flow

流程圖
power on -> BIOS -> boot loader -> Linux kernel & initrd
-> init scripts -> system


* initrd(init ram disk)補充 *

initrd簡單的說就是將電腦的記憶體(ram)模擬成硬碟。

initrd要包含有
1. a linuxrc script
2. The kernel modules that are needed

boot loader 會將 initrd 和 kernel 載入記憶體。然後 kernel 會偵測現
有的 initrd ,將他解壓縮並掛載成臨時的 root filesystem 。最後開始
執行 linuxrc script。

linuxrc 這個程式會載入所有被需要的模組,(並不是全部模組呀~)
然後掛載真正的 root filesystem(你的硬碟分割區 "/")並執行
pivot_root

這個動作是轉換 initrd 這個臨時 root filesystem 到真正的 root 上。

一直到正確的 root filesystem被掛載後 linuxrc才能夠繼續將開機流程
遞交給 init (/sbin/init) program

2007/04/30

putty 0.60版出現了

2007-04-29 PuTTY 0.60 is released

PuTTY 0.60 is out, containing mostly bug fixes

2007/04/21

預設的editor

$ls -l /usr/bin/editor
lrwxrwxrwx 1 root root 24 2007-04-22 03:55
/usr/bin/editor -> /etc/alternatives/editor

$ls -l /etc/alternatives/editor

lrwxrwxrwx 1 root root 9 2007-04-21 20:27
/etc/alternatives/editor -> /bin/nano

個人不習慣nano編輯器...且預設debian收錄的
vim也用不習慣..

$ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 2007-04-21 20:27
/etc/alternatives/vim -> /usr/bin/vim.tiny

所以一並改掉了..
$sudo aptitude remove vim-tiny
$sudo aptitude install vim
$sudo rm /usr/bin/editor
$sudo rm /etc/alternatives/editor
$ln -s /usr/bin/vim.basic /etc/alternatives/editor
$ln -s /etc/alternatives/editor /usr/bin/editor

這樣子預設編輯器就成了vim了~~

或是直接指令改變
$sudo update-alternatives --config editor

2007/04/14

來到阿里山鄉十字國小

四月八號到了這飄渺在雲霧之間的國小代課,
初來時發現老師的宿舍蓋的像是民宿,老師宿舍的
中間有一段很陡的路,沿著這條路往上走印入眼底
的是十字國小的大門,第一個星期就執導護的我早
上要帶著小朋友走路隊。

第一眼印象是這裡小朋友的臉頰泛著淡淡的紅
暈,大概是天氣太冷的關係。帶著學生走在帶著青
苔的古老石階上,才發現自己體力真的不太好了><


小朋友裡大約有一半是鄒族原住民,感覺特別
的可愛。我帶的6年級班上只有四位學生,上課情
況比起一班28人的班級要好多了,我的嗓門本來就
不怎麼樣,在這裡我只需要用小小的嗓音就能上的
輕鬆愉快。在這主要是教授6年級的國語、數學、
健體和電腦課。

在這海拔1500公尺的地方,什麼都很美,唯獨
室溫永遠都在19度以下,不過來到這邊一個星期也
漸漸的習慣了。

有時候還能在室外發現不知名的鳥類,有歌聲
很好聽,有的是披著豔麗的羽毛。

附近還有其他不知名的飛蛾和蟲子,剛開始發
現蟲子飛進宿舍會黏著日光燈管不走,晚上睡覺還
會聽到蟲子振翅的聲音。

不曉得為什麼這邊的狗和貓咪都蠻怕人的,(XD)
看到我就跑的老遠,兩個星期下來更是難得看到一
隻灰色帶有虎班線條的貓咪,不過牠看到我跑的比
其牠狗還快。<囧 ...

在下過雨的晚上,會聽到青蛙此起彼落的嘓嘓
聲。我總在極為規律的作息時間,伴隨這些嘓嘓聲
睡著。

在這邊長住的話只靠速食和調理包是不行滴。
有的老師會在宿舍旁的土地種一些蔬菜,自己種自
己摘,儼然是個自給自足的小天地了。

快離開這裡的第三個禮拜,還有學生家長去採
筍子來送給老師們,但鑑於行李已經過重,只好忍
痛跟這些現採新鮮竹筍說掰掰了 > <。

這邊因為高山地處偏遠,小朋友家裡雖然有電
腦,卻沒有網路,(os..宿舍的網路速度非常慢= =)
感覺山上小孩子又比平地更為純樸。我們班上六年
級的孩子下課時間玩的遊戲是踩腳遊戲(猜拳勝的
可以踩猜輸的,猜輸的則是要躲開別讓他踩到),
天呀!這是我小學3年級後就沒有玩過的遊戲了~

那天的下課我傻笑的看著他們邊玩邊笑,不知
道為什麼我也跟著快樂起來...我想山上雖然物資不
如平地容易取得,卻也讓這些孩子比起平地的孩子
更能珍惜資源。

來這裡以前就有聽說小朋友不喜歡寫功課,甚
至有時後會沒教作業。我到這裡的三個禮拜之間,
我想小朋友還挺賣我面子的 XD,作業幾乎都會寫
完除了數學作業,隔天批改時會發現有空著沒寫的
題目,這時候大概會了解這一方面的題型不會做,
再利用彈性時間補強。

離開前的一週,一直被小朋友要手機....Orz,
但由於一些個人考量並沒有給他們,都跟他們說我
不知道自己的手機號碼,不過很顯然他們並不相信
(純樸跟呆還是有程度上得區別...XD)他們還要我
打電話到他們手機上,以便顯示來電XD,well我也
照打了,不過在撥打前加上了 "#31#" ,呵呵...我
真壞。不但沒洩漏自己的電話還因此得知他們手機
,不過得知歸得知...要我再撥電話過去還要有點心
理建設。...也許半年後他們就把我忘了說不定。


well,我想我愛上了這個地方,這些小朋友。以後來
這養老好了。

2007/04/04

利用hdparm調整硬碟

hdparm 是用來查詢ATA/IDE 裝置參數用的工具
語法: hdparm [flags] [device]
如果沒有給予任何flags,hdparm會假設以-acdgkmnru來查詢硬碟

ex: $ sudo hdparm /dev/hdb
/dev/hdb:
multcount = 16 (on)
IO_support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 20023/255/63, sectors = 321672960, start = 0

先查查有無安裝
$ sudo hdparm -V
hdparm v6.9 (會看到工具版本)

取得硬碟資訊
$ sudo hdparm -i /dev/hdb
Model=HDT722516DLAT80, FwRev=V43OA96A, SerialNo=VD071GTE0D4TNK
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=51
BuffType=DualPortCache, BuffSize=7674kB,
MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1: ATA/ATAPI-2
ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7

* signifies the current active mode (星號表現在正使用的模式)


光碟機資訊
$ sudo hdparm -i /dev/cdrom

Model=ASUS DRW-1612BL, FwRev=1.10, SerialNo=
Config={ Fixed Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=0kB, MaxMultSect=0
(maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBAsects=0
IORDY=yes, tPIO={min:383,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 *udma4

AdvancedPM=no
Drive conforms to: unknown: ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5
ATA/ATAPI-6 ATA/ATAPI-7

* signifies the current active mode


參數要特別記下MaxMultSect 和 UDMA的模式可支援到多高
1. 設定DMA模式 "-d" flag (1/0 | 打開/關閉)
DMA 模式很重要,例如要播放 DVD 或是燒錄光碟片的話,
就最好開啟 DVD-ROM/RW 的 DMA 模式,不然很可能播放會跳格,
燒錄速度一直拉不上去,甚至可能燒錄失敗。
一般光碟機和硬碟開啟 DMA 模式也很有幫助,
可以大幅提升速度,降低 CPU 負載。
$ sudo hdparm -d1 /dev/hdb
$ sudo hdparm -d1 /dev/cdrom

2.傳輸模式 (PIO/SDMA/MDMA/UDMA) "-X" flag
由於其他模式的傳輸直遠低於UDMA,所以以UDMA模式為最先考量
模式:udma0 udma1 udma2 udma3 udma4 udma5 udma6
參數: 64 65 66 67 68 69 70
由於我的硬碟可支援到udma6,光碟機則可到udma4
$ sudo hdparm -X70 /dev/hdb
$ sudo hdparm -X68 /dev/cdrom
hdparm也支援以傳輸模式為名稱的寫法 ex:
$ sudo hdparm -X udma6 /dev/hdb
$ sudo hdparm -X udma4 /dev/cdrom

3.32位元的I/O支援 ("-c" flag)
I/O 支援的4個層級
0預設 16 位元
132 位元
216 位元
332 位元 + sync
能使用32位元是最好的 so
$ sudo hdparm -c3 /dev/hdb

4.設定同步讀取多個sector ("-m" flag)
一般來說,設定此模式,可降低系統因為讀取磁碟而損耗的效能,
這裡要用到MaxMultSect這個值,以"-i" flag可以查詢的到

$ sudo hdparm -m16 /dev/hdb
大多數新碟磁機應該都能用 MultSect 16,比較舊的用 8。
修改這個設定之後應該能減少磁碟存取消耗的系統資源,增加磁碟頻寬。
**注意** man page中提到
Some drives claim to support multiple mode, but lose dataat some
set‐tings. Under rare circumstances, such failurescan result in
massive filesystem corruption.


XD...鳥哥網頁上有寫到WD的硬碟最好別開...

5. unmaskirq ("-u" flag)
對裝置查詢或設定interrupt-unmask,啟用umask (-u1) 會大大提升
linux反應和消除"serial port overrun"的錯誤。

**注意** 某些IDE crontroler在開啟此選項後會導致嚴重
filesystem corruption特別是CMD-640BRZ1000 IDE crontroler

6.寫入快取 ("-W" flag)
-W 是關閉/開啟(0/1)寫入快取功能

**注意**不是小寫w選項,小寫w是reset功能。且gentoo的wiki
上寫了writing-cache功能被人發現在journaling filesystem
ext3,Reiser fs建議別開啟 ~.~,看來不管是大小寫的w
最好都別用


7.read-lookahead功能 ("-A" flag)
關閉/開啟 (0/1) IDE driver的read-lookahead 功能,在預設值通常是開啟的

8.開啟read-ahead功能 ("-a" flag)
此flag可為檔案系統開啟/設定磁區預讀功能。能夠增進系統讀取大檔案的
連續驅段。
$sudo hdparm -a256 /dev/hdb

9.最後在開機後馬上啟用最佳化
Debian在/etc/hdparm.conf可讓我們設定硬碟的最佳化參數,我的參數有
command_line {
hdparm -a256 -A1 -c3 -d1 -m16 -u1 -X69 /dev/hda
}
command_line {
hdparm -a256A1c3d1m16u1X70 /dev/hdb
}
command_line {
hdparm -d1c1X68 /dev/cdrom
}
command_line {
hdparm -d1c1X68 /dev/cdrom1
}

P.S 事實上寫在 /etc/default/hdparm似乎也可以,摘錄裡面的註解
# This is run before the configuration in hdparm.conf. Do not use
# this arrangement if you need modules loaded for your hard disks,
# or need udev to create the nodes, or have some other local quirk
# These are better addressed with the options in /etc/hdparm.conf



最後,裝置測試
$sodo hdparm -Tt /dev/hdb

Timing cached reads: 1924 MB in 2.00 seconds = 962.25 MB/sec
Timing buffered disk reads: 180 MB in 3.00 seconds = 59.98 MB/sec

結論:hdparm還是有一些淺在危險的參數XD,要開啟前一定要查閱
manpage。

參考網站
1. man hdparm
2. man hdparm.conf
3.http://www.gentoo-wiki.com/
4.鳥哥
5.Linux Tunning Guide

2007/04/03

linux上的I/O排程

筆記一下查到的資訊~~
Linux2.6 包含的 4 個 I/O 排程器分別是
No-op I/O scheduler, Anticipatory I/O scheduler,
Deadline I/O scheduler, CFQ I/O scheduler

No-op scheduler 是一個簡化的排程程式它只作最基本的合併
與排序。與上管理系統系統的關係不是很大,主要用在一些
特殊的軟體與硬體環境下,這些軟體與硬體一般都擁有自己的
排程機制對核心支援的要求很小,這很適合一些內嵌式系統
環境。作為上管理系統用戶我們一般不會選取它。

Anticipatory scheduler 是目前核心中預設的 I/O 排程器。
它擁有非常好的效能,在 2.5 中它就相當引人注意。在與
2.4 核心進行的對比測試中,在 2.4 中多項以分鐘為單位
完成的工作,它則是以秒為單位來完成的。正因為如此它
成為目前 2.6 測試版中預設的I/O 排程器。但它也存在著
弱點,它本身是比對龐大與複雜的,在一些特殊的情況
下,特別是在資料吞吐量非常大的資料程式庫系統中它會
變的比較緩慢

Deadline scheduler 就是針對 as 的缺點進行改善而來的
,還處於測試階段,但已經很穩定了。目前表現出的效能
幾乎與 Anticipatory一樣好。且比 Anticipatory 更加小巧,
是相當有前途的排程器。

CFQ scheduler 為系統內的所有工作配置相同的頻寬,
提供一個公平的工作環境,它比較適合桌面系統環境
事實上在測試中它也有不錯的表現

gnome-session

在 /etc/X11/Xsession.d/55gnome-session_gnomerc
內容是
# If we are running the GNOME session, source ~/.gnomerc

BASESTARTUP=`basename "$STARTUP" | cut -d\ -f1`
if [ "$BASESTARTUP" = gnome-session -o \
\( "$BASESTARTUP" = x-session-manager -a \
"`readlink /etc/alternatives/x-session-manager`" = \
/usr/bin/gnome-session \) ]; then
GNOMERC=$HOME/.gnomerc
if [ -r "$GNOMERC" ]; then
. "$GNOMERC"
fi
fi


so....
$ vi ~/.gnomerc
export LC_ALL=zh_TW.UTF-8
export LANG=zh_TW.UTF-8
export XMODIFIERS="@im=gcin"
exec gcin &

目前只知道是這樣~~改天再來補個文件XD

2007/04/02

什麼是I-squared-C

http://zh.wikipedia.org/wiki/I2C

2007/04/01

make xconfig時的錯誤

產生config檔時出現的錯誤

$ make xconfig

CHECK qt
*
* Unable to find the QT installation. Please make sure that
* the QT development package is correctly installed and
* either install pkg-config or set the QTDIR environment
* variable to the correct location.
*

solved =>
$ aptitude search libqt3
確認libqt3-mt-dev 已經安裝,我缺了libqt3-mt-dev
$ sudo aptitude install libqt3-mt-dev

os.QT模組會和TK8.3模組相衝~ 安裝了libqt3-mt-dev後記得移除tk8.3

GNOME下的totem-xine

最近在Debian安裝totem-xine,來做點筆記
$ sudo aptitude install totem-xine
要能觀看 .mov , .mp4和 .rmvb 的檔案
先到Mplayer 官方網站下載 all-20061022.tar.bz2的win32code
解開後放在你想要的位置,然後編輯 ~/.gnome2/totem_config
修改底下兩行
decoder.external.real_codecs_path: (your_path)
decoder.external.win32_codecs_path: (your_path)
我自己是把codec丟到 /usr/local/lib/codecs/
(這是mplayer預設路徑,你想解到哪邊都可以)

$ sudo mkdir /usr/local/lib/codecs
$ sudo mv all-20061022/* /usr/local/lib/codecs/

所以我的 ~/.gnome2/totem_config長成這個樣子 :p
decoder.external.real_codecs_path:/usr/local/lib/codecs/
decoder.external.win32_codecs_path:/usr/local/lib/codecs/

當你都做完發現還是無法播放rmvb檔案時,totem有個好處是
可以使用debug模式

$ totem --debug,這時候可以播看看rmvb檔看看出現什麼訊息
我的totem少了libstdc++.so.5,查一下系統下的libstdc放在哪

$ locate libstdc++.so
> /usr/lib/libstdc++.so.6 (symlink to /usr/lib/libstdc++.so.6.0.8)
> /usr/lib/libstdc++.so.6.0.8

先嘗試欺騙他看看

$ sudo ln-s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5

再撥這次出現`GLIBCPP_3.2' not found (required by blabla...) XDD,
只好乖乖安裝libstdc++.so.5

$ sudo rm /usr/lib/libstdc++.so.5
$ sudo aptitude install libstdc++.so.5

裝完收工~
參考文件: xine的faq