lilybbs-faq -
linux入門以及百合 Linux
版精華區導讀
不需要任何命令的簡單介紹
- 歷史
- (APUE
提到了1990年之前的unix歷史,還有各種標準
ANSI ISO IEEE posix xpg3.... 但是linux 和 BSD
尤其是freebsd
在其後才大行其道) unix
的歷史與 c
是緊密相關的,無論是產生髮展還是後來的標準制定。
標準的制定反映出的,是當時的競爭之激烈。競爭在標準制定之後得到了抑制,
但是這段紛爭的時間卻使unix的發展減緩了
另一個阻礙發展的因素是版權,BSD的發展被延遲了,linux在版權上的障礙才剛剛開始
歷史問題可以參閱精華區的“歷史”目錄
- 版權模式
- 自由軟體版權和開源軟體版權的區別,在於對衍生工作的限制。
GPL
的限制指出,你可以修改GPL軟體,但是如果要再發行修改過的版本,
就必須允許其他任何人對這個版本進行再次修改。根據這一條,很多討論都是
沒有必要的。如果你的修改不會再發行,那麼就不必考慮是否公佈修改的細節。
也就是說,政府/軍隊的保密限制和GPL是不會衝突的。
FDL
的限制似乎僅僅需要保留宣告
這種保證使用者權力的做法是否有道理,還是不清楚
開源軟體版權,例如BSD和類似的X版權,要求在任何衍生工作中保留原作者的資訊
對再次發行修改後的版本沒有限制
不明白為什麼要這樣做--其中有一種自信,“捨我其誰”的勇氣吧
參閱精華區“歷史文化”目錄
- 合作開發模式
- 有很多工具用於實現合作開發
參閱精華區“軟體開發”目錄
- linux最吸引人的地方是什麼?
- 很多人想知道linux為什麼那麼好,為什麼讓人著迷
我想我喜歡它,因為它的歷史悠久,結構很清楚很漂亮,很多思想很巧妙
也許僅僅是“歷史”就足夠了。懷古的人不在少數吧
合作開發,集中大家的智慧,從中可以產生無限的可能
自由?共產主義的狂熱精神?天下大同?
當然,最直接的就是可以牢牢地將計算機控制在自己手裡,想把它修飾成
什麼樣子就做成什麼樣子,可以想出和別人完全不同的生活方式,比如
iloveqhq的scheme生活環境,是一般人享受不到的
各種新鮮的想法,隨時可以試驗一下--讓想法時時刺激頭腦
象一個遊戲,耗時,費力,需要經常上論壇找攻略,從來沒有一定的玩法
- FUD
是什麼意思?
- 2003年末,伴隨SCO對各個有關linux的公司的指控,還有對使用者的威脅恐嚇,
各種媒體也紛紛興風作浪,發表聳人聽聞的新聞,例如新浪的一些報道。
FUD
不僅指這些不負責任的話,還包括對linux等自由軟體/開源軟體的懷疑,
對自身的懷疑我自己認為過分的狂熱也可以叫做FUD。
總之,沒有平和的態度就沒辦法實實在在地作事情,所以技術問題之外,
爭論還是少一點好,懷疑更要少一點
其實所有初學者都會情不自禁地自稱“菜鳥”,會“問弱弱的問題”。問題在於,
有沒有抓緊時間提高水平
- 目錄 檔案 路徑概念
- APUE 中開始就講目錄
檔案
路徑的概念,因為這幾個概念太基礎了。自從
“檔案”出現之後,又出現了層次目錄結構,對計算機中資源的管理才逐步
發展起來。檔案很適合於描述計算機上的資源
unix的目錄結構是非常嚴謹的樹形結構,根目錄是“/”,其他目錄和檔案都必須
在這個目錄下面。每個目錄下面都可以有子目錄和檔案,目錄和檔名稱的長度
是與檔案系統有關的
路徑是引用一個目錄或檔案時用到的,指示它的位置的字串。絕對路徑是說
從根目錄“/”開始,沿著目錄樹找到需要引用的目錄或檔案,然後將中間經歷的
節點都寫出來。例如,“/root/abc”
是說要找到“abc”
檔案,就必須從
“/”開始,中間經歷
“root”
目錄才能找到。
當前目錄是說使用者正處於樹形目錄的哪個節點上,相對路徑就是要引用的目錄
或檔案相對於當前目錄的位置。例如,我現在在“/root”
目錄當中,要引用
“/root/def/xyz”
的話,只要用 “def/xyz”
就可以了
- 檔案型別
- 檔案有不同的型別,在windows裡就可以看到,有文字檔案,影象,聲音,影片
但是在linux中的檔案型別要更多。例如,符號連結就是非常有用的型別
另外,linux中的二進位制可執行檔案是ELF格式的,不需要副檔名;而windows中
是PE格式,有固定的副檔名。所以,兩個系統的應用程式不能換用,有朝一日也許可以
linux中很重要的一種檔案就是裝置檔案。幾乎所有的裝置都有一個對應的檔案,
在“/dev”當中
例如,硬碟harddisk簡稱hd,那麼系統中的第一個硬碟就是hda,第二個就是hdb.....,
然後對應的裝置檔案就是“/dev/hda”。硬碟上的各個分割槽用數字來編號,例如
第一個硬碟的第一個分割槽就是“/dev/hda1”,第二個分割槽就是“/dev/hda2”
再舉一個例子,顯示卡的裝置檔案“/dev/fb0”,滑鼠裝置檔案“/dev/input/mice”
和“/dev/psaux”
要注意的是,linux中的可執行檔案可以是二進位制的,也可以是文字檔案。
“可執行”僅僅是檔案的一個屬性而已,不像windows中由於檔案系統中能儲存的
屬性資訊少,只能透過副檔名來識別檔案型別。linux中的檔案可以不用副檔名,
也可以用任意的副檔名各種各樣的檔案型別,是為了將不同的物件進行統一的處理。
我們可以用open lseek read write close
來讀寫一個文字檔案,也可以用這幾個
函式來處理滑鼠,讓音效卡播放一段聲音,讀寫一塊硬碟(如果你敢的話)。
在windows中,不同的裝置處理的方法是不同的,而unix環境中的處理方法是
整齊劃一的。控制方法一般是fcntl和ioctl。(誰能告訴我ioctl犯了什麼錯誤了?)
- 硬碟分割槽方式
- 硬碟有很多種,分割槽也有各種各樣的方法。linux支援它們,但是常用的分割槽方法
就只有一種了。這種分割槽方法的要求是這樣,一塊硬碟上只能有最多四個主分割槽,
最多一個擴充套件分割槽;在擴充套件分割槽中可以劃分無限多的邏輯分割槽。記住這三個概念。
每個分割槽的第一個扇區一般都是保留分割槽資訊的,資料一般從第二個扇區開始。
分割槽資訊中很重要的內容是“下一個分割槽的位置在什麼地方”還有“本分割槽的
大小是多少”。因此,linux對分割槽進行編號的順序並不是硬碟上分割槽的物理排列順序,
而是從第一個分割槽開始,不斷查詢下一個分割槽。這樣的結果是編號很容易弄錯。
要處理分割槽時,一定要把當前分割槽情況備份一下
pqmagic分割槽軟體不如linux中的分割槽軟體好用,因為它對混亂的分割槽編號處理
更容易出錯
啟動載入程式一般都裝到某個分割槽的第一個扇區裡面,和分割槽資訊放到一起。
但是,如果安裝啟動載入程式時指定的裝置錯了,那麼可能會把資料破壞掉,
或者將其他分割槽的載入程式破壞掉。典型的情況是這樣:windows將自己的載入程式
放在第一個分割槽--主分割槽1的開頭,我們的linux
fans想把linux的載入程式,
lilo或者grub放到整個硬碟的開頭--MBR裡面。MBR的裝置名是
“/dev/hda”,
但是主分割槽1的裝置名是
“/dev/hda1”。一個不小心,系統就啟動不了,壞掉了
- 國際化,locale的概念,utf8
等字元編碼的含義和用法
- 後兩個已經不用再多說了。是很過時的話題。但是前日還有人問turbolinux是不是核心漢
化的。使用者並不是直接和核心打交道,為什麼要漢化核心呢?目前的核心包含各種編碼,
用於檔名的轉換,但是並沒有包含字型,因為使用者不是直接和核心打交道!
國際化是整個系統範圍內的,對編碼進行規範,對輸入輸出方式的函式介面和通訊協議進
行整體的設計,提供處理各種語言環境的統一方法。本地化中,對編碼的規定和對日期時
間、貨幣格式的規定是國家標準,而輸入法、字型還有應用程式介面的翻譯,還需要大家
共同努力。
國際化和本地化都應當在應用程式中實現,例如zhcon和cce。視窗系統中的國際化和本地
化也是由應用程式實現的,視窗系統本身只提供通訊協議
zhcon還不是很完善,支援的編碼太少了
- 中文化是本地化的一種,終端的本地化不是很完整
- 對世界上所有的字元進行編碼,就是unicode。但是,具體的實現方法有很多種,有的採用
定長編碼,有的採用變長編碼。utf8編碼是變長的,能實現unicode的大部分要求
zh_CN.UTF-8,zh_CN.GB18030 這些locale
的定義,前一部分是國家程式碼,語言程式碼,後
一部分是編碼。不同的國家程式碼和語言程式碼對應著不同的輸入法,日期時間貨幣格式等等
,對使用者比較重要,編碼則不是很重要,不同的語言可以使用相同的編碼,推薦使用utf8
- 模組化的設計思想
介面無關 裝置無關
- 這一段還沒有想好
很多程式是和介面沒有關係的。例如,字型的使用一般使用Xft2字型庫,但是它和視窗環
境沒有必然聯絡。大部分bt工具是和介面沒有關係的。圖形應用程式
我們使用計算機時,我們的一舉一動都是在和系統通訊。系統中程式執行時也在互相通訊
。想要開啟輸入法,我們按下ctrl-space,這時候輸入法和應用程式之間就透過XIM協議開
始通訊了--過些日子,也許就不是這種協議了,但是通訊是一定存在的
一方面,每個程式都關心自己的功能,另一方面,每個程式都要和其他程式進行通訊。
- 程序的概念 執行緒
- APUE
中提到,程序是一個程式的執行中的例項。程序有很多屬性,比如編號,所有者,當
前執行狀態,啟動時的命令列,環境變數,執行時間,打開了什麼檔案....
執行緒和程序類似,也有很多屬性。同一個程序的不同執行緒可以很容易地互相訪問資料。so
laris的執行緒實現很不錯,非常靈活
- 什麼發行版好?什麼unix好?
- 精華區目錄中有各種unix的對比,linux的使用感受,可以看一看
還有對書和網站的推薦
debian
發展太慢了,除非用unstable
版本,但是那又太快了。用
knoppix 上上手不錯 redhat
一直很好用,但是升級時最好重灌系統。現在fedora的網路升級不知道能不能完全
升級?
redhat對中文的支援也很好,但是需要手動安裝的軟體比較多
turbolinux magic
還有國內廠商的版本
對中文支援不錯
個人不喜歡mandrake,很難定製。slackware
需要自己處理的東西太多了
freebsd 的使用和debian
很相似,自動化程度很高
需要綜合使用命令才可以完成的操作
- 檔案許可權
- 檔案許可權並不是檔案型別。所謂“可執行”,僅僅是檔案的許可權而不是型別。
傳統的檔案許可權是九個字元rwxrwxrwx三個一組一共三組,再加上檔案所有者和組。高階的
檔案許可權就不是這麼簡單了,類似ntfs,可以指定任何使用者/組對某個檔案的各種各樣的權
限用 “ls -l”
命令可以看到當前目錄中所有目錄和檔案的許可權
用 “chmod” “chown” 和
“chgrp”
命令可以修改許可權
- 執行程式
來自bash手冊頁
- 假如看到檔案的許可權中帶有x,那麼它是一個可執行的程式。要執行它,可以使用相對路徑
,也可以使用絕對路徑。例如,我的目錄中有一個“run-me”
檔案是可執行的,那麼我可
以執行 “/root/bin/run-me”
,或者先執行 “cd /root”
再執行 “bin/run-me”。
假如說這個可執行檔案的位置在
“/usr/bin”
當中,那麼我不必使用路徑也可以直接執
行它,因為環境變數
“PATH” 中包含了
“/usr/bin”。執行 “export”
可以看到 “ PATH”
的定義
- 具體目錄的作用
來自FHS 標準
- 這個標準不是很正式,但是很多unix系統都在用。意思就是,“/”
根目錄下面的子目錄
和檔案都有它們各自的用處,不能隨意增加刪除。比如說,“/dev”
就是裝置,“/etc”
就是所有配置檔案,“/var”
是應用程式自動管理的資料,比如用rpm安裝了一個軟體,
rpm會將那個軟體的資訊存在“/var”
當中。“/usr”
當然就是應用程式的目錄。“/bo
ot”
是核心還有啟動時要用到的檔案。試一試,“ls
lR /” :)
- 安裝和刪除軟體--最簡單的辦法
- 最簡單的,把這個軟體包含的檔案--一般是一個可執行檔案,複製到
“/usr” 當中就
可以了。複製到什麼地方呢?FHS
對 “/usr”
目錄中的子目錄也有規定。“/usr/bin”
是可執行檔案,“/usr/lib”
是庫檔案,就是xxxxxx.so.1
之類的,“/usr/share” 是
不需要修改的資料,比如幫助手冊,桌面圖示等等。
要解除安裝軟體,只要從“/usr”
當中把複製過去的檔案刪掉就可以了
複製用 cp
命令,刪除用 rm
命令。小心不要誤刪除了有用的東西
和windows裡面不太一樣,不會在一個系統中安裝四個或者五個QQ卻仍然找不到QQ裝在什麼
地方。一般安裝軟體要用make,rpm
或者dpkg
等等方法,不用自己操心複製刪除檔案
- 程序間的關係,應當使用APUE
中的敘述
- 用ps
命令可以檢視程序。用top命令可以動態地檢視程序。當然,要搞清楚輸出是什麼意
思,需要仔細看看幫助
fg 和 bg
可以在一些程序中切換
kill 和killall
可以控制程序停止和退出
一邊執行命令,一邊可以到“/proc”
目錄看一看。這個目錄是整個系統的情況,包括硬
件和軟體的資訊。多練一練
“cd”,“ls” 還有
“cat”。看了足夠多之後,對於ps
和 top
命令的輸出就大概明白了。我認為“/proc”
是新手訓練的最佳場合
- fork exec
環境變數
守護程序(daemon)
- shell
程式設計初步-shell,awk,perl
- 命令
- cd ls ;cat less ;rm cp mv ln ;mkdir chmod chgrp
; reboot poweroff ;mount umount df du ;tar make
; fdisk parted ;vi ;man info ; rpm apt-get
apt-cache dpkg ;lilo grub modprobe ; gcc g++ ;ps fg
bg top ;
最常用的命令是不是poweroff
和 reboot ?
- 命令的通用選項
- cd -
切換到上次所在的目錄
cd .. 切換到上層目錄 ls -lh
很多命令的引數中,“-h”
表示的是將檔案大小轉換為以
“MB” 和 “kB” 為單位
“-l”
是長格式,可以看到檔案更多的資訊
df -h du -h
檢視磁碟空間,已用多少,剩餘多少
free
檢視記憶體和交換空間使用情況。不過一般用top來看更好一些
less -isr
可以用這個命令來看看很多型別的檔案的內容,包括文字檔案,壓縮包等等。加上引數就
能處理中文了 rm -rf
強制刪除,包括目錄和檔案
cp -a
完全複製,保留原來檔案的所有屬性
cp -R
複製,包括目錄和檔案。預設不包括目錄
ln -s
建立符號連結。符號連結的目標可以是目錄或檔案,也可以不存在。產生的新檔案和連結
目標屬性和作用完全一致。
tar zxf tar zcf tar jxf tar jcf
建立壓縮檔案(c)和解壓縮(x)
j 對應的是 .tar.bz2,而 z
對應的是 .tar.gz fdisk -l
列出一個硬碟的分割槽情況。fdisk
命令互動執行更有意思
rpm -ivh rpm -Uvh 安裝一個軟體包
或者升級一個軟體包
rpm -qip rpm -qpl
查詢一個軟體包的資訊和內容
rpm -qf
查詢一個檔案屬於哪個軟體包
apt-get update
升級整個系統,但是不會強制升級一些不合規範的內容
apt-get install
安裝一個軟體。debian最吸引人的地方就在於容易地安裝和刪除軟體
dpkg -i dpkg -l apt-cache search
如果軟體名稱更容易記就好了
實習
- 安裝X輸入法
- X
輸入法一般需要兩個環境變數,一個是
XMODIFIERS, 另外一個是 LC_CTYPE
比如要使用fcitx
輸入法,XMODIFIERS 最好是
“@im=fcitx”
(也可以是其他值),LC
_CTYPE 是一個locale
型別的變數,其中的國家程式碼必須是zh,語言程式碼和編碼倒是無所
謂再比如要使用scim
輸入法,XMODIFIERS 應當是
“@im=scim” , LC_CTYPE 在輸入
中文時同上,輸入其他文字時可以是其他國家程式碼。
當然,如果你的系統中連中文字型都沒有,就不要指望有中文輸入法了。
因為不同的程序有自己獨特的環境變數設定,所以完全可以在同一個視窗系統的不同應用
程式中使用各種輸入法,只要在啟動應用程式之前先設定
XMODIFIERS 就可以了。
安裝X輸入法最困難的是如何使輸入法可以隨著X視窗系統而啟動和退出。不同的發行版有
不同的執行輸入法的方法,比如redhat/fedora
可以修改 “/etc/X11/xinit/xinit.d/xi
nput” 檔案
- 安裝終端的中文環境
- 遍歷 /proc 目錄
- 安裝軟體
查詢軟體包
- 配置檔案,fstab lilo.conf grub.conf
XF86Config
- 配置lilo 或者 grub,
問題修復
- 建議找一個好一點的lilo.conf
或者 grub.conf
看一看,至少是能用的配置檔案看一看,
然後再著手進行修復工作。有可能需要手動從頭開始寫一個配置檔案
確定真的弄清楚了硬碟分割槽情況了嗎?在BBS上求助時,一定要把分割槽情況和配置檔案,還
有導致出錯的步驟都貼上來
精華區lilo 和grub
目錄都各有上百篇帖子,講述安裝和修復的過程
- mount
- mount
命令用於將一個裝置掛載到一個目錄上,然後就可以訪問其中的檔案了。
mount
命令可選的引數非常多,但是要想正確掛載一個裝置,必須搞清楚一些事情
例如: mount /dev/sda1 /mnt/u-disk/sda1 -t vfat -o
defaults,users
其中,USB行動硬碟裝置對應的裝置檔名是
“/dev/sda1”。如果裝置檔名
搞錯了,那麼掛載肯定會出錯。很多出錯都是因為
“/dev/sda1” 對應的裝置
根本不存在 -o
可以指定的選項非常多,不同的檔案系統都有自己特定的選項。常用的就是
users iocharset fmask dmask rw/ro
這一些。iocharset
是自己的編碼,在掛載
windows
網路上的芳鄰的目錄時,iocodepage
是對方的編碼。
看幫助,man mount
非常長。常見的/etc/fstab中的一行是這樣:
/dev/hda1 /mnt/harddisk/C vfat defaults,users,umask=0 0 0
如果是kernel-2.6
那麼還可以加上fmask=111,dmask=0
來控制權限
- 安裝X字型
- 非常簡單。字型有兩個系統,一個是舊一點的X系統,一個是新一點的Xft2系統。要想在兩
個系統中同時使用某個字型,需要將這個字型複製到某個“/usr/local/share/fonts”
的
子目錄中去,然後在
“/etc/X11/fs/config”
中加入這個目錄,最後執行
“fc-cache -fv”
重新整理字型列表,“service
xfs restart” 就可以了
不同的系統中,完成這幾個步驟的具體執行的命令可能不一樣。複製字型應該都一樣,然
後可能需要將這個目錄加入到
“/etc/X11/XF86Config”
當中去,最後也有可能需要重啟
動圖形系統。要靈活一點
- 配置latex 和 ps 系統
- 分割槽,重新安裝系統
- 這裡是實踐部分。硬碟分割槽,常見的分割槽方法是一個主分割槽,一個擴充套件分割槽,然後在擴充套件
分割槽中可以劃分很多很多邏輯分割槽。也有分割槽方法是劃分兩個主分割槽,例如IBM的系統還原
分割槽,還有dell也是這樣。
為linux系統分割槽可以只分一個swap分割槽和一個
“/”
分割槽。swap分割槽大小三五百M就可以
了。而 “‘/’
分割槽”
的說法只是為了方便,意思是將某個分割槽作為
“/” 目錄來使用
。類似的,如果安裝程式要劃分
“‘/boot’
分割槽”,那麼也是將某個分割槽作為
“/boo t” 目錄來使用。
任何一個目錄都可以單獨劃為一個分割槽,例如可以將
“/usr/local”
目錄單獨劃為一個
分割槽,這樣把資料放在裡面,重灌系統時不會被刪除掉。
高階的lvm和lvm2
只在大硬碟上才有用
版上討論了很久是不是要提高技術性了。的確,大部分入門級問題在
從前的帖子中都有涉及,精華區中大概也有答案,重複地提問“將有價值
的論題淹沒了”。
要提高技術水平,就要找到更多的論題和提出更好的想法。但是,魯
迅先生說得好,要有“天才的土壤”才行。所以,對於新手問題也不能封
殺。一種設想,是請幾位熟練的使用者專人負責某一個方面的問題,用信
件聯絡,然後把有價值的討論結果發上來。但是,這樣效率不高。
我想試行一下這樣的做法,就是入門級問題以及解答就跟在這個帖子
後面,過一段時間就清理一下,總結到一篇文章中。請大家配合。暫時設
定精華區的第19個目錄和第29個目錄分別用作已解決/未解決問題的儲存
之處。
後續的第二篇帖子是一些快速解答,可以在firefox
的搜尋欄中使用
“頁面內搜尋”功能來查詢關心的內容。
歡迎修改
Permission is granted to copy, distribute and/or modify this page
under the terms of the GNU Free Documentation License, Version 1.2 or any
later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts and no Back-Cover Texts.
最後一次修改者:bbbush<bbbush@lilybbs>@2004年2月11日
最初的格式是txt
沒有排版,沒有連結
跋
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh