apt不止apt-get

本文转自ubuntu中文社区: http://forum.ubuntu.org.cn/viewtopic.php?t=96210

ubuntu(debian)下使用 apt-get 或 synaptic(新立得) 安装软件是件很轻松的事情. 除了简单的安装软件, apt工具集还有许多特别情况下的用法.

任何时候请记住 man 手册是良师.

1. 使用 aptitude 代替 apt-get .
aptitude 虽然没有 apt-get 的”超级牛力”, 但功能却比 apt-get 更强大
首先, 像 apt-get 一样, 可以安装软件
代码:
aptitude install pack-foo

aptitude 解决依赖关系比 apt-get 更智能. 有时用 apt-get 安装软件时会出现 “XXX 需要 XXXX, 但 XXX 已安装” 这类的错误. 这通常是因为某些软件包过新造成的. 此时使用 aptitude, aptitude 会发现问题并给出几个解决方案, 我们只需接受符合心意的方案就可以了.

aptitude 的另外一个优点是会自动记录那些包是”自动安装”(即因依赖关系而安装的), 如果依赖”自动安装”包的包都没被安装, 该”自动安装”包(此时已无用)就会自动删除.
使用这两个命令可以控制包的”自动安装”属性
代码:
aptitude markauto pack-foo #标记成”自动安装”
aptitude unmarkauto pack-foo #标记成”手动安装”

删除软件时使用 markauto 代替 remove, 就可以避免误删重要的包了.
当然, 新版的新立得和 apt-get 也有相似功能, 但貌似不与 aptitude 使用同一个数据库, 所以建议只使用 aptitude 管理软件包.

aptitude 还提供了更灵活的控制软件包版本的方式
代码:
hold – 将软件包置于保持状态
unhold – 取消对一个软件包的保持命令
forbid-version – 禁止 aptitude 升级到某一特定版本的软件包。

以前几周的 libcairo 事件作例子:
代码:
sudo aptitude install libcairo2=1.4.10-1ubuntu4 # 强制降级
sudo aptitude forbid-version libcairo2=1.4.10-1ubuntu4.1 # 封掉出错的版本
sudo aptitude markauto libcairo2 #恢复auto属性

参看 man 手册里对 install 操作的描述, 有更多控制方法.

aptitude reinstall 重新安装软件包, 相当于 apt-get –reinstall install
aptitude purge 彻底删除软件包, 相当于 apt-get –purge remove
一个小技巧
代码:
aptitude purge `dpkg -l|grep ‘^rc’|awk ‘{print $2}’`

aptitude 还集合了多个 apt 工具的功能
代码:
search – 按名称 和/或 表达式搜索软件包
show – 显示一个软件包的详细信息
download – 下载软件包的 .deb 文件

search 操作有点特别
代码:
aptitude search “foo bar” # 关键词 foo 和 bar 都要出现
aptitude search foo bar # 相当于”或”

不过 aptitude 有个小缺点, 默认会将”推荐”的包当成”依赖”的包处理. 这样设置一下就可以解决问题
在自己和root的家目录下的 .aptitude/config 文件加一句
代码:
aptitude::Recommends-Important “false”;

更详细的用法参看 man aptitude.
另外:
1.aptitude 的交互模式貌似很混乱, 不如用新立得.
2.慎用 aptitude install -f .

2. 获得软件包的下载地址
很简单

使用新立得:
1.选中要安装的包
2.文件 -> 生成包下载脚本

使用 apt-get
代码:
apt-get –print-uris install pack-foo

3. 安装齐编译需要的包
首先确定你添加了 deb-src 源, 就像这种
代码:
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse

并已经 apt-get update
然后就可以
代码:
apt-get build-dep pack-foo

把编译 pack-foo 需要的包安装好

PS: 更强悍的方法是用 apt-build, 不过这样就把 ubuntu 搞的太像 gentoo 了. 有兴趣的朋友可以自己看 apt-build 的 man.

4. 找某个文件在哪个包里
如果是安装了的包, 可以用 dpkg -S, 但此法对未安装的包就无效了.
此时可使用 apt-file
代码:
$ apt-file help
apt-file version 2.0.8.2
(c) 2002 Sebastien J. Gross

apt-file [options] action [pattern]

Configuration options:
–sources-list -s sources.list location
–cache -c

Cache directory
–architecture -a Use specific architecture
–cdrom-mount -d Use specific cdrom mountpoint
–package-only -l Only display packages name
–fixed-string -F Do not expand pattern
–ignore-case -i Ignore case distinctions
–regexp -x pattern is a regular expression
–verbose -v run in verbose mode
–dummy -y run in dummy mode (no action)
–help -h Show this help.
–version -V Show version numberAction:
update Fetch Contents files from apt-sources.
search|find
Search files in packages
list|show
List files in packages
purge Remove cache files

此工具在寻找编译时缺的文件时很有用, 用前记得先 apt-file update

PS: auto-apt 有相同功能, 而且可以检测进程需要哪些缺少的文件, 自动提示用户选择安装相应的包.

SAMBA 服务器配置简明参考手册

本文转自 http://www.debsir.org/

1. 声明

2. Samba 概念及原理

2.1 概念

SAMBA: Send Message Block

局域网上共享文件和打印机的一种协议,能够使Unix与Windows系统之间进行共享服务,使Windows能够采用 “网上邻居” 进行访问Unix主机.

2.2 工作原理

让NETBIOS和SMB这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让LINUX可以在网络邻居上被Windows看到.

SAMBA基于的两个守护进程: nmbd smbd

2.3 相关守护进程

smbd: 设置共享目录、打印机等;如果不打开nmb服务器的话,只能通过IP来访问

nmbd: 管理群组、NetBIOS Name等解析工作;

2.4 使用端口

139: 主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。

137: 主要用于”NetBIOS Name Service”(NetBIOS名称服务)

3. Samba 客户端工具介绍

要获取Samba客户端工具需要安装smbclientsmbfs两个软件包

安装命令:

        apt-get install smbclient smbfs

3.1 smbclient软件包提供如下工具:

smbclient

SAMBA客户端程序, 与FTP相类似的一个命令行程序

~# smbclient //192.168.102.43/movies -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ?
?              altname        archive        blocksize      cancel
case_sensitive cd             chmod          chown          close
del            dir            du             exit           get
getfacl        hardlink       help           history        lcd
link           lock           lowercase      ls             mask
md             mget           mkdir          more           mput
newer          open           posix          posix_open     posix_mkdir
posix_rmdir    posix_unlink   print          prompt         put
pwd            q              queue          quit           rd
recurse        reget          rename         reput          rm
rmdir          showacls       setmode        stat           symlink
tar            tarmode        translate      unlock         volume
vuid           wdel           logon          listconnect    showconnect
!
smb: \>

也可以这样:

~# smbclient \\\\192.168.102.43\\movies -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \>

smbclient工具的常用命令选项:

[-s smb.conf] 指定使用的配置文件
[-R name resolve order]指定使用的名称解析顺序
[-p port]指定访问端口
[-I dest IP] 规定要连接的服务器的I P地址
[-U username]规定在建立连接后登录进入服务器所使用的用户名称
[-L NetBIOS name] 可得到服务器支持的所有服务列表

命令示例:

~# smbclient -L //192.168.102.43 -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Sharename       Type      Comment
        ---------       ----      -------
        E$              Disk      Default share
        USBKiller       Disk
        IPC$            IPC       Remote IPC
        D$              Disk      Default share
        print$          Disk      Printer Drivers
        movies          Disk
        Z$              Disk      Default share
        F$              Disk      Default share
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
session request to 192.168.102.43 failed (Called name not present)
session request to 192 failed (Called name not present)
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

而下面的命令则可以得到目录中的文件列表

~# smbclient  //192.168.102.43/USBKiller -c dir -U tony

findsmb

用于查看本网段提供网络共享服务的机器

debian-server:~# findsmb 

                                *=DMB
                                +=LMB
IP ADDR         NETBIOS NAME     WORKGROUP/OS/VERSION
---------------------------------------------------------------------
192.168.201.2   DBSRV          [WORKGROUP] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.11  GZJST-ZWZX    +[WORKGROUP] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
169.254.205.12  unknown nis name
192.168.201.15  NETMAN         [GZJS] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.201.16  NEWSRV         [GZJS] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.18  XZSP           [GZJS] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.130 C4E24347D5DC443 [WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.201.222 DEBIAN-SERVER +[MSHOME] [Unix] [Samba 3.0.26a]

smbget

类似于wget的下载工具, 用于下载SMB资源.

详细用法参阅手册页: smbget manpage

smbstar

用于直接备份SMB/CIFS共享资源到UNIX磁带设备的shell脚本,是个在smbclient基础上建立的非常小的shell脚本,用于把SMB共享资源直接写到磁带上。

用法:

smbtar -s server -u user -p password -x sharename -t output

其中server是服务器的名字,user为用户名,password为密码,sharename为要备份的共享文件名,output为备份文件的名字.

例:

#smbtar -s 10.0.0.2 -u redhat -p redhat -x share -t share.tar

smbtree

显示共享目录树形结构

比如:

~# smbtree
MSHOME
        \\DEBIAN-SERVER                 debian-server server
                \\DEBIAN-SERVER\tony            Home Directories
                \\DEBIAN-SERVER\netlogon        Network Logon Service
                \\DEBIAN-SERVER\print$          Printer Drivers
                \\DEBIAN-SERVER\IPC$            IPC Service (debian-server server)

smbcacls

用于获取或设定NT文件或目录的访问权限列表.

比如:

# smbcacls //192.168.102.43/movies -U tony hfs.exe
Password:
REVISION:1
OWNER:\Everyone
GROUP:\Everyone

~# smbcacls //192.168.102.43/USBKiller -U tony update
Password:
REVISION:1
OWNER:TONYBOX\tony
GROUP:TONYBOX\None
ACL:NT AUTHORITY\SYSTEM:ALLOWED/0/FULL
ACL:TONYBOX\tony:ALLOWED/0/FULL
ACL:TONYBOX\Guest:ALLOWED/19/READ
ACL:NT AUTHORITY\SYSTEM:ALLOWED/16/FULL
ACL:NT AUTHORITY\SYSTEM:ALLOWED/27/0x10000000
ACL:TONYBOX\tony:ALLOWED/16/FULL
ACL:TONYBOX\tony:ALLOWED/27/0x10000000

smbcquotas

用于设定或获取NTFS分区格式共享目录的磁盘配额

rpcclient

用来查看以及设置共享打印机驱动程序.

~# rpcclient  -c 'getdriver "HP LaserJet 1022n"' 192.168.102.43 -U tony
Password:

[Windows NT x86]
Printer Driver Info 3:
        Version: [3]
        Driver Name: [HP LaserJet 1022n]
        Architecture: [Windows NT x86]
        Driver Path: [\\192.168.102.43\print$\W32X86\3\IMFNT5.DLL]
        Datafile: [\\192.168.102.43\print$\W32X86\3\SDhp1020.SDD]
        Configfile: [\\192.168.102.43\print$\W32X86\3\SDNT5UI.DLL]
        Helpfile: [\\192.168.102.43\print$\W32X86\3\SDhp1020.HLP]

        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDhp1020.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUhp1020.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUhp1020.ent]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZJBIG.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZLhp1020.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUxml.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\xerces-c.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1020.img]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1022.img]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1022n.img]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\zshp1020.exe]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSHP1020.HLP]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUHP1020.VER]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\vshp1020.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\IMFPRINT.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\QDPRINT.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\Sd32.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDIMF32.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDDM32.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDDMUI.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\Sr32.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZGDI32.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDhp1020.UNZ]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSPOOL.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSPOOL32.EXE]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZTAG32.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZUNINST.EXE]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\zlm.dll]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\IMF32.DLL]
        Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDNTUM4.DLL]

        Monitorname: [HPLJ1020LM]
        Defaultdatatype: [RAW]

smbspool

使用SMB服务器共享的打印机.

3.2 smbfs软件包提供如下工具

smbmount

用于将windows的共享目录挂载到LINUX本机, 功能与 mount -t smbfs 可以装载一个Linux SMB文件系统。它通常在带 “-t smbfs” 选项执行 mount(8) 命令时被作为mount.smbfs执行。当然内核必须支持smbfs文件系统 格式为 smbmount 共享资源地址 加载点 -o 参数

/mnt# mkdir smb
/mnt# smbmount //192.168.102.43/movies /mnt/smb -o username=tony
Password:
/mnt#

常用参数

      username=<arg>                  SMB 用户名 username
      password=<arg>                  SMB 密码 assword
      port=<arg>                      SMB服务器端口remote SMB port number
      fmask=<arg>                     文件 umask
      dmask=<arg>                     目录 umask
      iocharset=<arg>                 Linux字符集 (iso8859-1, utf8)
      codepage=<arg>                  服务器字符集 codepage (cp850)
      guest                           以匿名方式登录don't prompt for a password
      ro                              只读方式加载mount read-only
      rw                              读写方式加载mount read-write

卸载则需要使用smbumount.

smbumount

命令格式:

smbumount {mount-point}
<tscreen><verb>
<P>
例如
<P>
<tscreen><verb>
~# smbumount /mnt/smb
<tscreen><verb>
<P>

<SECT2> smbmnt
<P>
是装载 SMB 文件系统的协助工具,用于协助 <tt/smbmount/ 程序完成实际装载 SMB 共享资源. <tt/smbmnt/ 必
须以 <tt/root/ 用 <tt/setuid/ 来安装,这样普通用户才能装载他们的 SMB 共享资源。它在装载点和装载目录
上检查用户是否有写权限。
<P>

<SECT> Samba 服务器的安装与配置
<P>

<SECT1> 安装对应软件包
<P>
<tscreen><verb>
~# apt-get update
~# apt-get install samba samba-common

3.3 添加用户

此用户必须是系统用户

比如:

# smbpasswd tony

3.4 服务器的启动与停止

/etc/init.d/samba start|restart|stop

3.5 smb.conf的一般布局

[global]                //[global]段的开始
...
[homes]                 //[global]段的结束,[home]段的开始
...
[printers]              //[homes]段的结束,[printers]段的开始
...
[sharedoc]              //[printers]段的结束,[sharedoc]段的开始
...

其中

[global]        和服务器的整体功能相关的一些参数,系统角色和缺省值
[homes]         利用这个特殊共享,用户可以连接到他们的主目录,而不要求为每个用户定义一个特定的共享
[printers]      从/etc/printcap中创建打印机资源
[sharedoc]      为用户自定义共享节,名字和个数可以根据自己的需求设置
[global]        之外的任何节都被认为是共享资源
                节标题忽略大小写

语法和语义

参数=值

“\”表示继续到下一行

注释行用“#”或“;”字符开头

变量,都以“%”字符作为前缀

includecopy 参数可以用于向配置文件中插入或复制节.

3.6 Debian Gnu/Linux lenny下的默认配置

[global]                                #全局设定
   workgroup = MSHOME                   #设定samba server的工作组为MSHOME, 即在网上邻居中所处的工作组为 MSHOME;
;   netbios name =                      #你可以指定你samba服务器的netbios名字。通过windows机器的网络邻居可以看到
这个名字。如果你没有特别指定,Linux将会使用它自己的网络名作为netbios名。

   server string = %h server            #设定samba server 的服务器说明
;   wins support = no
   dns proxy = no
   log file = /var/log/samba/log.%m     #设定日志文件的存储位置 %m代表访问机器名称
   max log size = 1000                  #设定sambaserver所能存储日志的最大容量, 单位:KB
   syslog = 0                           #设定日志级别,级别越高,记录内容越多
   panic action = /usr/share/samba/panic-action %d
   security = user                      #设定服务器访问的安全登记, user: 使用用户名密码登录
   encrypt passwords = true             #是否对samba用户的密码进行加密处理
   passdb backend = tdbsam              #设定SAMBA用户密码的存放方式, 为tdbsam时密码存放
   在 /var/lib/samba/passdb.tdb 文件中
                                        #如果设为smbpasswd方式则需要使用smb passwd file 来指定密码文件存放路径
   obey pam restrictions = yes          #当用户认证时,服从PAM的管理限制
;   guest account = nobody              #设定系统的试用账号
   invalid users = root                 #禁止root用户通过网络访问
;   unix password sync = no             #设定在系统添加用户时是否同时添加到samba用户列表
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
   socket options = TCP_NODELAY

#共享项目设定
[homes]                                 #访问者的主目录设定
   comment = Home Directories           #说明文字
   browseable = no                      #在浏览资源时, 是否显示共享名称, 设为否, 则必须使用完整路径在能访问
   writable = no                        #是否可以写操作
   create mask = 0700                   #创建文件时的默认权限
   directory mask = 0700                #创建目录时的默认权限
   valid users = %S                     #可以访问的用户名单

#打印机设定
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba              #共享资源的完整路径
   printable = yes                      #是否允许打印
   public = no                          #是否可以匿名访问, 设为no, 则必须使用用户名密码访问
   writable = no
   create mode = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes                      #是否设定问只读模式
   guest ok = n

测试smb.conf 配置文件

~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

3.7 SAMBA系统用户操作

添加系统用户

# adduser etony

添加samba用户

# smbpasswd -a etony
New SMB password:
Retype new SMB password:
Added user etony.

修改用户密码

# smbpasswd etony
New SMB password:
Retype new SMB password:

删除用户

# smbpasswd  -x etony
Deleted user etony.

4. Samba 服务器端工具介绍

4.1 smbd

设置共享目录、打印机等;如果不打开nmb服务器的话,只能通过IP来访问.

4.2 nmbd

是samba的一个名字解析程序,管理群组、NetBIOS Name等解析工作.

4.3 smbstatus

用户当前状态下访问SMB服务器的情况.

~# smbstatus
Samba version 3.0.26a
PID     Username      Group         Machine
-------------------------------------------------------------------
 3599   tony          tony          tonybox      (192.168.102.43)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         3599   tonybox       Wed Nov 14 13:29:25 2007
tony         3599   tonybox       Wed Nov 14 13:30:22 2007

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
3599         1000       DENY_NONE  0x100001    RDONLY     NONE             /home/tony   .   Wed Nov 14 13:30:22 2007

4.4 smbpasswd

用于设置smb用户的密码, smb 用户首先必须是系统用户

添加系统用户

# adduser etony

添加samba用户

# smbpasswd -a etony
New SMB password:
Retype new SMB password:
Added user etony.

修改用户密码

# smbpasswd etony
New SMB password:
Retype new SMB password:

删除用户

# smbpasswd  -x etony
Deleted user etony.

4.5 testparm

检查当前smb.conf配置文件的正确性

~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

5. 安全和访问控制

5.1 符号链接

follow symlinks 是否使用符号链接 wide links 允许遵循共享目录树之外的链接

admin users = melissa 有着administrative 权限的用户可以读、写或修改任何包含在用户已明确给予 administrative 权限的资源里的任何信息

5.2 自动运行

preexec=<命令或脚本路径名>

postexec=<命令或脚本路径名>

root preexec=<命令或脚本路径名>

root postexec=<命令或脚本路径名>

例如对于CDROM共享:

root preexec=/user/sbin/mount -o ro /dev/cd0 /mnt/cdrom

root postexec=/user/sbin/umount /mnt/cdrom

5.3 访问控制选项

hosts allow 和 hosts deny

通过 hosts allowhosts deny 参数指定的主机名和/或IP地址进行的基于主机的访问控制 可以满足最简单的认证需要。多个参数以空格隔开, 表示方法可以为完整的IP地址或网段.

例如: hosts allow = 192.168. except 192.168.0.10

认证级别

security = share, user, server, domain

share—不需要提供用户名和密码

user—-需要提供用户名和密码,而且身份验证由 samba server 负责

server–需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台 samba server作身份验证

domain–需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证

password level = <位数>;

username level = <位数>;

设定用户名密码的最长位数

valid users 和 invalid users

设定只有此名单内的用户才能/不能访问共享资源(拒绝优先)(用户名/@组名) 如果用户名以 @或&字符作前缀,则说明相应的用户名代表一个用户组,如果以+字符作为前缀,则用UNIX组文件对该用户名进行检查

force group 和 force user

指定存取资源时须以此设定的群组使用者/使用者进入才能存取(用户名/@组名)

guest ok

是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

guest account

设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为”nobody”用户

read only

是yes/否no以只读方式共享当与writable发生冲突时也writable为准

read list

设定此名单内的成员为只读(用户名/@组名)

writeable

是yes/否no不以只读方式共享当与read only发生冲突时,无视read only

write list

若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)

force security mode, force create mode, force directory mode, force directory security mode 和 security mask

当用户在NT上更改远程文件的权限时,Samba就把它们映射为UNIX标准权限,并把它们与security mask选项的值进行比较,如果该选项没有把被更改权限所对应的那一位设为1,就忽略这一位的更改(标准UNIX权限有12位)。如果把该选项的某一位设 为0,那么用户就不能更改这一位所对应的权限了。

如果你没有明确地这个选项,那么它的值就和create mask 选项的值相同。如果想允许用户修改文件的所有权限(三个权限组),就把它设为0777就可以了。

security mask 和 create mask

建立文件时所给的权限, 如果security mask没设,则按照create mask 模式.

例如:

security mask = 0777

create mask = 0660

directory security mask 和 directory mask

建立目录时所给的权限

例如:

directory mask = 0771

veto files

隐藏/限定指定文件

选项将文件说明与斜线字符(/)区别开,并支持标准通配符,星号(*)以及问号(?)。如果不允许共享EXE文件,COM文件,或者DLL文 件,可以将一个veto文件属性设置如下:

veto files = /*.exe/*.com/*.dll/

hide files

在客户端进行访问的时候是不显示隐藏文件;

hide dot files

指明是不是像unix那样隐藏以”.”号开头的文件。

delete veto files

当用户删除有veto files的目录时, 是否允许删除veto files以及目录.

delete readonly = no # 是否允许dos用户删除只读文件

# 是否允许dos用户删除只读文件

dont descend

指定 Samba 不应该进入共享中的目录。它可以方便地防止 Samba 进入一个包含递归符号链接的目录,或者限制对如 /proc 和 /dev 等无关目录的访问。请务必测试 dont descend= 设置来确保它们能使用.

例如,您可能需要将 “dont descend= /dev” 换为 “dont descend= ./dev”。

locking

#由于文件只能同时被打开一次,当文件打开时,samba会自动让其他访问守候,为了文件不被破坏

6. 参考文献

samba-doc package

Samba 配置

SAMBA (Domaincontroller) Server For Small Workgroups With Ubuntu 6.10

一步一学Linux与Windows 共享文件Samba




Linux 进程管理

作者:北南南北
来自:LinuxSir.Org
摘要:本文讲述的时进程管理的基本概念和进程管理工具介绍;文中的重点对进程管理工具的分类介绍及应用举例,包括 ps、pgrep、top 、kill、pkill、killall、nice和renice 等工具。

1、程序和进程;

程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。

一个运行着的程序,可能有多个进程。 比如 LinuxSir.Org 所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。


1.1 进程分类;

进程一般分为交互进程、批处理进程和守护进程三类。

值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在 Fedora或Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。

[root@localhost ~]# chkconfig  --level 35  httpd on

由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 LinuxSir.Org ,LinuxSir.Org 的httpd服务器都在运行,等待着用户来访问,也就是等待着任务处理。


1.2 进程的属性;

进程ID(PID):是唯一的数值,用来区分进程;
父进程和父进程的ID(PPID);
启动进程的用户ID(UID)和所归属的组(GID);
进程状态:状态分为运行R、休眠S、僵尸Z;
进程执行的优先级;
进程所连接的终端名;
进程资源占用:比如占用资源大小(内存、CPU占用量);


1.3 父进程和子进程;

他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。

在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;


2、进程管理;

对于Linux进程的管理,是通过进程管理工具实现的,比如ps、kill、pgrep等工具;


2.1 ps 监视进程工具;

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用top工具;


2.1.1 ps 的参数说明;

ps 提供了很多的选项参数,常用的有以下几个;

l  长格式输出;
u  按用户名和启动时间的顺序来显示进程;
j  用任务格式来显示进程;
f  用树形格式来显示进程;
a  显示所有用户的所有进程(包括其它用户);
x  显示无控制终端的进程;
r  显示运行中的进程;
ww 避免详细参数被截断;

我们常用的选项是组合是aux 或lax,还有参数f的应用;

ps aux 或lax输出的解释;

USER	进程的属主;
PID	进程的ID;
PPID  父进程;
%CPU	进程占用的CPU百分比;
%MEM	占用内存的百分比;
NI	   进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS  驻留中页的数量;
WCHAN
TTY  终端ID
STAT 进程状态
    D Uninterruptible sleep (usually IO) R 正在运行可中在队列中可过行的; S 处于休眠状态; T 停止或被追踪; W 进入内存交换(从内核2.6开始无效); X 死掉的进程(从来没见过); Z 僵尸进程; < 优先级高的进程 N 优先级较低的进程 L 有些页被锁进内存; s 进程的领导者(在它之下有子进程); l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) + 位于后台的进程组;
WCHAN 正在等待的进程资源; START 启动进程的时间; TIME 进程消耗CPU的时间; COMMAND 命令的名称和参数;


2.1.2 ps 应用举例;

实例一:ps aux 最常用

[root@localhost ~]# ps -aux |more

可以用 | 管道和 more 连接起来分页查看;

[root@localhost ~]# ps -aux  > ps001.txt
[root@localhost ~]# more ps001.txt

这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看;

实例二:和grep 结合,提取指定程序的进程;

[root@localhost ~]# ps aux |grep httpd
root      4187  0.0  1.3  24236 10272 ?        Ss   11:55   0:00 /usr/sbin/httpd
apache    4189  0.0  0.6  24368  4940 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4190  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4191  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4192  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4193  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4194  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4195  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
apache    4196  0.0  0.6  24368  4932 ?        S    11:55   0:00 /usr/sbin/httpd
root      4480  0.0  0.0   5160   708 pts/3    R+   12:20   0:00 grep httpd

实例二:父进和子进程的关系友好判断的例子

[root@localhost ~]# ps auxf  |grep httpd
root      4484  0.0  0.0   5160   704 pts/3    S+   12:21   0:00              \_ grep httpd
root      4187  0.0  1.3  24236 10272 ?        Ss   11:55   0:00 /usr/sbin/httpd
apache    4189  0.0  0.6  24368  4940 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4190  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4191  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4192  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4193  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4194  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4195  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd
apache    4196  0.0  0.6  24368  4932 ?        S    11:55   0:00  \_ /usr/sbin/httpd

这里用到了f参数;父与子关系一目了然;


2.2 pgrep

pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;

用法:

#ps 参数选项   程序名

常用参数

-l  列出程序名和进程ID;
-o  进程起始的ID;
-n  进程终止的ID;

举例:

[root@localhost ~]# pgrep -lo httpd
4557 httpd

[root@localhost ~]# pgrep -ln httpd
4566 httpd

[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd

[root@localhost ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566


3、终止进程的工具 kill 、killall、pkill、xkill;

终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。

另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些 工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如 mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。


3.1 kill

kill的应用是和ps 或pgrep 命令结合在一起使用的;

kill 的用法:

kill [信号代码]   进程ID

注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;

举例:

[root@localhost ~]# ps  auxf  |grep   httpd
root      4939  0.0  0.0   5160   708 pts/3    S+   13:10   0:00              \_ grep httpd
root      4830  0.1  1.3  24232 10272 ?        Ss   13:02   0:00 /usr/sbin/httpd
apache    4833  0.0  0.6  24364  4932 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4834  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4835  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4836  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4837  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4838  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4839  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
apache    4840  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd

我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;

我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;

[root@localhost ~]# kill 4840  注:杀掉4840这个进程;

[root@localhost ~]# ps -auxf  |grep  httpd  注:查看一下会有什么结果?是不是httpd服务器仍在运行?
[root@localhost ~]# kill 4830   注:杀掉httpd的父进程;
[root@localhost ~]# ps -aux |grep httpd  注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?

对于僵尸进程,可以用kill -9 来强制终止退出;

比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

[root@localhost ~]# ps aux |grep gaim
beinan    5031  9.0  2.3 104996 17484 ?        S    13:23   0:01 gaim
root      5036  0.0  0.0   5160   724 pts/3    S+   13:24   0:00 grep gaim

[root@localhost ~]# pgrep -l gaim
5031 gaim
[root@localhost ~]# kill -9 5031


3.2 killall

killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。


用法:killall 正在运行的程序名

killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;

举例:

[root@localhost beinan]# pgrep -l gaim
2979 gaim

[root@localhost beinan]# killall gaim


3.3 pkill

pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

应用方法:

#pkill  正在运行的程序名

举例:

[root@localhost beinan]# pgrep -l gaim
2979 gaim

[root@localhost beinan]# pkill gaim


3.4 xkill

xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;

xkill 调用方法:

[root@localhost ~]# xkill


4、top 监视系统任务的工具;

和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;


4.1 top 命令用法及参数;

top 调用方法:

top 选择参数

参数:

-b  以批量模式运行,但不能接受命令行输入;
-c 显示命令行,而不仅仅是命令名;
-d N  显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;
-i 禁止显示空闲进程或僵尸进程;
-n NUM  显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;
-p PID 仅监视指定进程的ID;PID是一个数值;
-q  不经任何延时就刷新;
-s  安全模式运行,禁用一些效互指令;
-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;


交互式命令键位:

space  立即更新;
c 切换到命令名显示,或显示整个命令(包括参数);
f,F 增加显示字段,或删除显示字段;
h,? 显示有关安全模式及累积模式的帮助信息;
k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)
i 禁止空闲进程和僵尸进程;
l 切换到显法负载平均值和正常运行的时间等信息;
m 切换到内存信息,并以内存占用大小排序;
n  提示显示的进程数,比如输入3,就在整屏上显示3个进程;
o,O 改变显示字段的顺序;
r 把renice 应用到一个进程,提示输入PID和renice的值;
s 改变两次刷新时间间隔,以秒为单位;
t 切换到显示进程和CPU状态的信息;
A 按进程生命大小进行排序,最新进程显示在最前;
M 按内存占用大小排序,由大到小;
N 以进程ID大小排序,由大到小;
P 按CPU占用情况排序,由大到小
S 切换到累积时间模式;
T  按时间/累积时间对任务排序;
W 把当前的配置写到~/.toprc中;


4.2 top 应用举例;

[root@localhost ~]# top

然后根据前面所说交互命令按个尝试一下就明白了,比如按M,就按内存占用大小排序;这个例子举不举都没有必要了。呵。。。。。。

当然您可以把top的输出传到一个文件中;

[root@localhost ~]# top > mytop.txt

然后我们就可以查看mytop文件,以慢慢的分析系统进程状态;


5、进程的优先级:nice和renice;

在Linux 操作系统中,进程之间是竟争资源(比如CPU和内存的占用)关系。这个竟争优劣是通过一个数值来实现的,也就是谦让度。高谦让度表示进程优化级别最低。负 值或0表示对高优点级,对其它进程不谦让,也就是拥有优先占用系统资源的权利。谦让度的值从 -20到19。

目前硬件技术发展极速,在大多情况下,不必设置进程的优先级,除非在进程失控而疯狂占用资源的情况下,我们有可能来设置一下优先级,但我个人感觉没有太大的必要,在迫不得已的情况下,我们可以杀掉失控进程。

nice 可以在创建进程时,为进程指定谦让度的值,进程的优先级的值是父进程SHELL的优先级的值与我们所指定谦让度的相加和。所以我们在用nice设置程序的优先级时,所指定数值是一个增量,并不是优先级的绝对值;

nice 的应用举例:

[root@localhost ~]# nice -n 5  gaim &   注:运行gaim程序,并为它指定谦让度增量为5;

所以nice的最常用的应用就是:

nice  -n  谦让度的增量值   程序

renice 是通过进程ID(PID)来改变谦让度,进而达到更改进程的优先级。

renice  谦让度    PID

renice 所设置的谦让度就是进程的绝对值;看下面的例子;

[root@localhost ~]# ps lax   |grep gaim
4     0  4437  3419  10  -5 120924 20492 -      S<   pts/0      0:01 gaim
0     0  4530  3419  10  -5   5160   708 -      R<+  pts/0      0:00 grep gaim

[root@localhost ~]# renice -6  4437
4437: old priority -5, new priority -6

[root@localhost ~]# ps lax   |grep gaim
4     0  4437  3419  14  -6 120924 20492 -      S<   pts/0      0:01 gaim
0     0  4534  3419  11  -5   5160   708 -      R<+  pts/0      0:00 grep gaim


6、关于本文;

进程管理还是需要的,虽然在桌面应用上,我们点鼠标就能完成大多的工作,但在服务器管理中,进程管理还是十分重要的。

有的弟兄会说,为什么您不说说在桌面环境中的图形管理的进程工具。我感觉没有太大的必要,如果您会点鼠标就应该能找到有关进程管理的工具。

还有的弟兄会说:Windows的进程管理真的很方便,按一下CTRL+ALT+DEL就可以调出来,随便你怎么杀和砍。我感觉Windows的进 程管理并不怎么样,如果有的程序真的需要CTRL+ALT+DEL的话,呵,那肯定会出现系统假死现象。或者程序错误之类的提示。弄不好就得重启,这是事 实吧。

Windows 的进程管理并不优秀,只是一个友好的界面而已,我想我说的没错吧;


7、后记;

近些天一直在为网络基础文档做计划,当然也随手写一写自己能写的文档, 比如本篇就是; 也想把论坛中的一些弟兄优秀的教程整理出来,但后来一想,如果提交到 LinuxSir.Org 首页上,肯定得做一些修改,如果我来修改倒不如让作者自己来修改,自己写的东西自己最明白,对不对???

在准备网络文档计划的过程中,向etony兄请教了一些基本的网络基础知识。我对网络基础理论基本不懂。听tony兄解说的同时,我也做了笔记。同 时也和tony兄讨论了网络基础篇的布局和谋篇的事,这关系到初学者入手的问题,好象是小事,其实事情比较大。如果写的文档,新手读不懂,老鸟又认为没有 价值,我看倒不如不写。。

3D桌面的安装和设置

本文转自:
http://www.mobile01.com/newsdetail.php?id=4006

萬眾期待,Ubuntu 7.10終於出了!先不要往下看,趕快去抓ISO檔比較重要(抓 PC (Intel x86) desktop CD 版本就好了),別錯過這個目前網路上話題性最高的Linux了~~

這是我改裝Ubuntu 7.10之後的桌面,7.10版的3D桌面比7.04版更簡單、更好用,預裝的特效也比舊版更炫。
我是從Ubuntu 6.06 LTS開始接觸Ubuntu的,我承認那時單純只是因為它在網路上鬧很大,創始人Mark Shuttleworth背景又很特別,讓我想知道這個上過太空的平民、閒錢多到可以組公司來開發並免費寄送OS的人到底在幹嘛。在Ubuntu之前,我已經很久沒玩Linux了,而Ubuntu 6.06真的讓我對Linux完全改觀,驚人的硬體相容性、簡單的操作介面、充滿熱心網友的官方討論區、一堆軟體打個關鍵字就自動安裝,不必因為用盜版而提心吊膽。而在看過Mark Shuttleworth的訪談,並使用Ubuntu每半年一次的改版,我逐漸認同Ubuntu的遠景和理念。

Ubuntu的中心理念是「以人道待人」,每次改版也都明顯感覺它變的越來越簡單,安裝則是不能再更無腦了。在前一版Ubuntu 7.04首度加入封閉原始碼驅動程式的安裝選項,曾引起不小的爭議,因為一般Linux基於道德因素不會有這種特色,但Ubuntu為了讓漂亮的3D桌面更容易啟動,在操作簡易與道德之間做了很好的平衡,Mark甚至直接承認作業系統的「華麗度」對一般人非常重要(“Pretty” is a feature)。對於有道德潔癖的龜毛人,Ubuntu也推出「聖人級道德標準」的特殊版本Gobuntu,這種單純為各種使用者著想的態度讓我很欣賞。

Ubuntu的版號是推出的「年份.月份」,從6.06到7.10已經過了16個月,這短短的時間內Ubuntu改變很大,有人喜歡它,有人討厭它,但誰都不能否認它非常成功,Dell甚至開始出貨預裝Ubuntu的電腦(可惜我的M1330沒有)。如果你從沒用過Ubuntu,那7.10版是很好的入門機會,簡單、漂亮又好玩,如果你已經是Ubuntu的忠實使用者,那還等什麼,趕快來裝了啊!

ISO下載網址:http://tw.archive.ubuntu.com/ubuntu-releases/7.10

ShipIt是Ubuntu的免費光碟寄送服務,除了從網路上抓,只要填上你家地址,Ubuntu甚至會直接寄光碟給你,完全免費!雖然Mark超級有錢,但如果你家有寬頻,還是幫他們省點錢,用網路抓就好了。只是送光碟的同時還會附上Ubuntu貼紙,實在讓人心動啊!光碟寄送不是每個版本都有,但最新的7.10是有ShipIt服務的。
1.安裝Ubuntu 7.10+Vista雙重開機

讓我們面對現實吧,大部分人都離不開Windows,至少我就需要Windows來打電動(Linux也可以打電動,但我懶得去弄WINE)和Office,我也沒有狂熱到只玩Linux,所以我試著以最簡單的方式做到Windows Vista和Ubuntu 7.10共存做雙重開機,至少怎麼開都是美型OS,如果是Intel Mac電腦,就能做到三重美型開機了(三重?那有永和嗎?冷….)。

Ubuntu 7.10內建蠻強的開機程式GRUB,正常情況下也能偵測Vista並自動加到多重開機選單,但為了以防萬一,我決定用Vista內建的BCD(Boot Configuration Data)開機管理程式。因為MBR主開機磁區不好搞,萬一損毀,最好有簡單的方法可以回復,GRUB和BCD都有回復功能,但GRUB的純指令模式…..我只能說我還未夠班,BCD的視窗操作比較適合我。

MBR(Master Boot Record,主開機紀錄)

MBR位於硬碟的最前端,裡面包含開機資訊、硬碟分割表等等重要紀錄,電腦開機的順序是先由BIOS偵測硬體,然後把開機的「權力」交給第一顆硬碟的MBR,執行裡面的開機程式,開機程式會再轉到作業系統的開機檔,這時開機程序才交由作業系統接手。所以多重開機程式大多存在於MBR,裡面寫著硬碟裡不同作業系統的開機檔位置,使用者選了之後就導過去。

雙重開機安裝步驟

1.安裝Vista:應該不用再提,大家都會裝,或電腦出貨時就裝好了。

2.分割磁區給Ubuntu:大概10GB就夠了,想裝一堆軟體就留大一點。

3.安裝EasyBCD 1.7:管理Vista開機程式的好用小工具

4.備份Vista:天有不測風雲,人有旦夕手賤。

5.安裝GRUB到Ubuntu磁區:最重要的步驟,千萬小心!

6.執行EasyBCD加入Ubuntu磁區,大功告成。

先在硬碟劃出一塊區域預留給Ubuntu,Vista已經內建不錯的磁碟分割程式,不會刪掉裡面的內容(在開始功能表的「電腦」上按右鍵選管理,然後在磁碟上按右鍵選「壓縮磁碟區」),擔心的話也可以用Partition Magic或Disk Suite來割,大約留個10GB的空白磁區就很夠了。注意,劃出空白磁區就好,別自己雞婆格式化成ext3和swap,Ubuntu可能會偵測不到。分割完之後,安裝EasyBCD 1.7,然後用TrueImage或Ghost備份整個Vista。

在BIOS設定光碟開機,放進Ubuntu 7.10的安裝光碟(用燒錄軟體還原ISO),直接選第一個「Start or install Ubuntu」,或是按F2選語言,但我過去在這一步選中文都有怪怪的結果,所以我習慣是直接選英文,反正之後安裝過程可以再選中文。。

7.10版的預設介面小改了一點,但一樣是按桌面上的「install」開始安裝。Ubuntu的安裝光碟是Live CD,安裝中途可以先試用它的功能,但3D桌面不行,因為灌驅動程式要重開機,而重開機之後LiveCD就失去所有設定了,另外,3D桌面也不能在VMWare之類的虛擬PC軟體上用。簡單的說,要玩Ubuntu的3D桌面,一定要真的灌進去。

在安裝介面第一步,下拉到「中文(繁體)」。

問你家住哪裡,選一下你的地點來設定時區。

選擇鍵盤,預設的就行了。

選擇要安裝的磁碟,選「手動」。

這時你應該會有一個預留給Ubuntu的空白磁區(free space),點它並按一下「New Partition」,設為「主分割區」,容量7GB左右,用途為「ext3」(Linux的檔案系統),掛載點輸入「/」。

剩下來的空間另外再劃一個新的磁區,用途設為「swap」,這是Linux用的虛擬記憶體。

「你哪位?」,設定一下名字、登入帳號和密碼。

這一步最重要!在最後的確認步驟中,按右下角的「Advanced」,把「用來安裝開裝程式的裝置」從(hd0)改成放Ubuntu的磁區。至於Ubuntu的磁區在哪?同一個畫面下會有「下列分割區將要進行格式化」,其中ext3的部分會有類似sda #1的字樣,就代表Ubuntu會裝在sda1。依你的設定,把這個sda1或sdb5填到空格中,這會把Ubuntu的開機程式GRUB和Ubuntu放在一起,設定之後按「Install」就開始安裝了,大約要裝10~15分鐘。

裝完之後重開機,會直接進到Vista,別擔心,這是正常的。執行之前安裝的EasyBCD,在「Add/Remove Entries」>「Add an Entry」下,選Linux、GRUB和你安裝Ubuntu的磁區(通常是顯示Linux native那個),輸入你喜歡的名字,比如Ubuntu 7.10,當然你要取「Super f**king cool 3D Ubuntu 7.10 (Mobile01 Ultimate Edition)」也沒人會反對啦。

設好之後按一下「Add Entry」,Ubuntu的開機項目就加到Vista的開機選單了。

按一下「Change Settings」,Default OS是預設要進哪個作業系統,還有倒數的秒數(Bootloader timeout),依你自己喜好做設定吧,設好按Save Settings就可以退出程式了。

重開機就會看到開機項目多了Ubuntu 7.10,選它就會跳到GRUB,GRUB通常也會自動抓到Vista,所以選錯開機項目還可以用它跳回Vista。
高手們可能有別的作法,但我覺得用Vista的BCD開機程式來管理Ubuntu比較方便,主要是EasyBCD比GRUB的設定簡單太多了,而且Vista有時會莫名其妙自己爛掉,用Vista安裝光碟可以修復,但它會蓋掉MBR,這時就可以用EasyBCD輕鬆把Ubuntu磁區再加回去,不必重灌GRUB把事情搞的很複雜。不過這個方法有個小缺點,如果你用休眠模式的話,重新啟動時會跳過BCD直接進Vista,必須用重新開機才能進開機選項。

另外,如果在安裝的最後一步不小心用GRUB蓋掉MBR,沒關係,看你要用Vista安裝光碟再蓋回去,或是讓安裝前的Vista備份派上用場,用Ghost或TrueImage做全磁區回復都行。

EasyBCD是很方便,不過它是Vista限定,Windows XP還是建議讓Ubuntu的GRUB自己抓,也蠻方便的,如果要移除Ubuntu的話,就用Windows XP的開機光碟下fixmbr的指令洗掉MBR,還原原來的Windows XP。

Ubuntu 7.10的改進

Ubuntu 7.10有很多改進,新的3D桌面Compiz Fusion當然是讓人最興奮的,這待會再聊,其他改進也都很實用,簡單條列一些如下,詳細更新功能可看官方的7.10 Tour
NTFS寫入:這是我覺得除了3D桌面之外最重要的改進,7.10版可以直接讀寫NTFS磁區,之前只能讀不能寫,要手動裝一個軟體,但那個軟體問題頗多(我灌完之後所有NTFS磁碟都消失-_-)。7.10版內建穩定的NTFS讀寫功能,對於共存Windows和Ubuntu兩種系統的人超方便!

桌面搜尋:在上方工具列多了快速搜尋的功能,Vista、MacOSX都有類似功能,Ubuntu當然也要順應潮流,搜尋關鍵字會列出檔案、程式、聯絡人、書籤等等,並有清楚的分類。

快速使用者切換:如果一台電腦有多個帳號,從工具列就可以快速切換使用環境,不必再一直輸入帳號密碼,不過大部分人應該都是用單帳號吧?

螢幕和顯示卡設定:可以選顯示卡的驅動程式,還有解析度、雙螢幕等等,似乎就是X11的視窗化管理介面,不過問題還蠻多的,我弄個雙螢幕就把畫面搞到花掉了。
2.啟動Compiz Fusion 3D桌面

Ubuntu 7.10最大的改變就是內建Compiz Fusion做為預設的視窗管理程式,Compiz是一套以OpenGL為基礎的3D桌面,前一版Ubuntu 7.04就已經內建。當時除了Compiz之外,還有花樣更多、特效更炫的Beryl,Beryl原本是Compiz的開發分支,但因為搞了太多3D特效,犧牲了穩定度與效能,Compiz拒絕把Beryl所做的改變導回Compiz,Beryl於是變成獨立的程式。

可是Beryl真的超炫,只要看過圖片,任何人都願意犧牲穩定度與效能來裝它,官方討論區的視覺效果版最熱門的主題就是如何安裝Beryl,安裝難度其實不高,只是可能會造成系統損毀。幸好,Compiz與Beryl終於達成共識,在今年三月決定合併,也就是Compiz Fusion,原來的Compiz團隊負責核心,Beryl團隊則負責外掛特效,以同時保有穩定性和華麗度。

不過兩邊才剛合併半年而已,Beryl一些舊外掛還沒有完全轉進Fusion(比如3D視窗),但Fusion也有一堆新特效,所以整體來說我覺得7.10版還是比較炫,重點是不必再灌Beryl就有接近完整的特效,穩定又簡單。勇士級玩家也可以手動裝那些未開放的外掛,把Compiz Fusion操到更炫。

裝完Ubuntu後,先到「系統>管理>軟體來源」,在「Ubuntu Software」和「Third-Party Software」下勾選所有項目,勾完按「Close」,然後按「Reload」更新軟體名單。

按「系統>管理>受限驅動程式管理員」,進入封閉原始碼的驅動程式介面,沒意外的話,Ubuntu應該會偵測到你用的顯示卡(和網路卡),基本上NVIDIA的卡有比較好的支援度,勾選「Enable」就自動下載安裝,裝完之後重開機。

基本上只要驅動灌好,重開機之後就會自動啟動Compiz Fusion,但預設的特效蠻精簡的。按「系統>偏好設定>外觀設定」,Ubuntu 7.10把所有外觀設定通通集中在這裡,再按「Visual Effects」調整3D特效,預設是「Normal」,當然要調到「Extra」開啟更多特效。

開到Extra,視窗移動就有布丁特效了。其實按「CTRL+ALT+左(右)方向鍵」或是按「Win Key+E」也有特效,統一在下面講。

註:Win Key就是CTRL和ALT之間的視窗鍵。
安裝CCSM

Ubuntu 7.10預裝了Compiz Fusion,其實也內建了一堆特效外掛,但官方並不想把設定複雜化,也不願意預設開太多特效拖垮效能,要進階設定的話,得另外裝CCSM(CompizConfig Setting Manager),統一管理所有外掛和設定。

按「系統>管理>Synaptic套件管理程式」,這是Ubuntu安裝軟體的地方,Ubuntu的好處之一就是軟體搜尋和安裝是統一介面,不必上網到處找軟體。

按「CTRL+F」輸入「compiz」做搜尋,應該會看到「compizconfig-settings-manager」這個程式,點它「標記為安裝」。再按上面的「Apply」按鈕開始安裝。

裝完CCSM,回到「外觀設定」下,會多出一個「Custom」選項,按旁邊的「偏好設定」啟動CCSM。

CCSM的主介面,這個,才是Compiz Fusion的菁華!
3.3D桌面特效全開

Compiz是以外掛(Plug-in)的方式啟動特效,CCSM其實是管理這些外掛的介面,裡面每個項目都是獨立的Plug-in,有些Plug-in彼此功能重疊,不能同時開啟。光是CCSM就有數百個選項可以微調,事實上,因為CCSM選項太多,程式甚至附帶「Filter」的功能,用關鍵字來尋找設定,這裡沒辦法一一介紹,所以推薦幾支必開的特效。
首先,當然是把立方體找回來!

在「General Options>Desktop Size」,把水平虛擬大小拉到「4」,這是虛擬桌面的數量,其他兩個選項保持在1。

在CCSM主畫面勾選「旋轉立方體」、「桌面立方體」、「Cube Reflection」、「Cube Gears」和「Cube Caps」。這得關閉Desktop Wall外掛,不過立方體炫多了,Wall只是在切換虛擬桌面時有一個小圖顯示目前所在桌面。

按「CTRL+ALT+左(右)方向鍵」或是「CTRL+ALT+滑鼠左鍵」,看看立方體效果有沒有出現,仔細看一下,Compiz Fusion多了倒影效果,立方體會在底部有淡淡的鏡面特效。

在「桌面立方體>Transparent Cube」,把「Opacity During Roation」降到50左右,這樣在旋轉時立方體會變半透明,還可以看到立方體內部有三個齒輪(Cube Gears),哈哈!

在「旋轉立方體>General」,把「縮放」調到0.16,「速度」調到1.4。這樣按「CTRL+ALT+左(右)方向鍵」會有比較炫的立方塊旋轉特效。
Expose+Cover Flow+Flip3D?天下特效一大抄

在「調整比例>Actions>啟始化所有視窗的視窗選擇器」,在後面的「Screen Edge」的None上點兩下,勾選「TopRight」。

這樣把滑鼠游標移到畫面右上角,就有類似Mac OS X的expose特效了。

在CCSM主畫面選「expo」,這是Compiz Fusion的新特效,勾選「Behaviour」下的「Tilt View」。

比照假的expose,在「Expo>Actions」下,選TopLeft。

游標移到畫面左上角,哇!炫吧~這個虛擬視窗總覽好用的地方在於你可以拉動裡面的視窗,任何移動到其他桌面上(移動時當然也有布丁特效),除非在某一個虛擬桌面上點一下滑鼠右鍵,不然就會一直保持在expo介面下。

在CCSM主畫面選「Shift Switcher」,這是Compiz Fusion另一個新特效,到「Actions>Initial(All workspace)」下,Screen Edge的熱鍵改成「BottomLeft」。

游標移到畫面左下角,哇咧,好像有點眼熟吧?這不就是iTunes的Cover Flow特效嗎?只是用在視窗選擇上了,按左右方向鍵或滾輪可循環視窗,按Enter或左鍵選定。這個特效有點操,顯卡不夠力的話在「翻頁」時可能會有點頓,另外特效也還有點bug,有時沒辦法顯示視窗畫面,只大大的秀一顆超糊的圖示。

回到「Shift Switcher」的設定,在「Apperance>Switch mode」下,可切換Cover和Flip兩種,預設是Cover,猜猜Flip是什麼。

沒錯,你猜對了!正是Vista的Flip3D,當然角度要換一下免得有「參考」的嫌疑。一樣按方向鍵或滾輪選擇視窗。

在CCSM主畫面勾選「Ring Switcher」,在「Actions>Next Window(All workspace」的「Key」上點一下左鍵,再按下你想要的熱鍵(原來的是Alt+Win Key+Tab,章魚才按的出來….),比如「Win Key+W」(會顯示成Super+W)。

我猜這個特效應該是從Looking Glass 3D參考來的,拿來取代Alt-Tab還不錯。

其他視窗特效,我的大龍炮煙火呢?

在CCSM主選單勾選「Windows Preview」,這會啟動工具列的視窗預覽功能,就跟Vista的一樣。

在「移動視窗>不透明度」,把數值改到70左右,這樣移動視窗時會有半透明效果。

在「General Options>Opacity Settings」,按「新增」,輸入「dock」和數值「80」;然後再輸入「DropdownMenu」和「popupMenu」,數值也都是80,這會讓工具列和它的選單變半透明。

在「Animations>CloseAnimation」,在第一個Glide2上點兩下,從CloseEffect的下拉選單中選「Burn」。

再到「Effect Settings>Fire」下勾選「Randomly Colored Fire」。

YA!我最愛的煙火又回來了~~~其他「FocusAnimation」(點一下視窗成為前景)、「MinimizeAnimation」(最小化視窗)、「OpenAnimation」(開啟視窗)都可以照這個方式自己選喜歡的動畫,或通通都選「Random」(隨機)也行,每次都會換不同的特效。
Widget,對!Ubuntu「也」有Widget

Compiz Fusion另一個新功能是Widget Layer,就像Mac OS X的Dashboard完全一樣,按熱鍵「F9」會讓畫面暗下來,秀出各種小玩具。這功能必須和Screenlet搭配,先安裝Screenlet和小玩具,然後再加進Compiz Fusion的Widget Layer中,就會有非常類似MacOSX的Dashboard效果。

先到「系統>管理>軟體來源」,在「第三方軟體」下按「加入」,加入底下兩個網址:

deb http://hendrik.kaju.pri.ee/ubuntu feisty screenlets

deb http://hendrik.kaju.pri.ee/ubuntu edgy screenlets


然後執行「應用程式>附屬應用程式>終端機」,輸入:

wget http://hendrik.kaju.pri.ee/ubuntu/hendrikkaju.gpg -O- | sudo apt-key add – && sudo apt-get update

sudo apt-get install screenlets

到「系統>偏好設定>作業階段」,按「新增」然後在名稱打入「Screenlet Daemon」,指令則是「screenletsd start」,這會讓Screenlet在開機就啟動。

要手動新增小玩具的方法,是在「HomeFolder」下建一個「.screenlets」的目錄,然後抓一個最好用的小玩具「Sidebar」,解開來把Sidebar的目錄進去.screenlets下。

從「應用程式>其他」下執行「Control」,會出現一個圓球,在上面按右鍵選「screenlet>Add>Sidebar」,畫面右邊就會出現透明黑色的Sidebar。

在Sidebar上右鍵選「ScreenletManager」,從這裡就可以用比較方便的介面加入Widget,甚至直接把抓來的Widget壓縮檔直接拉到Sidebar也會自動安裝。從這個介面也可以啟動Widget,勾選Enable/Disable就行了,如果是很喜歡的Widget,可以勾選「Automatically start on login」讓它開機就啟動。

回到CCSM,勾選「WidgetLayer」。

在Gnome-Look.org的Desklets項目下有一堆Widget可抓,啟動之後在Widget上右鍵選「Window>Widget」,這些Widget會消失,別擔心。

按下「F9」,呵呵!這不就是Mac OS X的Dashboard嗎?
最後,再回到「外觀控制」下調整「佈景主題」,Ubuntu用的桌面環境是GNOME(Compiz是在GNOME之下的3D視窗合成系統),GNOME的主題分成三種:GTK 2.x是介面控制,像是按鈕、勾勾之類的,Metacity是視窗邊框的裝飾、Icon則是圖示。在Gnome-look.org上有一堆主題可以挑,抓回來後在「佈景主題>安裝」中選擇檔案就會套用,桌布也是在這個介面下更換,很簡單的,自己試試看吧!

我套了LiNsta 3Glass Icons Theme和瀏覽器的Skin做出假Windows Vista,嘿嘿,比真的Vista還炫是輕而易舉!
隱藏關特效

若仔細對照之前Ubuntu 7.04的教學,會發現7.10版少了一個重要的特效「3D Windows」,它讓視窗像一本書那樣突出於立方體之上,這是Beryl特有的外掛,但合併到Compiz Fusion之後有蠻多問題,官方還在努力開發中。事實上有方法可以把這些開發中的特效加回去,但得手動抓原始碼回來自己編譯,在第六次把我的Ubuntu 7.10搞爛之後,我決定等懶人版的方法出來再補完這一段。如果有真強者想要挑戰的話,可以試試Bulletproof CF Automated Compilation Script v1,真的成功的話別忘了抓圖炫耀一下!聽說可以開啟另一個Atlantic特效,把立方體當魚缸,在裡面養魚。
4.其他美型軟體

既然都已經灌了Widget,乾脆一不做二不休,連Dock一起灌吧!目前網路上最出名的Dock是Avant-Window-Navigator(簡稱AWN),它會多一條類似MacOSX的底部工具列,蠻炫的,如果你打算把桌面改造成MacOSX,那強烈推薦再搭配Mac4LinOSX Icon,合起來差不多就是Ubuntu用的Mac Transformation Pack。

首先「軟體來源」的「第三方軟體」裡加入下面兩個網址:

deb http://download.tuxfamily.org/syzygy42 gutsy avant-window-navigator

deb-src http://download.tuxfamily.org/syzygy42 gutsy avant-window-navigator


接下來要在「終端機」輸入一大堆指令,最簡單的方法就是複製之後按滑鼠中鍵一行一行貼上。

wget http://download.tuxfamily.org/syzygy42/reacocard.asc

sudo apt-key add reacocard.asc

rm reacocard.asc

sudo apt-get update

sudo apt-get install avant-window-navigator-bzr awn-core-applets-bzr

sudo apt-get install bzr

bzr co http://bazaar.launchpad.net/~awn-curves-team/awn/awn-curves awn-curves

cd awn-curves

./autogen.sh && make

sudo make install

裝完之後從「應用程式>附屬應用程式>Avant Window Navigator」執行,視窗底部會出現小小的Dock。

在Dock上按右鍵選「偏好設定」。

在「General>Bar Apperance」選3D look(如果你選Curve look不會當掉的話,Curve會更漂亮),底下Bar的高度、Icon位移的程度都可以調。

AWN內建一些小工具,可以在「Applets」下挑著用,大多蠻實用的,因為AWN一裝就可以取代原本GNOME下方工具列,這些Applets可以代替原本的功能,像是垃圾桶、虛擬桌面切換、音量控制等等。

除了內建的工具,也可以自己加上程式,從「Launcher」底下新增,不過得知道程式的執行檔名字。

最後一個則是Themes,這是改變AWN的外觀,主題在Mac4Lin裡面可以找到。

可以直接從AWN上執行上方功能表的所有程式。

裝了AWN遲早會遇到的問題就是覺得圖示太醜,配不上整高質感的桌面了,抓回OSX Icon解開,裡面有一堆高解析Icon,在你覺得不爽的圖示上按右鍵選「Change Icon」,一個個手動把它們換掉吧!到此我的改裝也差不多結束了,其實原本並不想弄Mac主題的,結果還是中毒太深XD,硬是要搞個超炫的假麥克來自嗨。
以下為自嗨抓圖,請原諒我吧….呵呵…

爽!

很爽!

爽到爆!

超xx的爽!
對了,差點忘了講,裝了一堆美型軟體是會操電腦的,也保証會縮短Notebook的續航力,別說我沒事先警告喔~
給Ubuntu一個機會吧!

當一件東西太過出名,就會有人刻意不去用它,通常並不是因為東西不好,而是它們的死忠粉絲有時太煩人了,像Apple、Sony、哈利波特等等,有點怕Ubuntu也快步上後塵了。我並不想讓自己聽起來像Linux的盲目崇拜者,我認同並尊重Ubuntu的理念,但不會認為用Windows的就是枯燥無聊穿西裝的白痴(不然就罵到自己了XD)。Ubuntu還有許多地方要加強,很多是整個Linux社群和軟硬體廠商要一起努力的,大家不妨給Ubuntu、給眾多Linux一個機會,Mandrake、Fedora、SUSE都很好用,也都內建Compiz Fusion,越多使用者就越能鼓勵他們改進,反正它們好玩、免錢又漂亮。就算不想灌也沒關係,至少記住這些名字並留下「Linux也可以被一般人接受」的印象。

隨著Ubuntu 7.10的釋出,Mark Shuttleworth也宣佈8.04版(代號Hardy Heron),從版號就知道將在2008年四月推出,這版的重要性是它會掛上LTS(Long Term Support),上一個LTS版已經是久遠的6.06版了。LTS代表官方會有三年的更新支援,而非一般的18個月,Ubuntu每半年就改版一次,三年的支援是很大的承諾,通常只有非常穩定、最佳化的版本才會掛LTS,7.04和7.10都還在實驗一些新技術,8.04將會是集大成之作。用一句老話做結尾,讓我們拭目以待吧!

fstab教程

本文转自: http://forum.ubuntu.org.cn/viewtopic.php?t=58468

可能玩Linux的朋友都知道fstab这个文件,如果要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab则是其中之一。这个文 件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。因此,我们需要理解其中的内容,了解它如何与 mount命令配合工作,并能够针对自己的情况进行修改。

作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。如 果遇到一些类似于无法挂载你的windows分区阿,无法使用你的光驱阿,无法对某个分区进行写入操作阿什么的,那么基本上可以断定,你的fstab内容 有问题了。也就是说,你可以通过修改它来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。

说了半天,/etc/fstab其实就是一个文本文件,用gedit或者vi都可以打开,当然,前提是root权限。在这个文件中,每个文件系统 (包括分区或者设备)用一行来描述,在每一行中,用空格或TAB符号来分隔各个字段,文件中以*开头的行是注释信息。Fstab文件中的纪录的排序十分重 要。因为 fsck,mount或umount等程序在做它们的工作时会按此顺序进行本。下面进行详细的讲解,本文假设读者已经有挂载文件系统和分区的基础知识。

在讲解之前要说一下,每个人所使用的系统情况都是不同的,包括硬件种类,所用系统等,因此fstab文件肯定是有所差异的。但是其基本结构,如上所述,都不会变。所以我们先以一个fstab内容作为模板进行讲解。

首先请看下面这个例子:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
/dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0
/dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0
proc /proc proc defaults 0 0
/dev/hda1 swap swap pri=42 0 0

这些看起来毫无意义的字符代表了什么?在对应相应分区或者存储设备信息的每一行中,每一列又是什么意思?先大体讲一下,第一列表示设备的名称,第 二列表示该设备的挂载点,第三列是文件系统,第四列是挂载选项,第五列是dump选项(用一个数字表示),第六列(接下来的数字)表示文件系统检查选项。 好了,接下来,就要详细介绍这些参数的具体含义了。

第一、二列:设备和默认挂载点

说实话,第一列和第二列的内容是最简单最直接的,它们的作用就是告诉mount命令,我想挂载什么分区或者什么设备,以及我所希望的挂载点在哪 里。在fstab中为某一个设备指定的挂载点是其默认挂载点,也就是当你在挂载目录的时候没有手工指定其他目录的话,系统就将该设备挂载到这个目录。大多 数 Linux发行版都会为挂载点创建专门的目录,大多数是在/mnt下,但是一些发行版(比如SUSE或者ubuntu)是在/media下。笔者使用的是 ubuntu,所以示例信息中也是用的/media目录。

按照我们给出的fstab示例,如果你敲入命令

$ mount /dev/fd0

你的软驱就将挂载到/media/floppy,因为这是你告诉系统的软驱默认挂载点。如果没有这个信息,当你敲入mount命令时,mount 会感到很困惑:该死的,你想让我把这玩意挂载到哪里去呢?当然,如果你看fstab中发行版给你指定的默认挂载点不顺眼,也可以自由修改它,修改成任何一 个你希望的目录都可以。如果还不存在,就首先创建这个目录。要知道,fstab是不会把所有工作都给你包干的哦。

另外,有一些分区和存储设备是在Linux系统启动的时候就自动挂载的,比如,让我们看看刚才列出来的fstab示例信息,有两行是这样的:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2

正如刚才我们讲到的那样,这两行表示/dev/hda2默认挂载到/根目录,而 /dev/hdb1则默认挂载到/home目录,。这些工作在你Linux系统启动的时候就会通过读取fstab自动完成,否则的话……想象你会遭受什么 样的折磨吧,所有的程序都在/根目录下,而你却无法使用,因为你没有挂载/根目录!恩,我保证,这将是一次让人沮丧的系统使用经历。

除了显示的使用设备名,你可以使用设备的UUID或设备的卷标签,例如,你可以在这个字段写成“LABAL=root”或“UUID= 3e6be9de- 8139-11d1-9106-a43f08d823a6”,这将使系统更具伸缩性。例如,如果你的系统添加或移除了一个SCSI硬盘,这有可以改变你的 设备名,但它不会修改你的卷标签。

对于NFS mount操作,这个字段应该包含host:dir格式的信息,例如:knuth.aeb.nl:/,对于进程文件系统procfs,使用proc。

第三列:文件系统类型

fstab中的第三列指示了设备或者分区的文件系统类型。它支持很多种类的文件系统,我们在这里只介绍最为常用的。如果想了解你的kernel目 前支持哪些文件系统,可以查看/proc/filesystems的内容。如果这个字段定义为swap,这条纪录将关联到一个用于交换目的的文件或分区。 如果这个字段定义为ignored,这行将被忽略。这对于显示目前没有使用的分区非常有用。

ext2 和 ext3: Linux下的Ext2文件系统,是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。至于Ext3文件系统,它属于一 种日志文件系统,是对ext2系统的扩展。日志式文件系统的优越性在于,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回朔追 踪。由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,而不必花时间去检查其他的部分,故文件系统检 测不一致时,重整的工作速度相当快,几乎不需要花时间。

reiserfs: ReiserFS是一个非常优秀的文件系统。也是最早用于Linux的日志文件系统之一,其机制比Ext3要先进得多,风雷小弟一直使用的就是它,很多发 行版现在也把它作为默认文件系统了。可惜其作者前段时间出事了……具体情况就不说了,也不知道下一代reiserfs4还能不能出来,因为ext4都有 了。

swap: Swap,即交换区,把它想象成虚拟内存就行了。

vfat 和 ntfs:一看就知道是Windows分区格式了,呵呵。98,me等系统都是使用的vfat,也就是最流行的fat32格式,而NT系列则多使用 NTFS,当然也不是固定的,因此2000或者XP系统要具体情况具体分析。当初Linux对NTFS的写入支持不好,所以大多数资料都建议用户使用 vfat格式,但是现在支持已经很好了,即使不重新编译内核,也可以通过ntfs-3g来进行写入支持(具体方法请参考这篇文章),因此不用太在意这个 了。

auto:当然,这不是一个文件系统类型。auto只是表示,文件系统的类型将被自动检测。在上面的示例中,你会发现软驱和光驱的文件系统类型都 是auto,为什么呢?因为它们的文件系统类型随时都可能改变,比如软驱,优盘这种设备,可能今天是vfat格式,明天你就把它格式化成了ntfs,因 此,最明智的做法就是告诉系统,我没法确定这东西的当前类型,还是你自己检测吧。

udf: 由于刻录光驱越来越流行,现在很多发行版自带的fstab中,光驱的文件格式类型是UDF,UDF是Universal Disc Format的缩写,与ISO 9660格式相容。它采用标准的封装写入技术(PW,Packet Writing)将CD-R/CD-RW当作硬盘使用,用户可以在光盘上修改和删除文件。利用UDF格式进行刻录时,刻录软件将数据打包,并在内存中临时 建立一个特殊文件目录表,同时接管系统对光盘的访问。

iso9660: 很多光驱也使用的这个选项。ISO9660是一种描述适合CD盘片的电脑文件结构的国际标准。采用此标准的盘片可以在不同的操作系统上使用,如MAC和Windows。

第四列:挂载选项

fstab中的第四列表示设备或者分区所需要的挂载选项。这一列也是fstab中最复杂最容易出错的一列,当然,只要你能知道一些最常用的选项是 什么意思,就可以让你从头疼中解脱出来。如果要把可用的选项一项一项介绍……恩,我估计我会写到明天,所以,我还是只是分析最常用的一些选项,如果你想知 道更多的东西,还是求助于man吧。

auto 和 noauto: 这是控制设备是否自动挂载的选项。auto是默认选择的选项,这样,设备会在启动或者你使用mount -a命令时按照fstab的内容自动挂载。如果你不希望这样,就使用noauto选项,如果这样的话,你就只能明确地通过手工来挂载设备。

user 和 nouser:这是一个非常有用的选项,user选项允许普通用户也能挂载设备,而nouser则只允许root用户挂载。nouser是默认选项,这也 是让很多 Linux新手头疼的东西,因为他们发现没有办法正常挂载光驱,Windows分区等。如果你作为普通身份用户遇到类似问题,或者别的其他问题,就请把 user属性增加到fstab中。

exec 和 noexec: exec允许你执行对应分区中的可执行二进制程序,同理,noexec的作用刚好相反。如果你拥有一个分区,分区上有一些可执行程序,而恰好你又不愿意, 或者不能在你的系统中执行他们,就可以使用noexec属性。这种情况多发生于挂载Windows分区时。exec是默认选项,理由很简单,如果 noexec变成了你/根分区的默认选项的话……

ro: 以只读来挂载文件系统。

rw: 以可读可写的属性来挂载系统。

sync 和 async:对于该文件系统的输入输出应该以什么方式完成。sync的意思就是同步完成,通俗点讲,就是当你拷贝一个东西到设备或者分区中时,所有的写入 变化将在你输入cp命令后立即生效,这个东西应该立马就开始往设备或者分区里面拷贝了。而如果是async,也就是输入输出异步完成的话,当你拷贝一个东 西到设备或者分区中时,可能在你敲击cp命令后很久,实际的写入操作才会执行,换句话说,就是进行了缓冲处理。

有时候这种机制蛮不错的,因为sync会影响你系统的运行速度,但是这也会带来一些问题。想一想,当你希望将一个文件拷贝到u盘上时,你执行了 cp 命令,却忘记执行umount命令(它会强行将缓冲区内容写入),那么你拷贝的文件实际上并没有在u盘上面。如果你是使用的mv命令,而你又很快将u盘拔 出……恭喜你,文件会从这个星球上消失的。因此,虽然async是默认属性,但是对于u盘,移动硬盘这种可移动存储设备,最好还是让他们使用sync选 项。

defaults: 所有选项全部使用默认配置,包括rw, suid, dev, exec, auto, nouser, 和 async。

一般用户没有特殊需求,直接使用defaults就可以了。看完介绍,我们再回过头去看看前面的示例内容,以光驱为例,主要关注挂载选项这里,可以看到,光驱和其他分区设备的不同是ro,因为普通光驱是只读的。而exec则让你可以从光驱上直接执行某些程序。

第五、六列:dump和fsck选项

Dump和fsck?这是什么东西?恩,dump是一个备份工具,而fsck是一个文件系统扫描检查工具。我不会在这里详细介绍它们,因为用man或者google都可以获得更加详细的信息。

fstab的第五列是表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份。如果是0,dump就会被忽略,事实 上,大多数的dump设置都是0。而第六列是fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查,根文件系统/对应该字段的 值应该为1,其他文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。

修复安装XP后导致无法进入Linux的方法

Live CD启动
sudo grub
find /boot/grub/stage1找出/boot所在分区,你会得到一个运行结果,例如(hd0)
root (hd0,x) (x是linux系统的分区号)
setup (hd0)
出现…succeeded后,quit重新启动

火狐无法安装FLASH插件的解决方法

从adobe上下一个flashplayer,解压,复制libflashplayer.so到/usr/lib/firefox/plugins/中就可以了

重新安装显卡驱动

sudo dpkg-reconfigure xserver-xorg

修复开关机滚动条画面显示不正常的错误

先改etc/usplash.conf里面的分辨率,然后执行

sudo dpkg-reconfigure usplash-theme-ubuntu

sudo dpkg-reconfigure usplash-theme-ubuntu的作用是重新配置usplash