聊 Linux 的安裝

以前最熟悉的是 Fedora Core/Red Hat,這套不用說了,算是很簡單的了。
最近呢,則有幸裝了 Debian 3.x,發現跟以前 2.x 比起來,真的是方便很多。
不僅僅是安裝過程有中文,選擇上也很直覺簡單,下載也只要小小的 109M 就可搞定,其他東西大可等到 Base 安裝完成以後,再用 apt-get 來安裝。
基本上跟 Ubuntu 不遑多讓。
裝完以後,突然又興起裝 Linux 熱,於是又下載了 Gentoo 與 OpenSUSE 來玩。
Gentoo 本身網路安裝的話,只要下載 5xM 就搞定,可是安裝與設定上,肯定是讓你頭痛。我以前有裝起來過一次,這次是試到一半就放棄繼續了。不過裝完以後據說效能很好,因為所有套件幾乎都重新在你機器上編譯過。記得官方網站也有提供比較肥大的光碟可以讓你下載,對初學者來說,這應該會比較省事。
OpenSUSE 有提供網路安裝的版本,昨晚試了一下,真是很遜,也無法選擇安裝 Base system 就好,基本上是要下載完所有光碟,會比較好裝。
如果你是初學者,個人是推薦 Debian / Ubuntu / Fedora Core / OpenSUSE 這幾套。

Ubuntu 的 Flash Video 沒聲音?

這幾天迷上Youtube,可是在我 Ubuntu 上的 Firefox 播放影片時,卻像啞巴一樣。
於是我丟 “ubuntu flash sound” 這幾個關鍵字給 Google,於是第一個結果就是我要的答案:
*macewan » Howto fix Firefox Flash Video Sound on Ubuntu Linux Dapper
方法很簡單,先安裝 alsa-oss,然後修改 /etc/firefox/firefoxrc,加上 FIREFOX_DSP=”aoss”。

$sudo install alsa-oss
$sudo vim /etc/firefox/firefoxrc

mencoder

突然對作 DVD 有興趣,畢竟也是要好好利用 Notebook 送的 PowerProducer 軟體與 DVD 燒錄機啊。
以前都是把 mpeg 檔轉成 mpeg4,現在可要反過來了,讓 PowerProducer 可以順利轉成 DVD。

用VirtualDub是很方便,只是懶得裝 Codec,也懶得裝大堆頭的 Codec 套件。(自從用了可以通吃的VLC media player以後,就懶了…)
是故,在這方面 Linux 的 MPlayer 就顯得可愛多了。
不但能播放還可以轉檔,摸蜆兼洗褲,一舉兩得。

這裡就貼一下我用來轉 mpeg4 以及現在轉 mpeg 的指令用法:

  • 轉 mpeg 為 mpeg4
    #!/bin/sh
    # usage: mpg2mp4.sh your_mpg your_avi
    VBITRATE=500
    mencoder "$1" -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
    mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=1 -oac copy -o "$2"
    mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=2 -oac copy -o "$2"
    rm -f frameno.avi
    rm -f *.log
    
  • 從 mpeg4 轉 mpeg(可合成字幕)
    #!/bin/sh
    # usage: mp42mpg.sh your_avi your_srt your_mpg
    # msjh.ttf 是微軟提供的中黑體,此處你可改用別的字體。
    # -subcp 是字幕檔所使用的編碼,如果字幕檔是 unicode,可以直接把 -subcp cp950 改為 -unicode,這邊設為 -subcp cp950 表示是 big5。
    mencoder -ovc lavc -oac lavc -of mpeg -mpegopts format=dvd:telecine -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:aspect=16/9 -ofps 24000/1001 -sub $2 -subcp cp950 -o $e -font ~/.fonts/msjh.ttf -subfont-text-scale 3 $1
    

官方的說明文件還蠻清楚的,有不知道怎麼轉的,不妨直接看說明文件。

參考資料:

以 script 產生 5000 首 mp3

5000 首 mp3 ?!
去哪裡生啊,靈機一動,不如使用 script 來產生,快又有效。
最早的一個版本是拿一個樣板的 mp3 來複製,可是又怕內容有版權問題,所以後來改用 Text to Speech 的軟體來將文字轉成聲音…
我的環境:Fecora Core 5
會用到的套件:Festival (text2wave)、lame (轉 wave 為 mp3)、id3tag (為轉好的 mp3 上 id3 tag)。
程式碼如下:

#!/bin/sh
#
# run2.sh
# This script is used to generate short songs.
# You can decide how many songs should be generated by modify LIMITSONGS variable.
#
# Dependency:
# festival (Text to speech by text2wave)
# lame (convert wave to mp3)
# id3tag (tag the generated mp3)
#
# Tested environment:
# Fedora Core 5
#
ITER=1
LIMITSONGS=5002
((TOTAL=LIMITEDSONGS – 1))
while (($ITER text.txt
text2wave -F 19200 -o $WAVEFILE text.txt
lame $WAVEFILE $NEWFILENAME
id3tag –artist=$ARTIST –album=$ALBUM –song=$TITLE –genre=classic –track=$ITER –desc=”generated by script.” –total=$TOTAL $NEWFILENAME
((ITER = ITER + 1 ))
rm -f $WAVEFILE
done
rm -f text.txt
echo “done.”

LIMITESONGS 用來控制要產生的數量。
TEXT 則是要說的文字,目前 festival 還不支援中文,所以只能放一些英文字串。
托福,也因此我學到 bash script 裡面可以運算變數內容,作加減乘除,以前我以為只能運算文字內容而已,真的是不經一事不長一智。

SELinux tip

今天要用到時,才驚覺以前的筆記居然不見了…,努力回想了好一陣子,才想起來。
一般來說,如果不熟的話,最好是關掉 SELinux 選項。
那我為甚麼要用?…..別問了吧….
SELinux 的 policy 真的是複雜,複雜到我實在是不太想看下去。
這裡有個簡單的方法可以幫你產生 policy,首先,先去執行被 SELinux 阻擋的程式,然後執行
#audit2allow -d -o xxx.policy
這會產生 xxx.policy
接著把這個檔案複製到 /etc/selinux/targeted/src/policy/domains/misc/local.te
切到 /etc/selinux/targeted/src/policy/
執行 make reload
這樣就大功告成了。
p.s. 我的環境是CentOS 4.3,RHEL、WHEL、Fedora應該都差不多。

Firewall: lokkit 的設定

進入 console mode 之後,輸入 setup
選到 Firewall configuration (或直接輸入 lokkit)
再選 customize,至此即可設定允許哪些協定進入你 linux 防火牆。
到 Allow incoming 那邊,將協定勾選(按空白鍵勾選,Tab鍵切換)。
如果沒有列出來的,你可能要在 Other Ports 那欄自行輸入。
格式大致是這樣:
protocol_name:[tcp|udp]
拿我家裏的 server 來說,除了勾選 HTTP、SSH 之外,我還自行輸入了
pop3:tcp https:tcp netbios-ssn:tcp microsoft-ds:tcp netbios-ns:udp netbios-dgm:udp
不知道有哪些 protocol 的話,可以用 netstat -a 自己去看。
我也是嘗試之後,才發現 Other ports 那欄的輸入格式可以參考 netstat -a 的結果。

XWindows bootstrap

這是我的環境: Fedora Core 5, GNOME
簡單紀錄一下這幾天 Trace 的結果.
當你開機後預設模式是圖形(怎麼知道預設模式是甚麼??請參考 /etc/inittab.)的時候,順序大致是這樣子的:
1. Kernel
2. /etc/rc.d/rc.sysinit
3. /etc/rc.d/rc, /etc/rc5.d/ 下的 script
4. /etc/rc.local (其實是在 /etc/rc.d/rc.local)
5. prefdm, 這會把預設的 desktop manager 叫起來 (怎麼知道預設 desktop manager 是甚麼?請參考 /etc/sysconfig/desktop)
6. 登入以後,會執行 /etc/X11/xinit/Xsession
7. /etc/X11/xinit/xinitrc
8. /etc/X11/xinit/xinitrc-common
9. /etc/X11/xinit/xinitrc.d/* 下的 script, 這裡面的 xinput.sh 會把輸入法叫起來.
10. 完成.
為甚麼我沒事要去 Trace? 因為前一陣子我升級 Fedora Core 4 到 5 之後,GNOME 就爛掉了,無法登入.
搞了幾天,都不知道為甚麼,只能以克難的方式,先在 $HOME 佈置 .Xsession, .Xclients 來應急.
今天 Trace 之後,終於發現問題所在.
原因是 /etc/gdm/custom.conf 裡 BaseXsession 預設為 /etc/X11/xdm/Xsession.
gdm 登入後會去執行這個 script, 而 xdm/Xsession 只會跑 xdm 的一些東西,所以就只會登入到很簡陋的 xdm 畫面.
呼~~終於解決了.
參考資料:

Upgrade FC4 to FC5

公司用的 distribution 是 Fedora Core 4, 最近 Fedora Core 5 release 了,就想來升級看看.
世界上真的有很多人想法跟我一樣,用 yum 來升級就好了.
這篇寫的很詳細:How to upgrade from FC4 to FC5 via yum?
主要步驟:

  1. 下載 fedora-release-5-5.noarch.rpm,然後安裝
  2. 先更新 yum: yum update yum
  3. 接著 upgrade: yum upgrade

比較麻煩的是步驟 2與步驟 3,這邊你可能會遇到蠻多麻煩,說有 dependency 問題,這時候就得參考這篇,他有提供一個perl script來解決這種鳥問題.
我自己的方法是,紀錄這些套件,把他們移除掉,等升級完再安裝回去.
現在我已經升級完啦,接下來就是調校了~
參考資料:

Ubuntu live cd on Averatec 6200

前一陣子有想把 Linux 裝到我的 notebook – Averatec 6200 (其實是 MSI M630)上.
正巧Ubuntu Linux又挺紅的,就決定用他.所以就下載了Ubuntu Linux的 Live CD,先行嚐鮮.
可是,怎麼弄都無法從 Live CD 開機,這是一個警訊,表示 Notebook 可能有些麻煩需要克服.
這時候想到,之前有看過一個網站,有提供很多 Notebook 與 Linux 相容問題的網站.利用Google找了一下,很輕易就找到了,就是這裡 Linux on Laptops. 遺憾的是,裡面並沒有 Averatec 6200 的資訊.
時光荏苒,匆匆數周又過去.
今天晚上,再次用 Live CD 開機,並仔細看了一下開機選項 (按 F2, F3, F4, F5, F6, F7 都可以看到不同的選項), 然後輸入這行指令進行開機:

live vga=771 noapic nolapic gdth=disable:y

這次很順利就開起來囉~ 🙂
接下來就是無線網路問題啦~
Ubuntu Linux可以辨認到我的無線網路Driver, 所以接下來就是軟體設定問題.
摸索了一陣(會這麼久,其實有一部分也是因為我忘記我自己的 key index 與 key, :p ),最後在 /etc/network/interfaces 裡面作下列設定

iface ra0 inet dhcp
#
wireless-essid your_essid
# keys
wireless-key1 your_key_1
wireless-key2 your_key_2
wireless-key3 your_key_3
wireless-key4 your_key_4
# 請根據你的 key 索引值來調整
# adjust the value according your key index.
wireless-defaultkey 1
# 我用的是restricted(受限制的),如果沒用的話,把這行註解掉吧
# I use restricted, you can comment this line.
wireless-keymode restricted
auto ra0

再重新啟動 networking service 就可以了.

sudo /etc/init.d/networking restart

參考資料: