分類: Linux
IP1000A linux driver 的編譯
因為 Fedora 7 沒有支援網路卡 ip1000a 的 drvier ,所以只有自己 complier
20070308/10:50:00
在 kernel 2.6.21.6 的版本 complier 時會顯示找不到 linux/config.h,及一些參數,忘記在那裡看到,解決方式是在
- /kernel_source/include/linux 下 touch config.h
- 修改 ipg.h 加入紅色那行
#include <linux/config.h>
#include <linux/version.h>
#include <linux/utsrelease.h>
#include <linux/module.h>
- 最後記得 make install ,再做一次 depmod -a 就好了 (閱讀全文)
linux mount windows 分享
linux 當主機也用了好幾年了,在 samba 部份一直是 windows 使用 linux 的分享,還沒用過 windwos分享,今天在找nat資料時,看到了一篇使用windows的分享,就試了一下,測試如下:
若 10.0.0.1 分享 driver 而 username = user password空白 要 mount 到 linux 的 /mnt/win 下,只要下
mount -t cifs -o user=user -o password="" \\\\10.0.0.1\\driver /mnt/win
就可以了,在 fedora 6 之前檔案格式用 smbfs ,之後(含)用 cifs
使用結果,如果是中文分享不行,中文檔名亂碼,再研究
保留 30 天內的檔案備份
之前用 rsync 在每天晚上將幾台主機的資料備份起來,開始怕如果有勿刪檔案的情形,所以不趕用 --delete 參數,刪除來源已經刪除的檔案,可是這樣備份檔會無限擴大,今天終於想到一個很笨的方式,就是用 find 指令刪除超過30天沒有存取的檔案,建一個 rm30.sh ,將它放在 cron.weekly 下就可以了請它每7天做一次 rm30.sh 內容如下:
#!/bin/sh
/usr/bin/find /back -atime +30 -exec rm -f {} \;
這樣就會刪除超過30天都沒有讀取的檔案,當然也可能刪掉來源檔還存在的檔案,反正是電腦晚上閒閒時做的,再備份回去就好了,雖然方法可能有點笨,但是可以達到自動化只備份30天內存在的檔案,不用擔心備份碟爆掉
Fedora 7 的 yum
在 Fedora 7 的 yum 一直找不到國內 mirror 的設定,後來乾脆不理國內站,直接用內定設定,再加上安裝 yum-fastestmirror 感覺上速度還可以,想想現在網路速度,再加上 update 都是在主機空閒時實施,所以應該不會差太多,想通了也就不再去找是否有國內的 mirror 站了
fedora 6 i686 升級 fedora 7 x86_64 的慘痛經過
這次因為電腦教室的電腦更新,所以也想順便更新 Linux 主機,剛好 fedora 7 出來,所以就想嘗鮮,又因為cpu可以,所以就選用 fedora 7 x86_64 的版本,就過三天慘痛才勉強符合使用要求,電腦教室的主機必須有網頁(http),檔案伺服(ftp),郵件(mail),網路芳鄰(samba),nat,firewall,nfs,rsync
- httpd,proftp,rsync 設定跟Fedora 6 設定差不多,沒有問題
- mail 用的是 postfix + MailScanner + SpamAssassin + Clamav 其中在 SpamAssassin3.2 踏到鐵板,在與 MailScanner 配合使用時,mailscanner 會生出錯誤,在 /var/log/message 中會顯示 MailScanner: Process did not exit cleanly, returned 2 with signal 0 .知道是 SpamAssassin3.2 的設定問題,但是試不出來,google 也找不到資料,只好裝spamassassin3.1.9 就ok了,不知 spamassassin3.2做了什麼改變,只好等有高手解決再來升級3.2
- 在 samba 部分的密碼認証用的是 tdbsam 而給學生更改密碼(changepassword.cgi)的網頁程式用的是 smbpassword 所以只好將其改回 smbpassword 的檔案認証,而在 changepassword.cgi 的 make 中一直產生 /usr/bin/ld: cannot find -ldes 的錯誤,也找不到解決的方法,後來想 fedora6 與 fedora7 的 gcc 及 kernel 版本差異不大,將 fedora6 的 changepassword.cgi 拿來用,竟然可以,而且這版的 samba 內定沒有啟動 nmbd ,所以在 pc 的網芳看不到 samba 分享,要自己啟動,我的方法是將 fedora6 的 /etc/rc.d/init.d/smb 拷貝過來
- 因為 Nat 用 iptables ,又想用 l7filter 的功能,所以必須 patch kernel 及 iptables 及重新編繹,在編繹中,發現 kernel 2.6.22 的版本一直編繹不起來,只有 kernel 2.6.21.6 可以成功,所以只好先用這個版本
- 在使用 nfs 時,必須啟用 portmap 而卻找不到 portmap ,原來已經改名 rpcbind
從這三天的痛苦經歷,我更相信,主機只要穩定就好,非不得以不要去動它,而且千萬不要拿剛出來最新的版本來用,因為我又不是玩家高手,等一陣子高手都玩過了,問題都解決了再來用,碰到問題也才找的到解決的方法,至於現在的問題只好過一陣子看看有沒有更新版本在試試,或是有高手提出更好的解決辦法
網路芳鄰看不到 samba
安裝 Fedora 7 的 samba ,結果在 pc 的網路芳鄰一直找不到 samba 主機,重新啟動 samba 時才發現竟然沒有啟動 nmbd 只啟動 smbd ,所以只能直接打電腦名稱才可以用分享,真不知為何會要這樣,為了使用方便,只好將 fedora 6 上的啟動 script copy 過來
Spamassassin 自動學習
#useradd -M blacklist
#useradd -M whitelist
以後如果收到垃圾信的話, 就把信 "以附加檔案方式轉寄" 給自己 Server 上的 blacklist 信箱; 如果是被 Spamassassin 誤判為垃圾信的郵件, 就把它轉寄給 whitelist. 也就是說, 讓這兩個信箱收集可以給 Spamassassin 學習的範本. 學習的指令如下:
學習黑名單:
#sa-learn -D --showdots --spam --mbox /var/mail/blacklist
學習白名單:
#sa-learn -D --showdots --ham --mbox /var/mail/whitelist
學習完成後, 即可將 blacklist 與 whitelist 信箱清空:
#true > /var/mail/blacklist; true > /var/mail/whitelist
讓系統每小時自動學習黑/白名單: 於 /etc/cron.hourly 建立一個可執行的 shell 檔, 內容為:
#!/bin/sh
if [ -s /var/spool/mail/blacklist ]; then
sa-learn --spam --mbox /var/spool/mail/blacklist > /dev/null 2>&1
true > /var/spool/mail/blacklist
fi
if [ -s /var/spool/mail/whitelist ]; then
sa-learn --ham --mbox /var/spool/mail/whitelist > /dev/null 2>&1
true > /var/spool/mail/whitelist
fi
參考自 http://spamgoaway.blogspot.com/search/label/spamassassin
pxe 網路開機
最近突想做pc的網路開機,整整再google找了兩,三天,總算有幾篇教導利用 pxelinux 做開機的方式,我的做法如下
- 主機 fedora5
- 安裝 tftp-server => 修改 /etc/xinetd.d/tftp =>將 disable = no
- 安裝 dhcp => 修改 dhcpd.conf 如下
server-identifier 10.0.0.254; #在多張網路卡的時候可以加上﹐可不設
allow booting; #將 dhcp 提供 bootp;
allow bootp; #將 dhcp 提供 bootp;
option domain-name "fhsh.tp.edu.tw";
option domain-name-servers 168.95.1.1,168.95.192.1,10.0.0.254;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
ddns-update-style none;
log-facility local7; #加這三行
server-name "PXE Server";
server-identifier 10.0.0.254;
subnet 10.0.0.0 netmask 255.255.0.0 {
range 10.0.0.50 10.0.0.250;
range 10.0.1.50 10.0.1.250;
option routers 10.0.0.254;
option broadcast-address 10.0.255.255;
filename "pxelinux.0"; #從 tftp 下載執行檔
next-server 10.0.0.254; # tftp 的 ip 位置
} - 抓下pxelinux工具 http://syslinux.zytor.com/download.php
主要是用到裡面的pxelinux.0、memdisk和menu.c32,將這些檔案放到tftp的根目錄下 - * 修改 tftp目錄下的 pxelinux.cfg/default,第一次需先建立目錄與檔案,範例如下
DEFAULT menu.c32 '預設以menu.c32這個核心來啟動,即出現選單
PROMPT 0 '不要用prompt的方式,即啟用選單
ALLOWOPTIONS 0 '不要該使用者有選擇權,例如更改啟動參數或直接離開選單
TIMEOUT 50 '選單的提示時間,50好像是指5秒
MENU TITLE PXELinux Menu '選單的標題
LABEL freebsd54 '名稱
MENU LABEL BSD '選單上的標題
kernel memdisk '用來啟動影像檔的核心,pxelinux提供
append initrd=fbsd54.img c=812 h=255 s=63 '要載入的影像檔及參數,此例為將bsd的bootonlyCD所做成的PXE影像檔
LABEL local
MENU DEFAULT LOCAL ' MENU DEFAULT 是預設選單指向
LOCALBOOT 0 ' 直接以硬碟開機
LABEL dos
MENU LABEL DOS
kernel memdisk
append initrd=dos.img ' 將磁片做成影像檔後,直接放進來就可以用了,不用加參數,下面的也都是直接用磁片所做成的影像檔
LABEL ghost2003
MENU LABEL ghost2003
kernel memdisk
append initrd=ghost2003.img
- 我喜歡這種方式,可以依照自己喜歡增加開機選單,利用 gohot 做開機檔,再利用 linux 的 dd 指令,做成 img ,真方便
dd if=/dev/fd0 of=ghost2003.img - 如果 dhcp 用 windows 只要將它設定 bootp與dhcp都提供,再增加 66,67兩項選項的設定
在 dhcp =>內容=>進階=>勾選 只有BOOTP 或 兩者都可以
在 dhcp=>伺服器選項=>設定選項=>66 填入 tftp 主機 ip =>67 填入tftp給 pc 的啟動檔,這裹是 pxelinux.0 - 以後採購電腦一定要求網卡有支援 pxe 網路開機功能才方便
本篇參考自 酷!學園
IPTABLE 一對一
#一對一,nat設定
/sbin/iptables -t nat -A PREROUTING -d 203.72.59.10 -j DNAT --to 10.0.0.1
/sbin/iptables -t nat -A OUTPUT -d 203.72.59.10 -j DNAT --to 10.0.0.1
fedora disable ipv6
在 /etc/modprobe.conf 加下面二行
alias net-pf-10 off
alias ipv6 off