lilybbs faq(7)

NAME
lilybbs-faq - linux入門以及百合 Linux 版精華區導讀

QUESTIONS 問題與解答

  不需要任何命令的簡單介紹

歷史  (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 只在大硬碟上才有用

HISTORY 歷史
版上討論了很久是不是要提高技術性了。的確，大部分入門級問題在 從前的帖子中都有涉及，精華區中大概也有答案，重複地提問“將有價值 的論題淹沒了”。

    要提高技術水平，就要找到更多的論題和提出更好的想法。但是，魯 迅先生說得好，要有“天才的土壤”才行。所以，對於新手問題也不能封 殺。一種設想，是請幾位熟練的使用者專人負責某一個方面的問題，用信 件聯絡，然後把有價值的討論結果發上來。但是，這樣效率不高。

    我想試行一下這樣的做法，就是入門級問題以及解答就跟在這個帖子 後面，過一段時間就清理一下，總結到一篇文章中。請大家配合。暫時設 定精華區的第19個目錄和第29個目錄分別用作已解決/未解決問題的儲存 之處。

    後續的第二篇帖子是一些快速解答，可以在firefox 的搜尋欄中使用 “頁面內搜尋”功能來查詢關心的內容。

    歡迎修改

Copyright
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.

AUTHOR
最後一次修改者：bbbush<bbbush@lilybbs>@2004年2月11日

最初的格式是txt 沒有排版，沒有連結

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh