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 沒有排版，沒有鏈接