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