红联Linux门户
Linux帮助

从浅到深学习Linux

发布时间:2011-12-16 18:52:47来源:红联作者:okzokz123
[i=s] 本帖最后由 okzokz123 于 2012-9-20 11:49 编辑 [/i]

************************ 简单的基础 **************************
查看LINUX版本: #cat /proc/version
查看X的版本: X -version
Linux的重启方法
Reboot
Init 6
Ctrl+alt+delete
Shutdown -r time [warning-message]
如:#shutdown -r +3 “system will be down in 3 minites,please save you work”
#shutdown -r now
#shutdown -r 03:15

登录和注销 :gnome-session-save --kill --silent //注销gnome桌面
超级用户登录后的操作提示符是“#”;普通用户登录后的操作提示符是“$”
若要注销登录,用户可以在当前的登录终端上输入logout命令或使用Ctrl+d热键进行。
终端之间的切换采用:alt+f1--f7

Linux关机的方法
Halt
Init 0
Shutdown -h time [warning-message]
如:#shutdown -h now

查看bios及系统:
root身份或sudo
sudo dmidecode -h

sudo dmidecode --type bios

sudo dmidecode -t memory

sudo dmidecode -t processor

sudo dmidecode -t system

1. 查看CPU使用情况的命令
""每5秒刷新一次,最右侧有CPU的占用率的数据
$ vmstat 5
""top 然后按Shift+P,按照进程处理器占用率排序
$ top
  
2. 查看内存使用情况的命令
""用free命令查看内存占用情况
$ free
""top 然后按Shift+M, 按照进程内存占用率排序
$ top
""free -s 1 //每秒显示一次
""watch -n 1 free -m //每秒更新一次
 
3. 查看网络流量
""可以用工具iptraf工具
# iptraf -g
""针对某个Interface的网络流量可以通过比较两个时间网络接口的RX和TX数据来获得
$ date; ifconfig eth0
$ date; ifconfig eth0
  
4. 查看磁盘i/o 或使用iotop
""用iostat查看磁盘/dev/sdc3的磁盘i/o情况,每两秒刷新一次
$ iostat -d -x /dev/sdc3 2
$ iostat -d -x 10 3 (每十秒一次,连续3次)

5.查看正在使用的网络模块
ethtool -i eth0
ethtool ethX //查询ethX网口基本设置
ethtool -h //显示ethtool的命令帮助(help)
ethtool -i ethX //查询ethX网口的相关信息
ethtool -d ethX //查询ethX网口注册性信息
ethtool -r ethX //重置ethX网口到自适应模式
ethtool -S ethX //查询ethX网口收发包统计
ethtool -s ethX [speed 10|100|1000] //设置网口速率10/100/1000M,用ethtool来禁用使用e1000网卡驱动模块的网卡自适应特性时,必须同时指定链路速度和全双工工作模式,如:ethtool -s ethx autoneg off speed 1000 duplex full
[duplex half|full] //设置网口半/全双工
[autoneg on|off] //设置网口是否自协商
[port tp|aui|bnc|mii] //设置网口类型

6.查看显卡DRI直接渲染3D加速是否开启
glxinfo | grep rendering

7.查看主板信息
lspci -v

8.查看网卡信息
lspci |grep Ethernet

9.查看主板CPU内存电压温度风扇转速
sensors

10.查看硬件信息
sudo lshw

cd
功能:改变工作目录。
语法:cd [directory]
用法:
#cd ..返回上一层目录
#cd ~进入自家目录

ln
建立链接文件
语法:ls [-s] 源文件名 目标文件名
说明:链接文件分为硬连接和软连接,硬连接相当于一个数据源有两个文件名,删除一个文件另一个文件不变,修改一个文件的内容另一个文件的内容也跟着改变。硬连接不能和另一个目录链接,也不能和其他文件系统的文件进行链接。软链接相当于快捷方式,没有上面的限制,加-s参数创建软链接。

locate
功能:可以查找具体文件或命令的路径,可以查找具体的字符串或子串
用法:locate 文件名或关键字

************** 用户和组 ****************
linux下的用户分为三类:
1、超级用户:超级用户的uid和gid均为0
2、普通用户:普通用户的uid和gid是在500-60000范围内的一个值
3、伪用户:uid的值是在1-499之间,不能登录,只是满足系统管理的要求,如bin,sys,lp 等。

增加用户: sudo adduser 用户名
增加组: sudo groupadd 组名
新建用户同时增加工作组: useradd -g 组名 用户名
删除用户: sudo userdel 用户名
删除组: sudo groupdel 组名
设定组密码: gpasswd 组名
删除组密码: gpasswd-r 组名
定义组管理远:gpasswd-A 用户名 组名
增加组成员: gpasswd-a 用户名 组名 或 usermod -a -g 组名 用户名 //修改用户的所在组.是覆盖另外可加-a参数以确保原来的权限不受影响,如果要加入多个组: 应该用 usermod -a -G 组名,组名,组名.....+空格+用户名
删除组成员: gpasswd-d 用户名 组名
显示用户信息: id user 或 cat /etc/passwd
修改当前用户的密码: passwd //不加选项或用户名即表示当前用户
修改用户密码: sudo passwd 用户名
删除用户密码 passwd -d 用户名
禁用某个帐户: sudo usermod -L 用户名 或 sudo passwd -l 用户名
启用某个帐户: sudo usermod -U 用户名 或 sudo passwd -u 用户名

linux下的组分为标准组和私有组:
1、当在创建一个新用户时,若没有指定他所属于的组,系统就会建立一个和该用户同名的私有组;
2、标准组可以容纳多个用户,若使用标准组,在创建一个新的用户时就可以指定他所属于的组。
四、帐号系统文件
1、linux下的帐号系统文件主要有/etc/passwd,/etc/group,/etc/shadow ,这些文件只有超级用户才可以修改
成为超级用户--修改用户的uid和gid为0即可.
命令:usermod -u 0 -o 用户名
-o:强迫修改uid

二、文件压缩和归档类命令
1、gzip
功能:是一种压缩程序,特点是可以得到最佳的压缩率,但速度较慢。
语法:gzip [-vd9] 文件名
-v:冗长型选项,可以显示每个文件的大小等
-d:解压
-9:产生最佳压缩效果,但速度较慢。

2、gunzip
功能:可以把压缩的文件解压成原始文件状态,可以解压扩展名为.gz,.z,.Z和.tgz等类型的压缩文件
语法:gunzip [-v] 文件名
-v:显示解压缩文件的冗长结果

3、tar
功能:可以归档多个文件和目录到一个.tar文件下,还可以从一个归档文件中抽取一个文件和目录。
语法:tar [-c][-r][-t][-x][-v][-z][f 文件名] 文件和目录名
-c:创建归档文件
-r:增加文件到归档文件中
-t:查看归档文件中的文件
-x:解开归档文件
-v:显示冗长信息
-z:进行压缩和解压


如: #tar -cvf back.tar 文件1 目录1 文件2
#tar -rvf back.tar 文件3
#tar -tf back.tar
#tar -xvf back.tar
#tar -czvf back.tar.gz 文件1 目录1 文件2
#tar -xzvf back.tar.gz
例:调用bzip2来备份某个分区
#tar cjf /目的地/文件名.tar.bz2 /来源分区标识/
解压bzip2文件
#tar xjf xxx.tar.bz2
以调用gzip为例:备份 tar -cpzvf backup.tar.gz /media/usb/*
还原 tar -xpzvf backup.tar.gz -C /media/usb/

4、安装以rpm方式提供的软件
Rpm(the red hat package manager)是一个开放的软件包管理系统。
功能:可以安装和卸载RPM包的软件
#rpm -ivh *.rpm 安装RPM包;
#rpm -ivh -force *.rpm 在原先安装的基础上再强行安装一次;rpm -ivh xxx.rpm --force --nodeps
#rpm -Uvh *.rpm 升级rpm包
#rpm -qa 查找列出系统中所有安装的rpm包
#rpm -qa | grep软包名 查看软包是否安装
#rpm -q sendmail:查看sendmail包的情况
#rpm -ql sendmail:查看sendmail安装的位置
#rpm -e *.rpm 卸载rpm包
#rpm -e `rpm -qa | grep xxx`
查看一个RPM包中包括的文件
想要查看某个软件包中包含的文件清单,有以下两种方法:
a)如果是未安装的软件包,使用
rpm -qlp example-1.2.3-1.i386.rpm
b)如果是已安装的软件包,使用
rpm -ql example
确定某个文件属于哪个RPM包
如果遇到了一个不认识的文件,要找出它属于哪个软件包,则首先记录这个文件的完整路径(绝对路径),然后输入以下命令:
rpm -qf filename

查看该软包是否运行
#service *** status

5、安装以源代码方式提供的软件
(1)、解包解压:
#tar -xzvf *.tar.gz 解包解压后会在当前目录下建立一个子目录,如xxxx
(2)、#cd xxxx
(3)、#./configure 指定安装路径(./configure --prefix=/opt/XXX)
(4)、#make
(5)、#make install

**使用QT编译安装make
make QMAKE=qmake-qt4
make QMAKE=/usr/share/qt4/bin/qmake

更改安装路径
make PREFIX=/usr
make PREFIX=/usr install
make PREFIX=/usr DESTDIR=/tmp/ install (tmp=变量)

ping
功能:通过检查网络中其他主机的应答信息,来确认网络的连通性。
语法:ping [参数] 主机名(或ip地址)
参数:
-c count:共发出count次信息。
-R:显示路由表的详细信息

一、shell简介
(一)、定义:shell是用户与操作系统内核之间的接口,具有命令解释器和编程语言的双重功能。
(二)、shell中的命令分为内部命令和外部命令,内部命令包含在shell自身之中的,如cd,exit等,查看内部命令的方法可用help命令;而外部命令是存在于文件系统某个目录下的具体的可执行程序,如cp等,查看外部命令的路径可用which。

(三)、命令解释过程
二、shell功能
(一)、命令行解释
1、交互模式
2、后台运行:如#fsck / &
(二)、通配符
*:表示任一串字符
?:表示任一个字符
[…]:匹配方括号内的任意字符
[!...]或[^…]:匹配除方括号内的任意字符
[a-zA-Z]:匹配首字符是字母的所有文件


(三)、重定向
1、>:输出重定向 如:#ls >1.txt
2、>>:追加重定向
如:#cat /etc/inittab >>1.txt
3、 !
5、2>:错误重定向
6、&>:同时实现输出重定向和错误重定向

(四)、管道操作符 |
功能:把一个命令的输出内容作为另外一个命令的输入内容。
#ls |more:分屏显示
#dmesg |grep eth0
(五)、命令替换符` `
功能:把一个命令的输出内容作为另外一个命令的参数。
#cd `pwd`
#tar -cvf zsan.tar `find / -user “zsan”`
#tar -cvf conf.tar `ls /etc *.conf`

(六)、命令执行顺序
1、;按顺序执行命令 如# date;cal
2、&&逻辑与的关系,只有前面的命令执行成功后面的命令才会被执行。
如:# date && cal

alias用别名简化命令:
alias 别名='需要简化的命令‘

************ 用户shell环境变量 **************
1. /etc/profile 此文件为系统的每个用户设置环境信息,当用户第一次登 录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

2. /etc/bashrc 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

3. ~/.bashrc 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.

4. ~/.bash_profile 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的~/.bashrc文件.

5. ~/.bash_profile 是交互式 login 方式进入 bash 运行的;
~/.bashrc 是交互式 non-login 方式进入 bash 运行的,通常二者设置大致相同,所以通常前者会调用后者。

6. /etc/profile中设定的变量(全局)的可以作用于任何用户;
而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

7. ~/.bash_logout 当每次退出系统(退出bash shell)时,执行该文件.

8.~/.bash_history 记录曾用过的 bash shell 命令

为使Bash更好地为我们服务,我们需定制bash shell环境。
.bash_profile、.bashrc、和.bash_logout

1. 上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。***在Debian中使用.profile文件代替.bash_profile文件。

2. .bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。

3. .bash_logout在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中。

在 /etc目录的bash.bashrc和profile是系统级(全局)的配置文件;
在用户主目录下的.bash_profile 和.bashrc 是用户环境变量文件。.bash_history是bash shell的历史记录文件,里面记录了你在bash shell中输入的所有命令。可通过HISSIZE环境变量设置在历史记录文件里保存记录的条数。alias 别名=‘commond' 是设置别名的语句,把它放在这些配置文档中就可使我们能用简单的 别名 命令,代替 commond 命令。
[Note]
当我们修改了这些配置件后,可用source ~/.bash_profile命令使它修改内容马上生效

***********文件系统类型 ************
1. ext2 - 古老、可靠的 GNU/Linux 文件系统。非常稳定,但因为不支持日志记录或隔离,在突然断电或当机时可能导致数据丢失。因为 fsck 的时间很长,不适合根目录 (/) 和 /home 使用。ext2可以容易地转换成ext3。一般认为/boot分区采用此系统最合适,因为/boot里的东西就开机的时候读取一次,而且很少有变动,不需要日志文件系统。

2. ext3 - 基于ext2系统, 并添加了日志记录功能。 ext3 向后兼容 ext2,非常成熟稳定。

3. ext4 - 向后兼容ext2和ext3,最大支持1EB文件系统,支持单个16TB的文件,增加子目录最大个数到64,000,可以在线碎片处理。

4. ReiserFS - Hans Reiser 主持编写的高性能的日志文件系统,使用一种非常独特有趣的数据存储检索方法。ReiserFS 效率非常高, 特别在处理很多小文件的时候更是如此。ReiserFS在挂载的时候相对比较慢. 性能稳定。 ReiserFS 现在的开发并不活跃(最新的版本是Reiser4)。通常是 /var 目录的好选择。

5. JFS - IBM提供的日志文件系统( Journaled FileSystem首字母缩写). JFS 效率非常高并且CPU资源占用率比其他任何一个文件系统都要低。并且在挂载和磁盘检测的时候都非常快,在各方面的表现都非常突出,尤其是 conjunction with the deadline scheduler. (参见 JFS.) 不如ext或者ReiserFS那样应用广泛,但非常成熟稳定。

6. XFS - 非常高效的日志文件系统,特别适合处理大文件。在处理小文件的时候稍慢。在挂载的时候也很快。由于 /var 需要处理很多的小文件,所以可能不太适合作为/var 分区的文件系统。 GNU/Linux 文件系统中,最先实现可用的在线碎片处理。应用不及ext和ReiserFS那么广泛。

* JFS 和 XFS 不能被磁盘工具缩小(比如gparted 或者 parted magic)

7、Btrfs - "Better FS",具有许多 Sun/Oracle 优秀的ZFS文件系统的功能。包括快照、多磁盘 striping 和镜像(没有 mdadm 的简单软 raid),校验、增量备份实时压缩(即可以节省空间,还能提高性能)等等。 在 2011 年 1 月仍处于 "不稳定" 状态。但是已经以实验状态进入内核主代码树。Btrfs 将成为 linux 未来的文件系统,各主要发行版的安装程序都提供了将其作为根文件系统的选项。

1 terabyte 是 1024GB,1 petabyte (PB) 是 1024 TB,1 exabyte (EB) 是 1024 PB,1 zettabyte (ZB) 是 1024 PB。
文件系统卷和大小限制
文件系统 最大卷大小 最大文件大小
第二扩展文件系统(ext2)和第三扩展文件系统(ext3) 16TB 2TB
第四扩展文件系统(ext4) 1EB 16TB
ReiserFS 16TB 8TB
日志文件系统(JFS) 32PB 4PB
XFS 16EB 8EB
Btrfs(尚在开发) 16EB 16EB


************ 分区和格式化 **************

*** 原生4K扇区(尚未普及)
*** 原生4K扇区模拟为512字节×8扇区的WD先进格式化(4K对齐); ,分区软件diskgenius中的”对齐到下列扇区的整数倍”扇区数选择8或者以上,建议选择2048,这是Win7分区使用的值,实际对齐大小就为1024K
扩展: 512byte的一个扇区需要40byte的ECC校验区,而4KB扇区只需要100byte,直接节省了40×8-100=220byte的存储空间;Ghost11.5及之后版本只要镜像创建于对齐的分区,恢复后也是对齐的
另:闪存等指定32K为一簇可加快拷贝速度,在分区的格式化中把每扇区512byte×8=4096byte即4K即合8扇区为一簇,但稍浪费空间(拷小文件的情况才会浪费空间,视频等大文件就很快了).

********* linux中的4K对齐 ********
1. util-linux-ng 2.17.1 开始,当您通过在主菜单输入 c 来禁用 DOS 兼容性模式时,这就是默认设置。我建议保持该设置。在主菜单输入 u ,将默认单元从柱面更改为扇区。然后输入初始扇区值,应为 8 的倍数,即从第8个扇区处开始(8×512=4096字节=4K),fdisk 不自动对齐随后的分区。如果您指定以兆字节或更大字节为单位的分区大小,然后接受随后分区的默认值,随后的分区可能不一定会对齐.
使用 fdisk 的另一种方法是通过 fdisk -H 224 -S 56 /dev/sda 启动它,这会更改 cylinder/head/sector (CHS) 几何参数,从而确保在将程序与柱面对齐时有合理的 4096 字节对齐,这也是默认情形。

2. parted最好的方法可能是输入 unit s ,(man parted),将默认单元更改为扇区。然后您可以在扇区中手动输入分区起始点,并精确检验分区起始点,或使用1M起始分区法.使用 GUI GParted 程序时,(版本2.2 开始向一种对带 4096 物理扇区的磁盘更有用的策略转变。通过该版本,您可以指定 1M 的起始值,然后扇区将得到合理对齐。当您的分区没有合理对齐时,该版本还会发出警告).您一定要取消选中 Create New Partition 中的 “Round to cylinders” 即“舍入到柱面”复选框.必须设置与前一分区末端相关的分区的起始扇区,但是如果您从一个合理对齐的分区开始,这就都能解决。您可以显示一个分区的 Information 对话框,以了解其起始和结束扇区从绝对意义上讲是什么。

3. GPT fdisk 工具仅在使用 GPT 磁盘时才有用。0.5.2 之前的版本不执行任何对齐,版本 0.5.2 以及 0.6.0 到 0.6.5 将所有分区的起始扇区调整为 8 扇区边界,不过这仅针对大磁盘(超过 800GB 的磁盘),而不适用于小磁盘。版本 0.6.6 为所有未分区磁盘引入一种 Windows 样式的 2048 扇区(1MB)对齐,并试图通过现有分区推断过去使用的磁盘对齐。通过 0.5.2 及其后期版本,您可以通过专家菜单上的 l 选项手动调整对齐值。该选项将大量扇区作为一个选项。为实现对 Advanced Format 磁盘的合理对齐,将该值设为 8 或其倍数。验证选项(任何菜单上的 v)基于当前对齐值报告未合理对齐的任何分区。

************ win7中使用 diskpart 进行 gpt 分区 ************
要从GPT磁盘启动,主板的芯片组必须支持UEFI,仅把GPT磁盘用作数据盘则无此限制
windows7的GPT似乎本身就是以4KB的扇区进行分区的,所以要想默认4K对齐,直接用GPT比较好.
注意:对于D版windows通过模拟BIOS激活的,最好不要轻易尝试,因为模拟BIOS激活一般是通过替换MBR代码来达到激活的效果,在GPT里面,由于不存在MBR,这种方法可能会破坏分区表,导致无法引导。推荐自己购买正版密钥。

由于win7的gui分区工具不能手动指定ESP和MSR分区的大小,所以在cmd里面用diskpart来进行gpt磁盘的分区.

DISKPART>list disk //显示硬盘列表。用空间区分硬盘,记下前面的序号,假设目前是disk 0

DISKPART>select disk 0 //如果这个时候再list一遍可以看到disk 0前面有一星号。用clean清除分区表(记得备份数据)

DISKPART>clean //清空成为超级磁盘后,我们可以在这里完成分区工作,也可以让安装程序去做。不过先要把分区转成GPT

DISKPART>convert gpt //转换为GPT分区,磁盘就是GPT分区表了。可以用图形界面安装去了。下面是手动分区。

DISKPART>create partition efi size=200 //新建EFI分区(ESP)。通常128M就够了,Windows默认是100M,这个分区是用来存放EFI引导文件的,默认是看不到里面的文件的。分区格式为FAT32。在MBR分区表上 Win7 给新硬盘分区并装系统的话,C盘前面会有100M多出来的空间。这里大同小异。

DISKPART>Format quick fs=FAT32 // Format the ESP

DISKPART>create partition msr size=128 //然后是Microsoft System Recovery分区(MSR),默认是128M。微软保留分区创建完毕

DISKPART>create partition primary size=50000 //这就是C盘,大小随便指定,后面的剩余空间可以先空着,装完系统再分。

DISKPART>Assign letter=c

DISKPART>Format quick fs=NTFS // Format primary partition

DISKPART>Exit


如此,基本的分区结构就创建完毕了,可以回到Windows安装程序继续进行安装了,以后的过程就和正常的MBR安装Windows 7一样了。

******* linux的两种 gpt 分区方案 *********
保护MBR--GPT头(EFI信息区-1扇区)--分区表(2~33扇区)--ESP--MSR--分区(N个,系统和数据区;非UEFI引导需要分BIOS boot partition)和剩余空间--分区表备份扇区(2~33扇区备份)--GTP头备份扇区(EFI信息区-1扇区备份)
虽然GPT是EFI项目的派生产品,但是GPT本身并不依赖EFI,这个必须要明确。
能否使用GPT分区,取决于三个支持条件,一是OS内核,二是引导管理器,也就是Bootloader,第三就是磁盘工具,比如分区工具等等。

一:主板不支持UEFI - 普通的BIOS兼容分区+GPT,和正常的MBR分区安装Linux一样,安装程序会自动识别GPT和BIOS兼容分区并且把引导管理器安装到BIOS兼容分区里面(推荐使用Grub2的发行版)。
DiskGenius进行预先分引导启动区,分区类型是 BIOS boot partition ,大小一般1~2MB左右就足够了。这个分区的作用是存放引导管理器(一般是Grub2,GRUB2 包含 GPT 支持;Grub legacy0.97默认不支持GPT,需要额外打补丁)的引导代码。其他的分区就和正常的GPT一样了,可以随意分配。用 cgdisk 或 GNU Parted 创建 2 MB 的无文件系统分区。只要位于磁盘的前 2TiB 空间内,分区位置没有要求。但是建议放在磁盘开始位置,/boot 之前。cgdisk 中设置类型为 "EF02" 或在GNU Parted 中设置 set bios_grub on 标记。

二:主板支持UEFI - UEFI+GPT
ESP的作用就是存放操作系统的引导管理器以及 EFI 文件;GNU Parted 认为 ESP 拥有引导标记集。ESP 通常 200MB 左右,并针对 FAT-32 格式化。它包含引导过程中 EFI 可以使用的驱动程序。如果您的计算机使用 BIOS 引导,则不需要这个分区。许多 GPT 分区工具在每个分区之后创建 128MB 左右的空间(ESP 不适用这个规则)。这个规则是为了使磁盘工具可以使用这个空间来帮助完成它们的任务。

MSR分区即 Microsoft 保留 (MSR) 分区。是每个 GUID 分区表 (GPT)磁盘都要求的分区。系统组件可以将 MSR 分区的部分分配到新的分区以供它们使用。例如,将基本 GPT 磁盘转换为动态磁盘后,系统分配的 MSR 分区将被用作“逻辑磁盘管理器”(LDM) 元数据分区。MSR 分区的大小会因 GPT 磁盘的大小不同而发生变化。对于小于 16 GB 的磁盘,MSR 分区为 32 MB。对于大于 16 GB 的磁盘,MSR 分区为 128 MB。MSR 分区在“磁盘管理”中不可见,用户也无法在 MSR 分区上存储或删除数据。不装Windows的话,只分ESP即可,把磁盘分区类型转换成 GPT 时,DiskGenius会提示创建ESP分区。如果要和Windows组双系统,则需要分配MSR分区,Microsoft 建议所有 GPT 磁盘都包括 MSR。此分区必须存在于 ESP 和 Windows 操作系统分区之间。即 ESP+MSR 才能实现双系统.

总结:
1.BIOS boot partition //2M即可,从BIOS引导GPT需要,仅适用于BIOS+linux+GPT,位置:分区表后,硬盘前2TB内任意位置,建议放在磁盘开始位置,/boot 之前
2.ESP //200M即可-fat32格式,UEFI需要,不论系统类型,双启时该分区为 boot on 标识
3.MSR //200M即可,UEFI+windows或双启需要
4.GPT数据盘以上三个分区都可以不要,但将不能在该盘上安装系统。

*** parted命令分gpt分区 ****
一:分区(sudo或root未挂载分区的情况下创建分区)
primary/主分区/extended/扩展分区?/logical/逻辑分区? (只输入mkpart就有交互提示,答首字母即可,然后选择分区类型的时候输入linux-swap 即创建交换分区)其他如:
文件系统类型? [ext2]? fat32
分区的ID号:主分区/扩展分区=1~4 ; 逻辑分区=5~
# parted /dev/sdb //或 parted 后用select /deb/sdx 来选择磁盘
(parted) mklabel gpt //将MBR磁盘格式化为GPT,或msdos
(parted) mkpart primary 0 100 //划分一个起始位置为0大小为100M的主分区
parted /dev/sdx mkpart primary 0 100 //划分一个起始位置为0大小为100M的主分区。
(parted) mkpart primary 100 200 //划分一个起始位置为100M大小为100M的主分区
(parted) mkpart primary 0 -1 //划分所有空间到一个分区,-1表示硬盘最后一个扇区,就是硬盘的最末尾处,数字为负数表示从磁盘末尾开始计算;如果指定 1M 的起始值,然后扇区将得到合理对齐
(parted) rm //删除已经存在的分区
分区编号? 1 //指定要删除的分区编号 I / C I:删除;C:取消
(parted) rescue start end //在开始和结束的大概区域搜索误删丢失的分区,后提示恢复,start end 可填入大概的值
(parted) set 1 boot on 将编号为1的分区的boot 标记设定为(on生效)或(off失效),有boot、lba(LBA模式)、raid、LVM(大写)、hidden(隐藏)或mac(linux等)的root、swap
(parted) print //查看当前分区
(parted) quit //退出
(parted) mklabel msdos //如果要反过来将GPT磁盘转化为MBR磁盘
# parted -l //直接在命令模式下显示所有设备的分区表
# parted /dev/sdb print //直接在命令模式下显示/dev/sdb的分区表

二. 分区后,格式化

#partprobe //使用partprobe命令重新读取分区表
#mkfs -t ext3 -b 8192 /dev/sdb1
#mount -a //加入fstab后可以这样挂载所有分区

*********** 使用mkfs创建文件系统 ************
mkfs命令的格式是:mkfs 选项 设备名
例如:
mkfs -t ext2 /dev/hda2 //-c 检查坏道,-b设簇大小 ,-t类型 指定文件系统类型,-m 0.05 给超级用户的保留区大小为 0.05%即万分之X
mkfs -t ext3 /dev/hdax //格式某分区为ext3格式
mke2fs -j /dev/hdax
mkfs.vfat /dev/hdax //某分区为fat32格式(默认) -c 同ext格式检查坏道,-F (12 16 32等文件格式), -S 2048 指定逻辑扇区的字节数,以方便对齐, 512, 1024, 2048, 4096, 8192, 16384, or 32768
mkfs.ntfs /dev/hdax //格式某分区为ntfs格式,速度慢,-f 快速,-c同vfat的-S , 大于4096将失去压缩卷功能。
mkfs.msdos /dev/hdax //格式某分区为fat16格式

1G=1KM=1024MB,1M=1024KB,1K=1024B(字节),1B=8bit(比特)

*********** 挂载和卸载文件系统 ************
查看分区挂载情况 # mount -s
查看设备号 # fdisk -l
查看UUID: # blkid
# ls -l /dev/disk/by-uuid
挂载文件系统 # mount /-参数 设备名 挂载点
挂载光盘镜像 # mount -t iso9660 /dev/cdrom /media/cdrom
查看光盘内容 #ls /media/cdrom/more
卸载光盘 # umount /media/cdrom 或umount /dev/cdrom
U盘 先用fdisk -l查看U盘设备号 一般为/dev/sdb1
然后用 # mkdir /media/usb 建立一个挂载目录
挂载FAT16文件U盘 #mount -t msdos /dev/sdb1 /media/usb
挂载FAT32的U盘 # mount -t vfat /dev/sdb1 /media/usb
挂载U盘并支持中文 # mount -t vfat -o codepage=936,iocharset=cp936 /dev/dsb1 /media/usb
# mount -t ntfs -o iocharset=utf8 /dev/sdb1 /media/usb

mount /dev/hda5 a,这样目录a里的东西就是分区hda5里的东西了,比如hda1是windows分区,要把它挂到b上,mount /dev/hda1 b -o iocharset=cp936
挂载文件系统
mount /dev/sdb1 /tmp/test1
mount /mnt/floppy
mount
注意
挂载目录必须存在
Linux专门提供了挂载目录/mnt
不要在挂载目录下进行挂载操作
将软盘或光盘放入驱动器后再实施挂载操作
卸载前不要取出软盘或光盘
不能在同一个目录下挂载两个文件系统
卸载文件系统
umount /mnt/cdrom
umount /dev/sdb1
umount /tmp/test1

出现无法卸载的解决:
sync && fuser -m /dev/sdbx 然后再kill占用进程再行卸载
或者 sync && fuser -m /dev/sdbx -k 再卸载
注意:不能在挂载目录下进行卸载操作

扩展(fuser的用法):
# fuser -u /data/data //查看使用文件data的进程
# fuser -cu /data //查看使用文件系统的进程,该文件系统挂载在 /data 上
# fuser -u /dev/vg0/lvx //查看使用这个 lvx 逻辑卷的进程
# fuser -ku /dev/vg0/lvx //查看并结束使用 lvx 逻辑卷的进程

3.5 软盘、光盘、USB硬盘的使用
1、软盘格式化:fdformat -n /dev/fd0H1440
2、建立文件系统
mkfs -t ext2 -c /dev/fd0H1440
3、挂载文件系统
mount -t ext2 /dev/fd0H1440 /mnt/floppy
4、使用
cp /etc/lilo.conf /mnt/floppy
mkdir /mnt/floppy/mydir1
5、卸载
umount /mount/floppy
1、挂载文件系统
mount -t iso9660 /dev/cdrom /mnt/cdrom

mount /mnt/cdrom

cd光盘做成iso文件
df -lh 查找光驱/dev/sr0 或挂载点 /media/cdrom1
  cp /dev/sr0 xxxx.iso
2、卸载
umount /mnt/cdrom
eject(弹出光盘) eject -t (收回光驱托盘)
USB硬盘的使用
USB硬盘在Linux系统下是被模拟成SCSI设备来使用的,因此对应的设备文件是/dev/sda,如果有多块USB硬盘,则设备文件依次是/dev/sdb、/dev/sdc等。

用mount命令加-o loop选项挂载光盘镜像文件
1、#mkdir /mnt/iso
2、#mount -t iso9660 -o loop rfdesktop4.iso /mnt/iso
通常,Linux系统的内核(Kernel)是支持iso9660文件格式的,如果不支持你需重新编译内核增加对其的支持。你只需简单使用以下命令就可以从/path目录中读到它的内容了:
mount -t iso9660 -o loop xxx.iso /path
挂载硬盘上的ISO文件:mount -t iso9660 XXX.iso -o loop /目录/
卸载硬盘ISO文件:unmount /目录

**** 光盘镜像和刻录
genisoimage -r -o xxx.iso /path //制作ISO镜像,也可以安mkisofs

cdrecord -scanbus //dev=x,y,z 即设备 dev=x,y,z
cdrdao scanbus //扫描刻录机设备,返回刻录机为/dev/sr1

cdrdao write -v --eject --speed 4 --driver /dev/sr1 xxx.iso //刻录镜像,驱动器--driver或--device,sr1或借用cdrw,默认是最高的速度,simulate(模拟)、write(写入)、copy(拷贝)

wodim -v -eject dev=/dev/cdrw blank=fast //擦除可重复刻录盘片
wodim -v fs=32 -eject speed=4 dev=/dev/cdrw xxxiso //刻录机为cdrw,根据sanbus返回的信息Detected CD-R drive: /dev/cdrw ;fs=32即缓冲区为32M,默认4MB,speed=N,刻录CD最低8,DVD最低4,和cdrdao可以--speed不同。
wodim -v -dummy -eject speed=4 dev=/dev/cdrw -audio track*.cdaudio //模拟刻录一个音频track1...n

$ isoinfo -d -i /dev/cdrom //查看光盘信息,会出现如下字样: Logical block size is: 2048 Volume size is: 342719)
$ dd if=/dev/cdrom bs=2048 count=342719 conv=notrunc,noerror | md5sum //得到光盘文件的hash值,对比源ISO的hash值来校验光盘
或:
$ sudo apt-get install isomd5sum
$ implantisomd5 --force ISO文件 //在iso文件中加入MD5校验信息,然后再刻录
$ checkisomd5 --verbose /dev/cdrom //刻录后校验数据完整性

sfdisk -l -uS xx.img //查看镜像或分区表,实际偏移的字节数等于512×柱面的偏移数(即起始位置的数字),然后直接mount即可sudo mount -o loop,offset=乘出来的值 挂载对象 挂载点

**************** 文件指定大小挂载为文件系统(及增加交换空间文件伪设备的使用) *****************
1 sudo dd if=/dev/zero of=/home/gg/目标文件 bs=1024 count=2097152 //容量大小1024字节*2097152个块=2048M
sudo mkfs -t ext3 -vFm0 /home/gg/目标文件 //格式化目录
sudo mount -o loop /home/gg/目标文件 /home/gg/mountpiont //挂载为文件系统

1G=1KM=1024MB,1M=1024KB,1K=1024B(字节),1B=8bit(比特)
1 byte (B) = 8 bits (b) 字节=8个二进制位
1 Kilobyte(K/KB)=2^10 bytes=1,024 bytes 千字节
1 Megabyte(M/MB)=2^20 bytes=1,048,576 bytes 兆字节
1 Gigabyte(G/GB)=2^30 bytes=1,073,741,824 bytes 千兆字节
1 Terabyte(T/TB)=2^40 bytes=1,099,511,627,776 bytes吉字节

2 sudo dd if=/dev/zero of=/home/gg/swapfile bs=1024 count=262144 //建立交换文件设大小为256m以K计
sudo mkswap /home/gg/swapfile //把这个文件变成swap文件
sudo swapon /home/gg/swapfile //启用这个swap文件
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行:/home/gg/swapfile swap swap defaults 0 0 或 10.4fstab格式:/home/gg/swapfile none swap sw 0 0

************ dd命令、备份还原MBR、分区表 **************
最简单的办法是用 DOS 启动盘启动系统后执行 fdisk /mbr 命令或者用 Linux 的启动盘启动系统后,chroot 到原来的 Linux 根目录下运行 grub-install /dev/sda 命令。

首先 建立备份目录 /backup

备份: dd if=/dev/sda of=/backup/mbr.img bs=512 count=1

还原: dd if=/backup/mbr.img of=/dev/sda bs=446 count=1 //只还原mbr,避开分区表以保证数据安全

跳过主引导记录,只还原分区表: dd if=/backup/mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446

后边64bytes,16个bytes存一个分区信息,所以只能存4个分区信息,这也就是为什么分区只能有4个主分区或3个主分区+1个扩展分区的原因。
最后2bytes是55AAH,英文叫magic number是mbr的结束标志。

1G=1KM=1024MB,1M=1024KB,1K=1024B(字节),1B=8bit(比特)
1 byte (B) = 8 bits (b) 字节=8个二进制位
1 Kilobyte(K/KB)=2^10 bytes=1,024 bytes 千字节
1 Megabyte(M/MB)=2^20 bytes=1,048,576 bytes 兆字节
1 Gigabyte(G/GB)=2^30 bytes=1,073,741,824 bytes 千兆字节
1 Terabyte(T/TB)=2^40 bytes=1,099,511,627,776 bytes吉字节

dd if=/dev/zero of=/dev/sda bs=446 count=1

将 MBR 上的 boot loader 删除掉,这样之后系统是不能启动的了,因为 BIOS 根据用户配置找到要启动的设备后没有boot loader 的入口了。这个命令看起来没有用,但是当 grub-install 或者 fdisk /mbr 在某些特殊情况下运行失败的情况下,先执行上述清空命令后往往可以解决问题。

ibs=<字节数> 每次读取的字节数。
obs=<字节数> 每次输出的字节数。
cbs=<字节数> 转换时,每次只转换指定的字节数。
bs=<字节数> 将ibs( 输入)与obs(输出)设成指定的字节数。
count=<区块数> 仅读取指定的区块数。
seek=<区块数> 一开始输出时,跳过指定的区块数。
skip=<区块数> 一开始读取时,跳过指定的区块数。
conv=<关键字> 指定文件转换的方式。
conv = ASCII 把EBCDIC码转换为ASCIl码。
conv = ebcdic 把ASCIl码转换为EBCDIC码。
conv = ibm 把ASCIl码转换为alternate EBCDIC码。
conv = block 把变动位转换成固定字符。
conv = ublock 把固定位转换成变动位。
conv = ucase 把字母由小写转换为大写。
conv = lcase 把字母由大写转换为小写。
conv = notrunc 不截短输出文档。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。
count=1指仅拷贝一个块;bs=512指块大小为512个字节,总容量=区块数*每区块大小

修复硬盘: dd if=/dev/sda of=/dev/sda 或 dd if=/dev/hda of=/dev/hda
销毁磁盘数据: dd if=/dev/urandom of=/dev/sda1 //利用随机的数据填充硬盘
全盘备份: dd if=/dev/sda of=/dev/sdb
全盘数据备份到指定路径的image: dd if=/dev/sdb of=/home/kk/bf.image
备份文件恢复到指定盘: dd if=/home/kk/bf.image of=/dev/sdb
备份/dev/sdb全盘数据,并利用gzip工具进行压缩,保存到指定路径: dd if=/dev/sdb | gzip > /home/kk/image.gz
将压缩的备份文件恢复到指定盘: gzip -dc /home/kk/image.gz | dd of=/dev/sdb

Sfdisk - 备份分区表
如果你安装多系统,很容易导致分区表的混乱。该工具都绑定在各Linux发行版本,可用来备份、编辑、恢复分区表。
备份分区表: sfdisk -d /dev/sda > sda_table.txt
恢复分区表: sfdisk /dev/sda < sda_table.txt

sfdisk -l -uS xx.img //查看镜像或分区表,实际偏移的字节数等于512×柱面的偏移数(即起始位置的数字),然后直接mount即可sudo mount -o loop,offset=乘出来的值 挂载对象 挂载点

若安装RAID,可用sfdisk -d / dev/sda | sfdisk /dev/sdb 备份分区表。

************************ fstab *****************************
在系统启动时自动挂装文件系统
要系统自动挂载文件系统必须修改系统配置文件/etc/fstab。系统启动所要挂载的文件系统、挂载点、文件系统类型等都记录在/etc/fstab文件里。
例:dev/sdax / ext3 defaults 1 1
device_name mount_point file_system options 'dumpe2fs' 'fsck'
这儿有介质(硬盘的分区)的设备名、载入点(/)、文件系统(ext2)。
defaults 包括若干‘mount’的可选项:rw 可读写、 suid 允许设置用户标识符(set-user-identifier)、exec 允许运行程序、auto 开机时自动挂载、nouser 只有‘root’有权卸载、async 允许磁盘延迟存取(caching) 。
最后两个可选项是文件系统工具‘dumpe2fs’、‘fsck’用到的标志。
第一个1 n‘dump’域可设成‘1’(启用)和‘0’(禁用)。由于备份 ext2/ext3 文件系统的程序要用到‘dump’,因此文件系统为 ext2/ext3 的条目要设成‘1’,所有其他条目都为‘0’。
第二个1 ‘fsck’域可设成‘0’(不检查文件系统)、‘1’(先检查)、‘2’(检查)。所有非 Linux 文件系统、可移动的和网络介质、虚拟文件系统都要设成‘0’;由于根分区要先被挂载(接着检查),‘/’条目要设成‘1’;而所有其他不可移动的及 Linux 文件系统的本地介质都要设成‘2’。

手动挂载不必写入fstab:
只读挂载ntfs分区:
sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c

可写挂载ntfs分区:
sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c

挂载fat32分区:
sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c

挂载共享文件:
sudo mount -t smbfs -o username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share

挂载ISO文件:
sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso

************************ 挂载使用tmpfs *************************
# mkdir -p /mnt/tmpfs 这个挂载点可以随意修改,后面的挂载点也随同修改
# mount tmpfs /mnt/tmpfs -t tmpfs
或指定所用最大VM内存大小-分配了上限为1024m的VM到/mnt/tmp目录下(即把/mnt/tmp挂载为tmpfs,最大为设定值):
#mount -t tmpfs -o size=1024m tmpfs /mnt/tmp
# mount tmpfs /mnt/tmpfs -t tmpfs -o size=1024m

或修改/etc/fstab加一行

none /mnt/tmp tmpfs size=1024m,nodev,nosuid,noexec 0 0

默认:
tmpfs /tmp tmpfs defaults 0 0

我的:
tmpfs /home/kk/ktmp tmpfs size=20m 0 0

如果不加上参数,tmpfs默认的大小是RAM的一半

*** linux系统中的/dev/shm就是虚拟内存目录,我们可以使用绑定的方法,如下:

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount -bind /dev/shm/tmp /tmp

创建tmp目录,并且修改目录权限为1777,然后将/dev/shm/tmp绑定到/tmp。/tmp下原有的文件都不存在了。

还有另一种方法,修改/etc/fstab文件如下:

none /tmp tmpfs size=128M,nodev,nosuid,noexec 0 0 //加nodev,nosuid,noexec是为了安全考量,也可以defaults,内存大就默认容量

******************** tune2fs调整强制磁盘检查 *******************
tune2fs是linux下面重要的文件系统调整工具,其中的几个选项解释如下:
-c:表示文件系统在mount次数达到设定后,需要运行fsck检查文件系统。设置强制自检的挂载次数。
-i:文件系统的检查间隔时间,设置强制自检的间隔时间。
-l:显示文件系统的很多参数,查看文件系统信息。
-j:转换为ext3文件系统。
# tune2fs -c 100 /dev/sda7
# tune2fs -i 5w /dev/sda7
Setting maximal mount count to 100
调整每2次完整地检查根文件系统的挂载间隔为100次
使用-c 0 或负数关掉mount次数达到后的文件系统检查

fsck
功能:检查文件系统
语法:fsck [选项]
选项:
-t fstype:检查的文件系统类型
-A 检查所有在/etc/fstab中列出的文件系统
-p:整理文件系统,自动修正所有问题
用法一:fsck -t ext2 /dev/sda7
用法二:fsck.ext2 /dev/sda7
fsck工具有两种用法,类似于mkfs。一种是fsck -t 后面跟一个类型。还有一种就是fsck后用.连接文件系统类型,后面跟一个设备。它主要是检查文件是否有错误,是否有数据不完整的错误节点。它会帮你自动修复文件系统上的错误。
注意:
1、当检查一个文件系统时,应该确保处于未挂装状态
2、当要检查根文件系统时,应该使用急救软盘或安装光盘重新引导机器后进行

xfs:
在运行xfs_check 、xfs_repair之前,被检测的文件系统必须被卸载,否则文件系统会崩溃。
xfs_repair -n命令比xfs_check检测的更完全。
#xfs_check -n /dev/sdax
# xfs_repair -n /dev/sdax
使用 xfs_repair 加 -L (大写的参数强行清除xfs文件系统中的日志)
如:xfs_repair -L /dev/sdax
xfsprogs 包含:
xfsgrowfs 用来扩展一个XFS文件系统。
xfs_admin 用来调整XFS文件系统的参数。
xfs_freeze 用来禁止对一个XFS文件系统的读写。
xfs_mkfile 建立一个XFS文件,缺省使用零填充。
xfs_check 检查XFS文件系统。
xfs_repair 修复损坏的XFS文件系统。
xfs_bmap 列印XFS文件的块映射图。
xfs_rtcp 将文件拷贝到一个正在使用的XFS文件系统。
xfs_db 用来调试XFS文件系统。
xfs_logprint 列印一个XFS文件系统的日志。
xfs_ncheck 从XFS文件系统的节点序号产生路经名。
mkfs.xfs建立一个XFS文件系统。
fsck.xfs 检查XFS文件系统。如果检查一个被挂载的XFS文件系统,会退出并返回0.

*********** badblocks_磁盘检测 *************
badblocks 用法详细说明
语 法:
  badblocks [-svw][-b < 区块大小>][-o < 输出文件>][磁盘装置][磁盘区块数][启始区块]

参 数:
  -b< 区块大小> 指定磁盘的区块大小,单位为字节。
  -o< 输出文件> 将检查的结果写入指定的输出文件。
  -c< 检查区块数目> 每一次检测区块的数目。默认值是16。增加这个数目可以增加检测 块的效率可同时也会增加内存的耗费。
  -s 在检查时显示进度。
  -v 执行时显示详细的信息。
  -w 在检查时,执行写入测试。
  [磁盘装置] 指定要检查的磁盘装置。
  [磁盘区块数] 指定磁盘装置的区块总数。
  [启始区块] 指定要从哪个区块开始检查。

*** 检查前确定你已经卸载要检查的磁盘,如果没用请umount 之。
对整个磁盘进行read-only检测:

sudo badblocks -s -v -c 32 /dev/sdb

*** 因为需要对磁盘进行检测,所以速度非常缓慢,在检测过程中注意不要断电,不要对硬盘进行任何操作,不要移除硬盘,不要物理损伤,不要震动等。

检测过程是可以中途终止,也可以指定区块重新开始。

sudo badblocks -s -v -c 32 /dev/sd* 976762583 125637824 (注意此处结束区块在前,起始区块在后)
sudo badblocks -b 8192 -c 5 /dev/sda2 -o sda-badblocks-list 63000 51000

*** 用badblocks的写测试功能,对这些坏块进行重写(注意! -w写测试会覆盖数据,造成数据丢失; -n 使用非破坏性的读写模式。默认值是非破坏性的只读模式测试。这个选项不能与 -w 选项一起使用,因为它们是互斥的。
sudo badblocks -w /dev/sdb2 16435904 16435904
sudo badblocks -w /dev/sdb2 21081903 21081903

*** 用mkfs.ext2的命令,带上参数 -c 用只读的方式检查硬盘,这个命令会在格局化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格局化硬盘,需要有相 当大的耐心,由于命令运行后,会一个个用读的方式检查硬盘
sudo mkfs.ext2 -c /dev/sda2

*** 用smartctl对硬盘进行测试的方法如下
在线快速测试: 大约2分钟
sudo smartctl -t shot /dev/sda
在线长测试: (1T大约4小时)
sudo smartctl -t long /dev/sda
此外还有几种测试模式:offline, short, long, conveyance, select,M-N, pending,N, afterselect,[on|off], scttempint,N[,p]

终止正在进行的测试
sudo smartctl -X /dev/sda

在测试结束后获取测试结果:
sudo smartctl -l selftest /dev/sda

修复坏道
如果只是逻辑坏道,你可以
直接fsck

fsck -a /dev/sdb

或者格式化

如果是物理坏道,那么兄弟你真的悲剧了。你需要
a.备份硬盘数据
b.删除所有硬盘分区
c.根据坏块位置以及大小,估算出所占空间。然后重新分区隔离损坏部分。btw:坏道是会扩散的,所以尽可能隔离掉多些空间。

*********** 软RAID和LVM*************
LVM:
1.从物理驱动器创建区物理卷--硬盘分区(/boot需要单独的分区,不能以lvm形式存在,其他分区或整个磁盘类型为lvm物理卷)
2.从物理卷中创建逻辑卷组--选择配置逻辑卷管理器进行卷组创建(把几个跨硬盘或不跨硬盘的物理卷合并成一个卷组)
3.从逻辑卷组中创建逻辑卷--卷组中划分一定空间或全部做逻辑卷,剩余空间可继续创建其它的逻辑卷,可随意调整分区容量。
4.短板:尽管扩容和等量pvmove是安全的,但是收缩lvm是相当危险的极易数据洗白,有时候觉得若要收缩不如重做。

**** LVM可方便调整容量大小和在不停机的情况下实现数据迁移,但由于卷组包含逻辑卷,逻辑卷不能跨卷组,即使逻辑卷由不同磁盘的 PV 组成由于默认是单线程读写即会先写满前一个PV才写后一个PV,若要实现多线程提速则需要使用多个不同磁盘的物理卷 PV 做条带的 LV 。LVM的分区类型为8e 管理工具 lvm2
概念:
物理卷physicalvolume(PV)
卷组VolumeGroup(VG)
逻辑卷logicalvolume(LV)
物理块physical extent (PE)
逻辑块logical extent (LE)

常用命令:(凡调小尺寸的必须谨慎)
LVM :总决式--lvm ;查看lvm--lvmdiskscan ;诊断--lvmdump
PV:创建--pvcreate ;删除--pvremove ;移动PV数据--pvmove ;查看--pvs、pvscan、pvdisplay ;检查元数据一致性(从损坏分区表的基本磁盘或分区中)--pvck ;调整物理卷大小(可挪出一定物理空间)--pvresize ;更改pv属性--pvchange
VG:创建--vgcreate ;删除--vgremove ;激活停止--vgchange ;增加PV--vgextend ;移除PV--vgreduce ;查看--vgs、vgscan、vgdisplay ;导出VG--vgexport ;导入VG--vgimport ;备份VG元数据--vgcfgbackup ;恢复VG元数据--vgcfgrestore ;检查VG元数据的一致性--vgck ;转换VG元数据格式--vgconvert ;VG导入并克隆--vgimportclone ;合并卷组--vgmerge ;重命名--vgrename ;在卷组之间移动物理卷(相关逻辑卷也被移动)--vgsplit ;重建卷组目录和逻辑卷特殊档--vgmknodes
LV:创建--lvcreate ;删除--lvremove ;增加PE到LE--lvextend ;从LE裁减PE--lvreduce ;调整容量--lvresize ;查看--lvs、lvscan、lvdisplay ;重命名--lvrename;转换--lvconvert ;更改属性--lvchange

EXT文件系统检查 e2fsck -f ;EXT文件系统容量调整 resize2fs

一.创建和使用:(/etc/lvm/backup 里面的文件在动过LVM后要及时备份)
1.准备物理分区(Physical Partions)

2.创建物理卷PV(Physical Volumes)
# pvcreate /dev/sdb5 //创建物理卷 PV,可以是从硬盘或分区来创建
# pvcreate /dev/sdc1
# pvdisplay //查看物理卷,若是条带则 PV上 划分出的 PE 是一样多的。

3.创建卷组VG(Volume Groups)
# vgcreate vg0 /dev/sdb5 /dev/sdc1 //把多个不同磁盘,也可以是同一个磁盘上的物理卷 PV 合并为一个卷组 VG,再加上参数 i 和 I 即跨物理磁盘实现了条带化,由于LVM是动态划分 PE 的,所以物理卷可以不必一样大小,当然要利用 PV 所有空间的话最好用一样大的 PV。
# vgdisplay //查看卷组
# vgcreate -s 64MB vg0 /dev/sdb5 /dev/sdc1 // 如果希望使用 64 MB 的PE创建卷组,在 lvm1 中这样逻辑卷最大容量就可以为4 TB ;PE(Physical Extent ),它的默认大小是4MB;由于受内核限制的原因,一个逻辑卷(Logic Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了逻辑卷的最大容量,默认的 4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的PE。PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。如果设定最大扩展大小,那么最大卷大约有 1PB = 65534 × 16GB = 1,048,544 GB 。lvm2无PE限制,容量大小取决于kernel的限制、磁盘空间和文件系统类型。
# vgextend vg0 /dev/sdc1 //添加新的物理卷到卷组中
# vgchange -ay vg0 //激活卷组

4.创建逻辑卷LV(Logical Volumes)
# lvcreate -L 15G -n lv1 vg0 // 创建了一个名字为 lv1 的逻辑卷(LV),大小为15GB(空间参数是必须的),其设备入口为/dev/vg0/lv1 ; L 默认MB,也可以使用-l参数,通过指定 PE 数来设定逻辑分区大小
# lvcreate -L 15G -n lv1 -i 2 -I 64 vg0 //创建条带化的逻辑卷;-i 指定跨 PV 的个数(可以为单数) ;-I 指定条带单元的大小(单位KB)
# lvcreate -m1 -L 500M vg0 //创建一个500M大小的镜像的条带,至少要3个PV。
# lvcreate -m1 --mirrorlog core -L 500M vg0 //创建一个500M大小的镜像的条带,至少要3个PV,日志在内存中跑
# lvcreate --size 100m --snapshot --name lv1snap /dev/vg0/lv1 //创建逻辑卷 /dev/vg0/lv1 的快照 /dev/vg0/lv1snap ,当你使用源 /dev/vg0/lv1 的时候,快照也会同时更新。
# lvcreate --virtualsize 1T --size 100M --snapshot --name lv1 vg0 //创建一个虚拟的 1TB 大小的逻辑卷 /dev/vg0/lv1 ,实际开始使用时尺寸为 100MB。
# lvcreate -L 64M -n lv1 vg0 /dev/sda:0-7 /dev/sdb:0-7 //创建一个非条带的线性的逻辑卷
# lvdisplay //查看逻辑卷

5.创建文件系统
# mkfs -t ext4 /dev/vg0/lv1 //创建了文件系统以后,就可以加载并使用了
# mount /dev/vg0/lv1 /mountpiont
# gedit /etc/fstab //必须添加到 /etc/fstab 中实现自动挂载;若要做加密卷则套用 cryptsetup 的做法,做过 crypt-luks 的 LV 若不能直接被挂载(须从/dev/mapper中挂载)则表示 crypt-luks 加密成功。
/dev/vg0/lv1 /moutpiont ext4 defaults 1 2 //非加密的 LV 的自动挂载

二.增减 LV 空间大小的范例(慎用收缩,损失数据自负)
# lvextend -l+14588 /dev/vg0/lv1 //给 lv1 增加 14558个 PE,减少用 - ;如果不能则用 lvreduce
# lvextend -L+5G /dev/vg0/lv1 //给 lv1 增加 5G 空间
# lvextend -L20G /dev/vg0/lv1 //把 lv1 增加到 20G 空间
# lvreduce -l xx /dev/vg0/lv1 //减去将要删除的 PV 的 PE 数量xx。
# lvresize -L -5G /dev/vg0/lv1 //调整并减去相应的容量。或+或直接指定也可。
# lvextend -l +100%FREE vg0/lv1 //使用所有百分比空闲空间到 lv1。

三.实作,扩容和替换PV,要求pvmove的接收 PV 的 PE 大于等于发送 PV 的 PE。这个 PV 最好是分区磁盘中指定大小的分区。若是用整个磁盘做的PV做接受PV,那么请确定在划分物理分区时指定的容量参数是和发送PV的物理分区一样的容量参数,或大于这个值,这相当重要,因为每个磁盘都不完全一样,厂商也会玩1000MB=1024MB的戏法,而接受PV小于传送PV的话会造成数据损坏或不能pvmove。
# umount /mountpint //平时用户对于数据操作是在挂载点对应的逻辑卷上,而真正的数据是存在于 PV 物理卷上,所以当有更换磁盘、分区时是对 PV 进行操作,建议(单纯增量时可不用)此时最好停止正在逻辑卷上的其它应用的读写即暂时卸载挂载点。
# pvscan or vgscan or lvscan (pvdispla or vgdisplay or lvdisplay) pvs or vgs or lvs //查看物理卷、卷组、逻辑卷,建议每步必查。
# lvs -a -o +devices //查看原来 LV 所占用的哪几个 PV
# lvdisplay //查看原来的 LV 所使用的 PV 数量
# pvcreate /dev/sdd //创建 PV 物理卷 sdd
# vgextend vg0 /dev/sdd //加入一个PV 物理卷 sdd 到卷组 vg0 中
# pvdisplay //查看是否有足够的FREE 的 PE 可以用来做pvmove
# pvmove /dev/sdc /dev/sdd //移动数据到新物理卷中,新物理卷可使用空间必须大于等于旧物理卷,能够 move 的 PV 必须是在同一个卷组之内。
# lvs -a -o +devices //由于 pvmove 后,可以看到实际上原来 LV 所占用的 PV 已被后来的替换了,所以后面可以方便的移除原来出问题的 PV。
# vgchange -an vg0 //停止卷组后才能移除
# vgreduce vg0 /dev/sdc //从卷组中移除已经闲置的 PV 物理卷,移除的 PV 还可作他用
# pvremove /dev/sdc //若有需要可删除已经腾空的或有缺陷的 PV 物理卷,该 PV 不在任何 VG 中时才可以删除。
# lvdisplay //查看PV和PE情况是不是和前面未动 LVM 的时候是一样。
# lvextend -l xx /dev/vg0/lv1 //如果接收PV大于发送PV的话要补上差的 PE,如果不用这些多出的 PE 或两个PV一样大的话就不必了。
# vgchange -ay vg0 //启用卷组vg0才能调整文件系统容量大小
# e2fsck -f /dev/vg0/lv1 //resize2fs前可能要先用 e2fsck -f
# resize2fs /dev/vg0/lv1 //重新核对容量,无论什么时候,只要改变了 lvm 配置就要对逻辑卷进行文件系统调整检查
# mount /dev/vg0/lv1 /mountpiont //重新挂载使用

难点:收缩逻辑卷:各种文件系统的 resize 不能正确区分用户数据、杂乱数据(有用或无用)、甚至于全零数据,更无法传递到 LVM 中,卷组创建多个 LV ,各 LV 的 LE 使用了不同 PV 的 PE,而 LVM 只能通过是否有足够的新加入的 FREE 的 PE 来分配给 LV 做 LE (各种CK也无法智能组合用户数据)。因此不能确定完整的文件系统的数据在哪些具体的 LE 里面 或者是说是在哪个 PV 的 PE 里,即使单个PV 组成的 VG 建的 LV 做收缩有时也有可能会破坏文件系统(恢复到原尺寸数据也回来了),而扩容和替换使用的 PV 中有足够的 FREE 的 PE 来做新增 LE,所以扩容和替换是安全的,而收缩是不一样的。因此收缩时损坏数据(完全是无规律随机性的),不能指定 PV 收缩,不能指定清空转移PV(非等量这种有替代的pvmove)数据,造成不能随心指定移除PV,所以,扩容容易,收缩难,这个问题待研究。
# umount /mountpiont //卸载挂载点,停止上层应用
# resize2fs /dev/vg0/lv1 xxG(或xxMB) //缩减文件系统到指定尺寸
# lvreduce -l xx /dev/vg0/lv1 //减小要删除的 PV 的相应 PE。
# resize2fs /dev/vg0/lv1 //重新核对文件系统

四.删除 LVM:(逻辑卷->卷组->物理卷)
# umount /mountpint //停止上层应用
# lvremove /dev/vg0/lv1 //删除逻辑卷 lv1
# vgchange -an /dev/vg0 //关闭 卷组 然后才能删除
# vgreduce vg0 /dev/sdxx //从卷组中移除一个个物理卷。
# vgremove vg0 //删除卷组,只有当卷组只剩一个 PV 时才行
# pvremove /dev/sdxx //删除物理卷

五.导出导入 VG 到另一个机器中:
# vgchange -a n /dev/vg0 //关闭 卷组
# vgexport -s -m vg0.map /dev/vg0 //导处一个卷组,加 s 可以在导入时不用写 PV
# mkdir /dev/vg0 //再另一个机器中建新的导入点,名字可不与原来一样任意。
# vgimport -s -m vg0.map /dev/vg0 /dev/sdx1....(多个PV若导出时有s参数,这里可省) //导入一个卷组到另一个机器的 vg中
# vgchange -a y /dev/vg0 //激活新机器上导入的卷组

扩展(fuser的用法):
# fuser -u /data/data //查看使用文件data的进程
# fuser -cu /data //查看使用文件系统的进程,该文件系统挂载在 /data 上
# fuser -u /dev/vg0/lvx //查看使用这个 lvx 逻辑卷的进程
# fuser -ku /dev/vg0/lvx //查看并结束使用 lvx 逻辑卷的进程

****************** 软RAID ********************
软RAID:如LVM一样在一块硬盘上单独分出/boot,/根分区可以由MD创建;RAID0 不适用mdadm的添加删除操作
创建:
1. mdadm -C /dev/md1 -a yes -n 2 -l 1 -c 32 /dev/sdb1 /dev/sdb2 //创建RAID1 有/dev/sdb1和/dev/sdb2,chunk size的大小必须是2的N次方 n大于1 必须是4的倍数,stride是每次写入raid成员的block数,即64KB的数据要写多少次。stride 等于 chunk size / filesystem block size,创建文件系统时指定

或 mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hde1 /dev/hdf2 /dev/hdg1 //用 RAID5 模式创建 md0,-x(--spare-devices)参数用于指定冗余磁盘的数量,--grow(或者其缩写-G)增加,和 --raid-devicess(或者其缩写-n)参数再加上合适的设备个数。扩展后阵列中原来的热备盘变为活跃磁盘

mdadm /dev/md0 -a /dev/sdd1 //临时增加一个设备(分区)到 RAID 中

2. cat /proc/mdstat //确定没有与初始化相关的信息。如果还有,请等待...;也用来最终确定创建状态或运行状态。

3. mkfs.ext4 /dev/md0 //格式化 md0 设备
mkfs.ext4 -j -b 4096 -E stride=16 /dev/md0,意为将/dev/md0格式化为ext2每块儿大小为4k,在使用RAID读取数据时每次存取16个块儿。这样可以提高RAID的磁盘性能。

4. mdadm -Ds >> /etc/mdadm.conf //首次使用要创建RAID的配置信息文件,因为系统有时不会自动创建,所以是必须的,也要备份该文件。
mdadm -D /dev/md0 //查看RAID的信息。

5. mdadm -A /dev/md0 /dev/sdb /dev/sdc /dev/sdd //启动阵列 md0 即由sdb、sdc、sdd组成的md0
mdadm -As /dev/md0 //已有/etc/mdadm.conf 的可以用s来查找

6. /dev/md0 /moutpiont ext4 defaults 1 2 //写入 fstab 的自动挂载

7. # mdadm --monitor --mail=root@localhost --program=/root/md.sh --syslog --delay=300 /dev/md0 --daemonise //配置每300秒mdadm监控进程查询MD设备一次,当阵列出现错误,会发送邮件给指定的用户,执行事件处理的程序并且记录上报的事件到系统的日志文件。使用--daemonise参数(或者其缩写-f)使程序持续在后台运行。如果要发送邮件需要sendmail程序运行,当邮件地址被配置为外网地址应先测试是否能发送出去。/etc/init.d/中有mdmonitor脚本,可以监控RAID将信息发送给/etc/mdadm.conf中定义的邮箱

8. # tail -f /var/log/messages //查看阵列或者阵列中的设备发生过的事件

9. # mdadm -S /dev/md0 //停止RAID,一般不用,即使添加移除设备也不需要停止阵列。

应用(替换设备):
# unount /mountpiont //umount即停止上层应用
# mdadm --query /dev/md0 //查询RAID设备的基本信息 -Q
# mdadm /dev/md0 --fail /dev/sdb //指定损坏的磁盘 --fail(或者其缩写-f)
# mdadm /dev/md0 --remove /dev/sdb //移除某个磁盘 --remove(或者其缩写-r)
# mdadm /dev/md0 --add /dev/sdd //如果阵列没有热备磁盘,可以使用--add(或者其缩写-a)参数增加热备磁盘;如果阵列带有spare磁盘,那么自动将损坏磁盘上的数据(文件系统格式和用户数据)重构到新的spare磁盘上
# mdadm -G /dev/md0 --raid-devices 4 --size=xxxx //扩容(一般不需要,特殊情况下,如做RAID的磁盘大小不等),使用模式--grow(或者其缩写-G)增加以及--size参数(或者其缩写-z 小z 默认KB)就能分别扩展阵列所使用每个块设备的大小
# cat /proc/mdstat //确定没有与初始化相关的信息。如果还有,请等待...
# mount /dev/md0 /mountpiont //挂载使用

关于重装系统后:由于没有动superblocks所以直接用 mdadm -A /dev/md0 /dev/sdxx /dev/sdxx /dev/sdxx 加载上来就行了

删除:
1. umount /moutpiont //移除挂载点

2. mdadm --stop /dev/md0 //停止设备,必须的 --stop(或 -S)

3. mdadm /dev/md1 -f /dev/sdbx //模拟表示为坏盘后才能移除,(RAID0无法标示成坏盘)

4. mdadm /dev/md0 --fail /dev/sdx --remove /dev/sdbxx //删除所有raid对应的磁盘或分区,一个是磁盘一个是分区
或 mdadm /dev/md1 -r /dev/sdb2 //移除磁盘/dev/sdb2

5. mdadm --misc --zero-superblock /dev/sdxx // 清空磁盘或分区(根据创建内容来删除)超级块中的raid信息 (必须先停止设备)
rm -rf /dev/md0 //硬删除,不推荐

6. dpkg-reconfig mdadm //若有问题则重新配置生成initrd文件

[options] -A 装配模式

-C 创建

-F 监控

-G 增加模式

默认的是管理模式

-v --verbose 显示详细信息

-s --scan 扫描系统中/proc/mdstat中的信息

-S 停止RAID设备

创建模式

-n 组建RAID设备包括的磁盘数

-x 指定空闲设备的个数

-l RAID的级别

-c chunk的大小(一定是2的整数次方倍或是磁盘块儿大小的2的整数倍)默认是64k。

-f 在管理模式中设置某块儿磁盘坏了,用来测试

杂项:

-D 查看RAID详细信息

************* ecryptfs 企业级加密 ******************
安装: sudo apt-get install ecryptfs-utils

密码保存文件/root/.ecryptfs/sig-cache.txt

1.建立待加密存储文件夹: mkdir myFolder //= real_path
2.挂载加密文件夹: sudo mount -t ecryptfs real_path ecryptfs_mounted_path //real_path是真实存放数据的地方;ecryptfs_mounted_path 是文件夹挂载点,推荐ecryptfs_mounted_path 和 真实目录 real_path 一致,这样非授权用户不能通过原路径访问加密文件。eCryptfs默认使用 AES-128 算法以及用口令加密 FEK.。口令/公钥称为 FEFEK(File Encryption Key Encryption Key),加密后的 FEK 则称为 EFEK(Encrypted File Encryption Key)。
**** 回答一些问题:
passphrase:
(这是要你输入密码,自己编一个。一定要记住。另外密码是不会有任何显示的,输完回车就行)

select cipher:
(选择加密方式,不选默认是[aes]。最好记住自己的选择)

select key bytes:
(选择加密位数,不选默认是[16]。最好记住自己的选择)

enable plaintext passthrough(y/n) [n]:
(是否允许使用明文,默认是 n)

enable filename encryption (y/n) [n]:
(是否把文件名也进行加密,默认是 n。如果选择y,那么在没有解密 的情况下是无法列出文件夹内部的文件名的,这里选择了与当初加密时不一样的选项也会导致不能正确显示文件名)
关于删除:若是明文则删除挂载目录里面的文件原始文件也删除(不论那种删除方式);若加密了文件名则挂载目录里文件delete或移动到回收站时原目录文件里会有备份目录下面有两个目录选择第二个或体积大的把里面的文件复制到原存储目录根目录再挂载恢复,或rm则可以直接删除,也可以到(.Trash-1000回收站)中去彻底删除。

Filename Encryption Key (FNEK) Signature [b16affa275ff6445]:
(直接回车,解码密钥,不是加密主目录无需私钥,有密码和这个密钥即可。)

这里有时会提示有从未挂载过wrong,请继续挂载yes。
Would you like to proceed with the mount (yes/no)? :
(你是否希望继续进行挂载。)我们输入yes,来完成加密。

Would you like to append sig [799d2f922c0f1f26] to
[/root/.ecryptfs/sig-cache.txt]

in order to avoid this warning in the future (yes/no)?:
(你是否把密码标识保存到/root/.ecryptfs/sig-cache.txt中?)我们输入yes,也可以输no,看你的记心好坏了。

3.卸载加密文件夹:
sudo umount -t ecryptfs ecryptfs_mounted_path //此时myFolder里面的文件将不能打开,而达到加密目的。

***** 挂载卸载循环进行达到使用和保密功能******重复混合网络加密未在本节,请另行深入****

************** home分区主目录加密的密钥及系统重装后的恢复 *****************
一些条件(及思路):
1. 以前用户的登录密码!
2. /home/.ecryptfs/你的主目录名/.Private(现在新系统加密主分区文件的真实保存位置)
3. /home/.ecryptfs/被加密的目录名/.ecryptfs/wrapped-passphrase文件 (必备,这个是用来解密的,恢复密码、钥)
4. /home/.ecryptfs/以前用户加密的主目录名称/.Private (这就是要恢复的真正放资料的文件夹)
5. 思路:登录密码和用户-->公钥-->解密密钥
获得密钥:
初始时的密钥备份:ecryptfs-unwrap-passphrase 若密钥丢失则用下面的方法恢复:
1. cd /home/.ecryptfs/以前用户目录名/.ecryptfs/ (进到以前用户解密文件夹,里面有wrapped-passphrase文件的那个目录,这个路径说明重装后使用的同一个/home分区)

2. sudo ecryptfs-unwrap-passphrase wrapped-passphrase
Passphrase: 输入以前被加密的用户的登录密码
d748f151928cfb5bdd11fea9e2fa9ae2 (通过原用户账户密码获取加密公钥,先保存起来)

3. sudo ecryptfs-add-passphrase --fnek (很重要请不要略过,通过原用户公钥获取解密密钥)
Passphrase: d748f151928cfb5bdd11fea9e2fa9ae2 ( 输入先前第二步保存的密钥字符串)
Inserted auth tok with sig [6ceb75c6208b3c78] into the user session keyring
Inserted auth tok with sig [01bda2c2fc25d863] into the user session keyring (这个密钥是解密密钥)

开始恢复:
4. sudo mount -t ecryptfs /home/.ecryptfs/以前用户加密的主目录名称/.Private ~/restore (挂载加密文件.Private到恢复目录restore里)
Passphrase:d748f151928cfb5bdd11fea9e2fa9ae2 ( 输入先前保存的密钥字符串后回车,后面类似挂载加密的问答场景)

回车直到: Enable plaintext passthrough (y/n) [n]:直接回车 (如果你发现你恢复过来的文件名正常了,但打不开,这里可以选Y)
Enable filename encryption (y/n) [n]: y (这一步很关键,必须和当初加密时的选项一致,否则将恢复出一大堆乱码)

Filname Encryption Key (FNEK) Signature [6ceb75c6208b3c78]: 01bda2c2fc25d863 (输入解密密钥,然后后面同挂载加密的步骤一样操作即可)

完成了,到恢复目录去看文件是否恢复出来了吧,复制出来,同盘复制注意分区可用空间的问题,哈哈。

********************* 一些说明 **************************
编译内核,则需要如下选项:
General setup --->
[*] Prompt for development and/or incomplete code/drivers
File systems --->
Miscellaneous filesystems --->
eCrypt filesystem layer support (EXPERIMENTAL)
Security options --->
Enable access key retention support
Cryptographic API --->
MD5 digest algorithm
AES cipher algorithms
加载 eCryptfs 内核模块,执行modprobe ecryptfs
优点:
1. 易于部署。eCryptfs 完全不需要对 Linux Kernel 的其它组件做任何修改,可以作为一个独立的内核模块进行部署。同时,eCryptfs 也不需要额外的前期准备和转换过程。
2. 用户能够自由选择下层文件系统来存放加密文件。由于不修改 VFS 层,eCryptfs 通过挂载(mount)到一个已存在的目录之上的方式实现堆叠的功能。对 eCryptfs 挂载点中文件的访问首先被重定向到 eCryptfs 内核文件系统模块中。
3. 易于使用。每次使用 eCryptfs 前,用户只需执行 mount 命令,随后 eCryptfs自动完成相关的密钥产生/读取、文件的动态加密/解密和元数据保存等工作。
4. 充分利用已有的成熟安全技术。例如,eCryptfs 对于加密文件采用 OpenPGP 的文件格式、通过 Kernel Crypto API使用内核实现的对称密钥加密算法和散列算法等。
5. 增强安全性。eCryptfs 的安全性最终完全依赖于解密 FEK 时所需的口令或私钥。通过利用 TPM 硬件(TPM可以产生公钥/私钥对,硬件直接执行加密/解密操作,而且私钥无法从硬件芯片中获得),eCryptfs 最大程度上保证私钥不被泄漏。
6. 支持增量备份。eCryptfs 将元数据和密文保存在同一个文件中,从而完美的支持增量备份及文件迁移。
7. 密钥托管。用户可以预先指定恢复帐号,万一遗失加密 FEK 的口令/私钥,也可以通过恢复帐号重新获得文件的明文;但是如果未指定恢复帐号,即使系统管理员也无法恢复文件内容。
8. 丰富的配置策略。当应用程序在 eCryptfs 的挂载点目录中创建新文件的时候,eCryptfs 必须做出许多决定,比如新文件是否加密、使用何种算法、FEK 长度、是否使用 TPM 等等。eCryptfs 支持与 Apache 类似的策略文件,用户可以根据具体的应用程序、目录进行详细的配置。
缺点:
1. 写操作性能比较差。笔者用 iozone 测试了 eCryptfs 的性能,发现读操作的开销不算太大,最多降低 29%,有些小文件测试项目反而性能更好;对于写操作,所有测试项目的结果都很差,普遍下降 16 倍左右。这是因为 Page Cache 里面只存放明文,因此首次数据的读取需要解密操作,后续的读操作没有开销;而每一次写 x 字节的数据,就会涉及 ((x - 1) / extent_size + 1) * extent_size 字节的加密操作,因此开销比较大。
2. 有两种情况可能造成信息泄漏:a. 当系统内存不足时,Page Cache 中的加密文件的明文页可能会被交换到 swap 区,目前的解决方法是用 dm-crypt 加密 swap 区。b. 应用程序也有可能在读取加密文件后,将其中某些内容以临时文件的方式写入未挂载 eCryptfs 的目录中(比如直接写到 /tmp 中),解决方案是配置应用程序或修改其实现。
3. eCryptfs 实现的安全性完全依赖于操作系统自身的安全。如果 Linux Kernel 被攻陷,那么黑客可以轻而易举地获得文件的明文,FEK 等重要信息。

******* cryptsetup 磁盘、分区、文件加密,usb加密盘制作及使用
cryptsetup是linux下的一个分区加密工具,和之前介绍过的eCryptfs不同的是:eCryptfs是文件系统级别的加密,而cryptsetup是分区级别的,比文件系统级别工作在更底层的位置,是在经过加密的块设备上,再创建文件系统,再挂载使用。

$ sudo apt-get install cryptsetup //安装cryptsetup,一般发行版可以解决依赖即没有下列问题。

/proc/misc: No entry for device-mapper found
Is device-mapper driver missing from kernel?
Failure to communicate with kernel device-mapper driver.
Cannot initialize device-mapper. Is dm_mod kernel module loaded?
Command failed with code 22: Cannot initialize device-mapper. Is dm_mod kernel module loaded?

这时候你不要急着去安装 device-mapper ,因为现在 device-mapper 已经并入到更强大的 lvm2 里面了,所以你要确保装了 lvm2 和在内核选项里选择了CONFIG_DM_CRYPT,如下:

-> Device Drivers
-> Multiple devices driver support
-> Device mapper support
-> Crypt target support

另外,还建议选取大文件支持的CONFIG_LBDAF和CONFIG_CRYPTO_AES两个内核选项,我这边不选取前者,会无法打开加密分区(虽然说LBDAF是2T+的单文件支持,而我的硬盘一共只有80G);后者是一个内核里的加密算法API,我们就用这个算法来加密(也可以用其他的算法)。

1. $ sudo cryptsetup --verbose --verify-passphrase -c aes-cbc-plain luksFormat /dev/sdc1 //建立一个加密的分区,默认是--key-size 256(也可以指定为512);aes-xts-plain 需要2.6.24以上kernel
我的外接硬盘在 /dev/sdb1 ,因为这个命令会摧毁这个分区的所有数据,所以程序会让你确认,输入大写的YES,回车,就会让你输入两次密码,输完就搞定了。
话外音:其实cryptsetup不仅支持用密码加密,还支持用文件来加密,可以是任意类型的文件,不过解密的时候,要确保文件一个字节都不差,用这个特性可以安全地构建解密U盘。

2. $ sudo cryptsetup luksOpen /dev/sdc1 myusb //其中最后的“myusb”,可以是任意字符串,程序会提示输入之前设置的密码,输对密码以后,文件系统里就会多出一个设备 /dev/mapper/myusb;注意:拔除设备以后再次插入使用时会以 uuid 的形式来表示,不再是首次输入的字符。

3. $ sudo mkfs.ext4 /dev/mapper/myusb //这里格式化的是 cryptsetup 加密后产生的设备;如果直接格式化(也可以用parted、gparted)原始设备 /dev/sdxx 这就相当于解除加密并且删除所有数据即设备还原了;parted 或 gparted 不能用来来格式化 crypt-luks 设备。

4. $ sudo mount /dev/mapper/myusb /moutpiont //首次创建加密设备后要挂载到一个挂载点才能使用;以后就可以在输入密码后自动挂载了。

5. $ sudo cryptsetup luksClose /dev/mapper/myusb //首次使用时需要手动关闭加密分区;以后可以直接使用安全移除驱动器功能;或fsck时使用***加密后只能fsck加密后的设备,如果fsck加密前的原始设备会出错。如果你的主机默认开启了定时定次的 fsck ,你可能要用 tune2fs 检查自动挂载的 fsck 设置。

PS:插入加密盘后会自动判断,并直接弹出输入密码的窗口,输完自动挂载分区;最简单的创建加密盘是在设备上右键选择格式化-加密的-与linux兼容(FAT)

*** 使用cryptoloop挂载一个虚拟块文件(镜像)
1. dd if=/dev/urandom of=/path/myfile bs=512 count=20971520 //随机数据创建一个10GB的镜像文件名 myfile,全零用zero
2. sudo losetup /dev/loop0 /path/myfile //创建 myfile 为 loop0 的回环设备。
3. sudo cryptsetup luksFormat /dev/loop0 //然后 luksFormat 该 loop0 为加密“分区”
4. sudo cryptsetup luksOpen /dev/loop0 myfs //启用设备为 crypt-luks设备
5. sudo mkfs.ext4 /dev/mapper/myfs //格式化该 crypt-luks 设备
6. sudo mount /dev/mapper/myfs /path/moutpiont //挂载使用。。。
7. sudo umount /path/moutpiont //卸载文件系统
8. sudo cryptsetup luksClose /dev/mapper/myfs //关闭 crypt-luks 备
9. sudo losetup -d /dev/loop0 //卸载环回设备
10.sudo losetup /dev/loop0 /path/myfile //再次使用时启用环回设备

****** 自动挂载的cryptsetup******
1. sudo nano /etc/fstab //创建了加密分区后,修改主机系统自挂载控制文件fstab

/dev/mapper/mydisk /moutpiont ext4 defaults 0 0

2. sudo nano /etc/crypttab //修改cryptsetup自挂载控制文件 /etc/crypttab

mydisk /dev/sdxx /path/passwd文件 luks

3. sudo echo "jm" > /root/crypasswd //创建一个密码文件/root/crypasswd,密码为jm是糊弄人的根本不会用到,如果直接touch空文件后也能用,关键是文件要存在。使用luksAddKey后查看密码文件为空。

4. sudo cryptsetup luksAddKey /dev/sdxx /root/crypasswd //设置多个用户的挂载密钥以开放权限,单用户可以用创建加密分区 luksOpen 的密码,若要全自动挂载则此步是必须的,若要让系统启动挂载时询问密码则可以无需此步。

sudo chown root /root/crypasswd //设置权限
sudo chmod 600 /root/crypasswd

PS:加密再自动挂载其实是脱了裤子放屁,加密了还自动挂载干啥呢?只能达到无开机密码时加密盘不被其他系统引导使用其中数据的目的,设备已经luksOpen就绪就 能登陆系统,加密盘就失去了意义,卡住 luksOpen 才能算把住加密关;除非如果要达到加密 /home、/tmp、/swap的目的,也必须是半自动挂载需要手动输入luksOpen密码才安全。如果你的主机默认开启了定时定次的 fsck ,你可能要用 tune2fs 检查自动挂载的 fsck 设置。

****** 加密/home,启动系统时需要提供加密分区 luksOpen 密码(也可同时加密swap):
*** 注销你的帐户,用 root 来操作。
# modprobe dm_crypt //设定模块
# lsmod | grep dm_crypt //查看模块是否运行
# cp -arfp /home /path/备份home //先备份主目录,后面操作有风险所以最好放在本地磁盘以外的地方!
# cryptsetup --verbose --verify-passphrase -c aes-cbc-plain luksFormat /dev/vg0/lv1 //创建用于加密主目录的加密分区,默认是--key-size 256(也可以指定为512);aes-xts-plain 需要2.6.24以上kernel
# cryptsetup luksOpen /dev/vg0/lv1 mydisk //启用该加密分区
# dd if=/dev/urandom of=/dev/mapper/mydisk //填充随机数据,让人不能估计当中藏有多少数据,你可以跳过这一步,但花时间来做它能增强加密的功效。
# ps uxa | grep dd //用 watch 及 kill 来显示 dd 的进度,如无需要可以略过
# watch -n 20 kill -USR1 PID
# mkfs.ext4 -j -O dir_index /dev/mapper/mydisk //格式化该分区
# tune2fs -l /dev/mapper/mydisk //看看是否正确
# echo "密码" > /root/crypasswd //据说这样避免/n的问题
# cryptsetup luksAddKey /dev/vg0/lv1 /root/crypasswd //设置几个密码
# mount /dev/mapper/mydisk /mountpiont //挂载crpyt-luks-disk到挂载点
# cp -arfp /path/备份home/* /moutpiont //向挂载点倒回/home里面的用户配置文件;~/.gvfs需用该~/用户操作
# crypsetup luksClose mydisk //关闭加密分区
# nano /etc/crypttab //启用 cry-luks 自挂载,不设置key路径或设为 none,让系统开机询问加密分区密码才能挂载
mydisk /dev/vg0-lv1 none luks
swap /dev/swap /dev/urandom swap,cipher=aes-cbc-essiv:sha256 //避免 swap 破解时需要加密 swap ,指定加密系统在开机时采用 AES 的 SHA 256 位元加密法。每次开机所产生的新密钥将会在系统中一直生效。关机的时候,这条密钥不再有效,因此 /swap 便受到保护。
# nano /etc/fstab //修改系统挂载文件,需要注意的是有的系统有可能会用 UUID 来表示挂载的luks磁盘,所以有必要先(或许要重启一次用 blkid /dev/mapper/mydisk 才能确定)确定 crypt-luks 磁盘的表示后才改写fstab,然后才可以使用。
/dev/mapper/mydisk /home ext4 defaults 1 2 //也可以用 UUID 来表示
/dev/mapper/swap none swap defaults 0 0 //加密 swap 时的 fstab 配置

*** # mount |grep '/dev/mapper' //查看哪些设备被挂载
# lvextend -L+512M /dev/vg0/lv1 //需要用加密的磁盘来扩展而不是一般的 LVM 路径
# resize2fs /dev/mapper/mydisk //用加密的路径调整文件系统大小

*** PS:验证:如果不能直接挂载 LVM 则表示 crypt-luks 加密成功(会有crypt-luks提示)。按照 /etc/crypttab 的设置来写 /etc/fstab 的挂载内容即可,/dev/mapper/里面除了 crypttab 里面设定挂载的文件名以外还有个 vg0-lv1 的可以不用管它。如果你的主机默认开启了定时定次的 fsck ,你可能要用 tune2fs 检查自动挂载的 fsck 设置,

***** 备份luks头危险,错误的恢复将导致无可挽回的损失;它存储加密信息最重要的是MASTERKEY。
# cryptsetup luksHeaderBackup /dev/vg0/lv1 --header-backup-file /path/file //备份 luks 头到指定文件
# cryptsetup luksHeaderRestore /dev/vg0/lv1 --header-backup-file /path/file //从指定文件恢复 luks 头到加密的驱动器

************* gnupg加解密 ******************
1.仅使用对称加密 //只需要加密者确定的密码解密 最简单 不需要对方发来的加密公钥
$ gpg -c filename //将生成filename.gpg //注意不同于.pgp文件
$ gpg -d filename.gpg //解密 仅需输入密码既可 //加 -d 在终端里显示,不加 -d 则解压出来filename文件。
2.使用对发来的公钥加密,接收方解密时要输入提供公钥者创建的密码。加密解密可使用gnome右键加密按钮的图形界面完成。 //可生成.pgp文件

************** 简要用法 ****************
gpg --export-public-keys -a -o keys.asc //导出公钥,发给别人加密,然后把加密文件传给自己。
gpg --export-secret-keys -a -o keys.asc //导出私钥,作为备份,可在其他机器上导入来解密文件。
密钥签名:指定使用签名者的密码来加解密。

********************** gpg -h *********************
语法:gpg [选项] [文件名]
签名、检查、加密或解密
默认的操作依输入数据而定

指令: -public-key //公钥 @@ -secret-key //私钥

-s, --sign [文件名] 生成一份签名
--clearsign [文件名] 生成一份明文签名
-b, --detach-sign 生成一份分离的签名
-e, --encrypt 加密数据
-c, --symmetric 仅使用对称加密
-d, --decrypt 解密数据(默认)
--verify 验证签名
--list-keys 列出密钥
--list-sigs 列出密钥和签名
--check-sigs 列出并检查密钥签名
--fingerprint 列出密钥和指纹
--list-public-key 列出公钥
-K, --list-secret-keys 列出私钥
--gen-key 生成一副新的密钥对
--delete-keys 从公钥钥匙环里删除密钥
--delete-secret-keys 从私钥钥匙环里删除密钥
--sign-key 为某把密钥添加签名
--lsign-key 为某把密钥添加本地签名
--edit-key 编辑某把密钥或为其添加签名
--gen-revoke 生成一份吊销证书
--export 导出密钥
--send-keys 把密钥导出到某个公钥服务器上
--recv-keys 从公钥服务器上导入密钥 //直接从服务器导入不需--import
--search-keys 在公钥服务器上搜寻密钥
--refresh-keys 从公钥服务器更新所有的本地密钥
--import 导入/合并密钥 //可以是本地的
--card-status 打印智能卡状态
--card-edit 更改智能卡上的数据
--change-pin 更改智能卡的 PIN
--update-trustdb 更新信任度数据库
--print-md 算法 [文件]
使用指定的散列算法打印报文散列值

选项:

-a, --armor 输出经 ASCII 封装
-r, --recipient 某甲 为收件者“某甲”加密
-u, --local-user 使用这个用户标识来签名或解密
-z N 设定压缩等级为 N (0 表示不压缩)
--textmode 使用标准的文本模式
-o, --output 指定输出文件
-v, --verbose 详细模式
-n, --dry-run 不做任何改变
-i, --interactive 覆盖前先询问
--openpgp 行为严格遵循 OpenPGP 定义
--pgp2 生成与 PGP 2.x 兼容的报文

(请参考在线说明以获得所有命令和选项的完整清单)

范例:

-se -r Bob [文件名] 为 Bob 这个收件人签名及加密
--clearsign [文件名] 做出明文签名
--detach-sign [文件名] 做出分离式签名
--list-keys [某甲] 显示密钥
--fingerprint [某甲] 显示指纹

************************ 配合的一些解释 ******************************
GnuPG命令使用
  
  ---- 1.生成密钥对
  
   使用GnuPG之前必须生成密钥对(公钥和私钥),参数选项"--gen-key"可以生成密钥对。可按如下步骤操作。
  
  gpg --gen-key
  
  ---- 2.证书的回收
  
  ---- 当您的密钥对生成之后,您应该立即做一个公钥回收证书,如果您忘记了您的私钥的口令或者您的私钥丢失或者被盗窃,您可以发布这个证书来声明以前的公钥不再有效。生成回收证书的选项是"--gen-revoke"。
  
  gpg --output revoke.asc --gen-revoke mykey
  
  其中mykey 参数是可以表示的密钥标识,产生的回收证书放在revoke.asc文件里,一旦回收证书被发放,以前的证书就不能再被其他用户访问,因此以前的公钥也就失效了。
  
  ---- 3.密钥列表
  
   gpg --list-keys
  
  ---- 4.输出公钥
  
   您可以输出您的公钥供您的主页使用,也可以把它放在密钥服务器上,当然,还可以使用于其他的途径。在您使用此公钥之前您首先要导出它。选项 --export 可以实现这个功能,在使用这个选项时,还必须使用附加的选项指明您要输出的公钥。
  
   下面的命令表示以二进制格式输出公钥:
  gpg --output kapil.gpg --export somebody@sa.b.c

  如下命令表示以ASCII字符格式输出:
  gpg --output kapil.gpg --export --armor somebody@sa.b.c

  ---- 5.导入公钥
  
  您可以把从第三方的公钥数据库中得到的公钥导入您的私有数据库,在与他人进行通讯时使用。
  gpg --import < filename >
  其中,参数filename为公钥文件。
    
  ---- 6.确认密钥
  
  导入密钥以后,使用数字签名来验证此证书是否合法。查看数字签名使用 --fingerprint 选项。   
  gpg --fingerprint < UID >
  其中,UID 为您要验证的公钥。
  
  ---- 7.密钥签名
  
  导入密钥之后,可以使用 --sign-key 选项进行签名,签名的目的是证明您完全信任这个证书的合法性。  
  gpg --sign-key < UID >
  其中,UID 是要签名的公钥。
  
  ---- 8.检查签名
  
  gpg --check-sigs < UID >
  这个选项可以列出此密钥文件的所有的签名。
  
  ---- 9.加密和解密
  
  加密和解密一个文件非常容易,如果您要给redhat发送一个加密文件,您可以使用redhat的公钥加密这个文件,并且这个文件也只有redhat使用自己的密钥才可以解密查看。

  加密一个文件可以使用下面的指令
  gpg --sear < UID > < file >
   其中,UID是对方的公钥,file为您要加密的文件。
  如果您要解开一个其他用户发给您的文件可以使用下面的指令:
  gpg -d < file >
  
  其中,file是您要解密的文件。解密过程中,GnuPG会提示您输入使用密钥所需要的口令,也就是在产生私钥时您所输入的口令。

************************* 加密方式 ***************************
1. 对称加密
在加密高级选项里,有个对称加密选项。使用这个选项后,不再需要密钥,只需要一个密码即可加密。
接收者也不再需要什么密钥,只需要这个密码即可解密。这就是很常见的加密方式。安全性也不高

2. 密钥加密
这是用到“公/私”密钥的加密方式。
先创建一对密钥对(公钥、私钥),及密码。把私钥藏好,把公钥交给朋友。
加密高级选项中不要选择“对称加密”,选择时找对公钥(接收者要有对应的私钥),加密即可。

3. ASCII加密
在高级选项中,还有一个“ASCII加密”加密选项。它的意思是加密后以ASCII码表示出来。方便你使用email、QQ等文本方式发送加密内容。如果是对文件加密,加密文件结尾为.asc。
特点是传送方式多样,纯文本形式。压缩包、文件夹、图片、非ASCII(word、数据库)等都能转换为ASCII码。
缺点是,加密文件比较大。

4. 非ASCII加密
在高级选项中,不要选择“ASCII加密”加密选项。对文件加密,加密文件结尾为.gpg
特点是加密文件比较小。
缺点是解密前无法以文本方式阅读。

5. 解密
收到加密文件后,通过加密对应的方式,反操作即可解密。其中要求选择正确的“私钥”,还要输入密钥的密码。
如果是压缩包、文件夹、图片、非ASCII,在“编辑器”解密可能会解出一堆乱码。相当于用文件查看器查看这些内容。是不是一定非要了解对方加密的是什么东西呢?不需要。

* 以文本方式保存得到的加密ASCII码,记得开头和结尾的带--------的英文也要完整的保存进去。
* 文件以.asc结尾命名。理论上无论文件以什么结尾,系统应该能自动识别。
* 在dolpin中,使用动作“解密”

这样你就能得到正确的解密文件了,不用伤脑子。
对于“非ASCII加密”,直接解密.gpg文件即可。

*************** pamusb Usbkey(U盘锁) ****************
pam_usb 安装使用非常简单,其工作原理是利用存储在USB闪盘中的私钥,结合Linux服务器的系统登录口令认证,来实现Linux下多用户登录同
1. sudo apt-get install pamusb-tools //安装
ls /usr/bin/ | grep pamusb //确认无遗漏
pamusb-agent
pamusb-check
pamusb-conf

2. sudo gedit /etc/pam.d/common-auth //把下面这段插入到最前面;sufficient(已足够即插入U盘或输入密码二选一) 改成 required(需要密码,U盘并输入密码)
auth sufficient pam_usb.so

3. sudo gedit /etc/pamusb.conf //让sudo时没有一长串提示,有时候看看也挺有成就感的。
标签中间修改成下面内容:


4. sudo pamusb-conf --add-device myusbkey //给你的usb设备取个名,然后会询问是哪个
5. sudo pamusb-conf --add-user myname //添加你要登录的用户

************** 进程 ****************
1、交互进程:由一个shell启动的进程,既可以在前台运行,也可以在后台运行。
2、批处理进程:不与特定的终端相关联,提交到等待队列中顺序执行进程。
3、守护进程:在linux启动是初始化,需要时运行于后台的一些服务进程。
进程的启动方式:
1、手工启动,分为前台启动和后台启动,通常情况下,我们执行一个命令就会启动一个进程。
#ls / -R >test 前台启动
#ls / -R >test & 后台启动
查看系统中的进程
1、ps [选项]
[选项]
-a 显示所有用户的进程,但不包括没有控制终端的进程
-u 显示用户名和启动时间
-x 显示没有控制终端的进程

PS命令输出的重要信息的含义
PID:进程号
PPID:父进程的进程号
TTY:进程启动的终端
STAT:进程当前的状态,S代表休眠,R代表运行,T代表追踪或停止,Z代表僵尸进程,W代表进程没有固定的pages,
结束程序命令 #pid of 程序名
XXX
#Kill XXX 或 kill `pidof commandname` 或 kill $(pidof commandname)
命令:ps -u ps -l
终结单个进程:kill pid
强制终结单个进程:kill -9 pid
**父进程必须同时终结子进程
结束一组进程(用进程名):killall 进程名 pkill 进程名
结束xwin的进程:xkill 然后用鼠标点击即可
HUP 1 控制中的?端/程序中?
INT 2 ??的插入指令(同 Ctrl + C)
QUIT 3 ??的中?指令(同 Ctrl + \)
TERM 15 程序的?止指令
KILL 9 程序的?制?止指令(暴力砍掉)
CONT 18 程序的再??指令(STOP(19) 後再重新??)
STOP 19 程序的停止指令(同 Ctrl + Z)
********* 进程的前后台挂起恢复及运行 ***************
1. 前台挂起到后台再回前台:
commond (加&则为直接从后台启动,可不必等前台完成)
ctrl+z
ps
jobs
fg x (x为作业号)
bg x
2. 后台运行不会中断并可同时进行其他操作,关闭该shell即退出:
nohup commond &
jobs 可查询作业号并fg或bg操作
3. 后台运行不可被中断,即使shell退出。
(commond &) #在子shell中后台运行
setsid commond & #效果同子shell中后台运行
*************screen用法***************
#最简单的方法是nohup,但是nohup也有很多的问题,于是有了screen。

# screen其实就是linux虚拟终端(我叫它影子后台),你可以用它创建很多虚拟终端,从窗口0开始,每个窗口相当于一个linux shell窗口,可以执行的操作和正常shell完全一样。”ctrl+a 10″会跳到第一个窗口,笨的方法是先跳到第九个窗口,然后使用”ctrl+a n”跳到下一个窗口,直到跳到目的窗口;另外一种办法是使用”ctrl+a 双引号”将窗口列表显示出来,然后选中目的窗口跳过去。
# 如果发生了突然断线 那么你重新登陆后 screen -ls 会发现 有screen的状态是处于(Attached,附加)状态 此刻我们使用 screen -d 将他强行放到背景,然后再用screen -r id 将他呼叫回来。
# 大写字母的按法:先安Ctrl+a , 然后单独安CapsLock切换大写,再单独安大写字母即可。
# 如果 screen -ls 看到有死亡的会话 可以用screen -wipe 进程号 将他杀掉。
# screen 或 screen 进入 screen 模式
# screen -S sessionname command 创建一个sessionname的command的会话
# screen -ls 查看有哪些screen。
# screen -r id 打开编号为id的screen窗口。
# screen -x 进入一个已运行的screen多用户模式,并可多窗口控制一个screen
# exit 退出当前窗口,如果它是此screen的唯一窗口时,此screen也将完全退出。
#【终端操作】 (需要在物理shell中操作)
# screen:创建一个虚拟终端并且登录之
# screen -ls 列出当前所有虚拟终端
# screen [-d] -r sessionid 进入指定的虚拟终端
#【终端中的窗口操作】
# Ctrl+a a 清除错误的 Ctrl-a
# Ctrl+a c 创建窗口
# Ctrl+a C(大写的字母 C,代表 “Clear”)清除一个窗口的内容(清屏)
# Ctrl+a w 显示窗口列表
# Ctrl+a n 下一个窗口
# Ctrl+a p 上一个窗口
# Ctrl+a 空格 窗口切换
# Ctrl+a 0-9 在第0个窗口和第9个窗口之间切换
# Ctrl+a K(大写) 关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)
# Ctrl-a :quit 退出 screen,将关闭所有 screen 终端,结束其中所有任务
# Ctrl+a Ctrl-\(反斜杠)杀死所有窗口并终止当前的 Screen 会话
# Ctrl+a d 断开当前screen,返回加载screen前的shell<终端>命令状态,小写的字母 d,代表 “detach”,为了临时断开与 Screen 会话及其所有窗口的连接,screen和其中任务仍然继续运行不受影响。
# 如何关闭一个终端?
# 如果需要关闭一个终端,可以先进入此终端,然后将所有窗口关闭,当所有窗口都关闭的时候,终端自动关闭,并且出现“[screen is terminating]”。
# 【友情提醒】
# 使用screen创建的虚拟终端虽然实用上大大提高工作的安全性,但是,如果终端创建得太多,很容易让人找不到原来的程序在哪个终端中的哪个窗口中执行,令人迷惑,所以,终端的数目不宜创建过多,并且要记住程序所运行的具体终端、窗口。

************************
禁止ping入:在/etc/rc.d/rc.local中加入
echo 1 >proc/sys/net/ipv4/icmp_echo_iqnore_all
显示可执行命令的路径 which 命令名

****************
查找文件 find / -name xxx

************ reisub ***********
cat /proc/sys/kernel/sysrq 显示“1”(或其它非0值)
sys rq按了后,alt要一直按住再依次按reisub

***************** 分辨率代码 ********************
/boot/grub/menu.lst 在kernel那一行的最后加上 vga=788数字的含义:
颜色 640×480 800×600 1024×768 1280×1024
256 769 771 773 775
32K 784 787 790 793
64K 785 788 791 793
16M 786 789 792 794

************* md5 sha1 生成效验 ************
校验文件MD5或SHA1 (存在于/usr/bin/openssl)
命令:openssl md5 xxxxxxx
openssl sha1 xxxxxxx

验证刻录光盘或镜像内文件的正确性----进入挂载目录后 md5sum -c md5.file
验证iso镜像的正确性----进入放iso和验证文件所在目录 md5sum -c md5.file
校验iso内文件的sha1 --------进入挂载目录后 sha1sum --check name_of_checksum_file.txt name_of_selected_iso_file.iso
效验256位或512位sha1 sha256sum sha512sum

任意字符校验 echo -n 任意字符 | md5sum | cut -d ' ' -f 1

递归建立hash:(注意执行命令的path不能和输出path相同,否则输出文件也被md5且因为不停被改写而导致有一个校验失败的警告)
find /path -type f -print0 | xargs -0 md5sum >/path/md5

find `pwd` -type f -print0 | xargs -0 md5sum >/path/md5


************** 启停登录管理器gdm ****************
重启X:

1. 在alt+ctrl+f1~F6中重启gdm服务:
sudo /etc/init.d/gdm restart

sudo /etc/init.d/gdm stop
sudo /etc/init.d/gdm start

************ k掉X ************
ps -t tty7 此时可以发现一个Xorg的进程,记下他的PID。随后使用 kill 进程号将该进程kill掉,如果不使用加参数-9即“kill -9 进程号”随后系统将自动重新启动Xorg,再次回到开机后的登录界面。

****************
运行第二个X startx -- :1 (=ctrl+art+f8)

*********** ATI显卡 deb************
编译成deb的好处:确认先有安装dkms,然后安装deb的fglrx驱动,这样在升级内核的时候会自动编译到新内核的支持,即使是从2.6升级到3.0以上也不会因为升级内核而导致显卡驱动跟不上而黑屏,你会在/var/lib/dkms下找到由dkms支持编译的显卡驱动;而直接安装的驱动就没有这优点了。

切记先卸载现有的fglrx,不然会出问题
sudo aptitude purge fglrx fglrx-dev fglrx-amdcccle fglrx-modaliases
sudo apt-get remove fglrx fglrx-dev fglrx-amdcccle fglrx-modaliases --purge

编译:
sudo sh ati*.run --listpkg (查看可以支持的版本信息)
sudo sh *.run --buildpkg Ubuntu/lucid
sudo dpkg -i *.deb
sudo aticonfig --initial -f //配置和生成/etc/X11的xorg.conf,防止有时不能正确启动fglrx的驱动

消除legacy驱动 testing use only 水印:
查看 cat /etc/ati/signature 内容为:UNSIGNED
编辑之并替换内容为稳定版签名 //解开一个近期的稳定版安装包里面就有 5da725748a98681ea0dd5ee8eeeff730:65891c4ca7a95a2e96ec6f89c3dec30169961537a7d93c5780ea66d8dddfc2:6b921d4dbbfb5c7dc1ea3fd1db8ec55564914017bcfe5027c3ee3a8d8ddcc7016b9e1c42bbad5b29c1ea3ad1dd8cc20765974015bcae0c26c4b93a8e8ddd

查看信息:
fglrxinfo
glxinfo | grep rendering
显卡缓存 grep -i ram /var/log/Xorg.0.log; grep -i mem /var/log/Xorg.0.log

***PowerXpress 内置和独立显卡切换(root 用户执行)
aticonfig --px-igpu //使用内置显卡(节能模式),运行后注销/重启 X11 生效
aticonfig --px-dgpu //使用独立显卡(高性能模式),运行后注销/重启 X11 生效
aticonfig --pxl //查看当前正在使用的显卡
***OverDrive 超频选项
aticonfig --odgc //显示当前 GPU 核心及显存频率、理论范围和 GPU 占有率
aticonfig --odgt //获取当前 GPU 温度
aticonfig --odsc=GPU_CLOCK,GDDR_CLOCK //设置新的 GPU 频率和显存频率
aticonfig --odrd //如果新频率不稳定的话,那么可以恢复原始,运行后注销/重启 X11 生效
aticonfig --odcc //如果新频率稳定可用,那么可以设置为启动时自动超频,运行后注销/重启 X11 生效

测试:
fgl_glxgears 或
glxgears
***xvidtune工具
在终端中运行xvidtune
可以通过里面的滑块来调整屏幕位置,设置好后点“show”,在终端窗口中会出现如下一行文字:在终端窗口中会出现如下一行文字:
  
   "800x600" 56.30 800 832 896 1048 600 601 604 631 +hsync +vsync。如果想保存设置, 退出后要修改/etc/X11/XF86Config-4这个文件Modeline一行,将内容修改为上面显示的文字:"800x600" 56.30  800 832 896 1048 600 601 604 631 +hsync +vsync,即可。

**** sudo Xorg :1 -configure //生成xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom
sudo sh -c 'md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum'
sudo dpkg-reconfigure xserver-xorg //重新配置X-server
**** xrandr //查看显示器分辨率,频率
xrandr -s 1024x768 -r 85 //设置分辨率,频率
**** 关闭显示器 sleep 2 && xset dpms force off
dpms可以认为是一个显示能源管理系统,一般用于计算机功耗的管理。
在linux中有几个选项:
To control Energy Star (DPMS) features:
-dpms Energy Star features off 关闭节能模式
+dpms Energy Star features on 打开节能模式
dpms [standby [suspend [off]]]
force standby 强制待机
force suspend 强制休眠
force off 强制关闭屏幕
force on 打开节能模式
(also implicitly enables DPMS features)
a timeout value of zero disables the mode(测试系统 red flag linux)
standby 待机
suspend 休眠
off 关闭屏幕
xset的意思是xwindow设置

*************** nvidia显卡驱动 ******************
** 开源驱动nouveau(livecd安装时用的驱动),** 受限制驱动列表(源),要么是PPA源(一般是私人建的,方便群众用),要么是自己下载编译的驱动(也就是本页教程),自己编译驱动是需要卸载系统安装的旧驱动的。因为手动安装二进制包的时候不受本地软件库管理,也就不能自动卸载原来的驱动。

*** sudo apt-get install nvidia-current nvidia-settings //受限制驱动列表(源),这也是最简单的安装NVIDIA驱动的方法;找不到nvidia.ko的问题,安装一次受限制驱动列表(源)便可
1. sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-`uname -r` //编译依赖
2. sudo nano /etc/modprobe.d/blacklist.conf //屏蔽开源驱动nouveau,添加 blacklist nouveau
sudo nano /etc/default/grub //也可以通过Grub2屏蔽
GRUB_CMDLINE_LINUX="nomodeset" #修改这行
sudo update-grub
3. sudo /etc/init.d/gdm stop //注销系统,关闭图形环境;另有KDM、XDM、LIGHTDM、MDM等相应的DM
4. sudo sh NVIDIA*.run //安装闭源驱动
如果提示有旧驱动,询问是否删除旧驱动,选Yes
如果提示缺少某某模块(modules),询问是否上网下载,选no
如果提示编译模块,询问是否进行编译,选ok
如果提示将要修改Xorg.conf,询问是否允许,选Yes
5. sudo /etc/init.d/gdm restart //重启图形DM;另有KDM、XDM、LIGHTDM、MDM等相应的DM
6. sudo apt-get --purge remove nvidia-* //善后,卸载旧驱动
sudo apt-get --purge remove xserver-xorg-video-nouveau
7. sudo nvidia-xconfig --no-logo //删除NVIDIA标识,或者修改文件
sudo nano /etc/X11/xorg.conf
在Device部分找到Driver "nvidia"这一行
在这一行后面,加上:
Option "NoLogo"
8. sudo add-apt-repository ppa:ubuntu-x-swat/x-updates //编译好的NVIDIA驱动的PPA源
sudo apt-get update
sudo apt-get install nvidia-current nvidia-settings
sudo apt-get install nvidia-current-dev //GPU开发的cuda和openCL库的支持
***消失的xorg.conf,其实是改用了/etc/xorg.conf.d/目录存放 //ubuntu
9. gksudo nvidia-settings //NVIDIA显卡设置,这步不能省,相当于amd的aticonfig --initial -f
10. sudo apt-get install libvdpau1 //高清硬解 vdpau

*************** 内核gpg sign公钥效验 *************

验证内核签名
首先从gpg的服务器获取签名公匙, linux内核包的公匙编号是0x517D0F0E. 再利用sign文件来验证.bz2压缩包的签名. 如果输出中有类似gpg: Good signature from "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>" 的内容, 说明该包是有效的. (注: GPG签名只是保证镜像网站提供的压缩包和kernel.org所提供的是相同的, 如果在kernel.org下载, 不需要验证签名.)
$gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
$gpg --verify linux-2.6.35.9.tar.bz2.sign linux-2.6.25.9.tar.bz2

************ alsa 声卡配置 *************
查看alsa版本 alsactl -v

1. 安装环境:
sudo apt-get install build-essential ncurses-dev gettext xmlto linux-headers-`uname -r` libncursesw5-dev

2. 停止声卡:
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsasound stop

3. 卸载原有驱动
sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils

4. 由于在删除alsa-utils的时候会同时删除gdm和ubuntu-desktop,所以得重新安装,否则会无法进入桌面,务必不要漏过此步
sudo apt-get install gdm ubuntu-desktop

5. 下载驱动:http://www.alsa-project.orgftp://ftp.alsa-project.org/pub/ (下载对应的drive;lib;utils)

6. 查看支持的内核版本
less alsa-driver-1.0.*/SUPPORTED_KERNELS

7. 查看声卡解码芯片(如果系统不能识别声卡,可能无法由下面两个查到,那么查看电脑配置单)
tail -2 /proc/asound/oss/sndstat

head -1 /proc/asound/card0/codec#0

8. 在 alsa-driver-1.0.*/alsa-kernel/Documentation/ALSA-Configuration.txt 中查找自己声卡解码芯片对应的 model 名字

9. 安装(依此顺序):
9.1
cd alsa-driver-1.0.* //具体版本具体修改
./configure --with-cards=MODULE_NAME //我的ALC892是 hda-intel
make
sudo make install

9.2
cd ../alsa-lib-1.0.* //具体版本具体修改
./configure
make
sudo make install

9.3
cd ../alsa-utils-1.0.* //具体版本具体修改
./configure
make
sudo make install

安装utils时返回错误要链接缺失的库:
sudo ln -s /usr/lib/libpanelw.so.5 /usr/lib/libpanelw.so && sudo ln -s /usr/lib/libformw.so.5 /usr/lib/libformw.so && sudo ln -s /usr/lib/libmenuw.so.5 /usr/lib/libmenuw.so && sudo ln -s /lib/libncursesw.so.5 /lib/libncursesw.so

sudo ln -s /usr/lib/libpanelw.so.5 /usr/lib/libpanelw.so
sudo ln -s /usr/lib/libformw.so.5 /usr/lib/libformw.so
sudo ln -s /usr/lib/libmenuw.so.5 /usr/lib/libmenuw.so
sudo ln -s /lib/libncursesw.so.5 /lib/libncursesw.so

10.配置声卡:
alsaconf

添加 /etc/modprobe.d/sound 文件,内容为:
alias snd-card-0 snd-MODULE_NAME
alias sound-slot-0 snd-MODULE_NAME
比如我的就是:
alias snd-card-0 snd-hda-intel //或旧的snd-atiixp
alias sound-slot-0 snd-hda-intel //或旧的snd-atiixp

在 /etc/modprobe.d/alsa-base 或 /etc/modprobe.d/alsa-base.conf 中最后一行添加:
options snd-MODULE_NAME model=MODEL_NAME

重新启动,使用 alsamixer 调节声音设置。
KDE环境: kmix

*****其他的声音驱动及声音服务器
驱动:
OSS -- Open Sound System,强大而完善的闭源声卡驱动,4F为闭源版本,开源版本已逐渐被alsa取代
alsa-oss -- ALSA的OSS模拟器
声音服务器:
alsamixer:alsa自带的混音服务,以前是dmix
pulseaudio -- 以前叫Polypaudio,是一个跨平台的,可通过网络工作的声音服务,它是一个声音服务器,一个后台进程从一个或多个音源(进程或输入设备)接受声音输入 然后重定向声音到一个或多个槽(声卡,远程网络PulseAudio服务,或其他进程)
jack -- 是一个提供相比PulseAudio更专业的服务的体系,对专业音频软件来说是首选的专业音频应用服务,例如ardour、rezound和linuxsampler。
aRts -- KDE QT //不能和ESD同时用,缺乏维护至kde3.5后不再默认
ESD(esound) -- Enlightenment/GNOME GTK //不能和aRts同时用
库封装器(解决多驱动及服务器共存):
1. Simple DirectMedia Layer (SDL)--封装了OSS,aRts,ESD甚至Windows和Mac OSX的声音系统
2. libao -- 封装了OSS,aRts,ESD和一些UNIX特有的声音引擎,mplayer中用 -ao oss 可以选择封装器,足以证明其优秀

******* puleaudio爆音解决:
sudo gedit /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

#在第98行,即[Element PCM]章节的volume选项,改为 volume = ignore,保存退出

sudo pkill pulseaudio

start-pulseaudio-x11 //不能以root启动

alsamixer

#按左右键移动至PCM条,按上下键调节至74,ESC推出

*********** for 命令删除软件 *************
建一个sh文档内容如下:
for file in `rpm -qa|grep 软包名`
do
rpm -e --nodeps $file
done

然后chmod +x xxx.sh
./xxx.sh

************ mencoder 视频处理 ***************
分割:
mencoder 源.rm -ovc lavc -oac mp3lame -o 目标.avi -ss 开始时间 -endpos 剪辑需要时间段
合并:
mencoder -ovc copy -oac copy 源文件名1 源文件名2 -o 目标文件名

修复:
mencoder -idx input.avi -ovc copy -oac copy -o output.avi

4:3(640:480 1024:768 960:720 1440:1080)

16:9 (640:360 1024:576 1280:720 1920:1080)

2.35:1(640:272 1024:435 1692:720 2538:1080)

*****************************************************
例一:
mencoder 源.rm -ovc lavc -oac lavc -o 目标.avi

把 源.rm文件转换为目标.avi文件,其中,视频转换为mp4格式,音频转换为mp2格式。"-o basket.avi"定义转换成的文件名为"basket.avi","-ovc lavc"表示用默认的mp4格式编码图象,"-oac lavc"表示用默认的mp2格式编码声音。

例二:
mencoder 源.rm -ovc lavc -oac mp3lame -o 目标.avi

"oac mp3lame"表示用mp3格式编码声音。

例三:
mencoder 源.rm -ovc lavc -oac mp3lame -o 目标.avi -ss 5:00 -endpos 8:00

"-ss 5:00 -endpos 8:00"告诉mencoder仅仅转换从5分0秒到13分0秒的片段。

例四:
mencoder 源.avi -ovc copy -oac copy -o 目标.avi -ss 5:00 -endpos 8:00

"-ovc copy"表示不作视频转换,"-oac copy"表示不作音频转换。这个命令把basket.avi文件中的5分0秒到13分0秒的部分拷贝到 目标.avi文件中。
例五:
mencoder a1.avi a2.avi -ovc copy -oac copy -o asum.avi

这个命令把a1.avi和a2.avi文件合并为asum.avi文件。

例六:
mencoder 源.rm -ovc lavc -oac lavc -lavcopts vbitrate=100 -lavcopts abitrate=32 -o 目标.avi

限制目的文件的大小。目的文件中,一秒种图象占用100kbit空间,一秒钟声音占用32kbit空间。较小的目标文件大小,一般意味着较低的图象和声音的质量。

************************** 例 ***********************
# mencoder src.avi -o dst.avi -vf scale=320:240 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500

# mencoder src.avi -vf scale=1024:576 -ovc x264 -x264encopts bitrate=1536:pass=1:turbo=2:threads=4 -oac mp3lame -lameopts preset=256 -o dst.avi

# mencoder src.avi -vf scale=1024:576 -ovc x264 -x264encopts bitrate=1536:pass=3:threads=4 -oac mp3lame -lameopts preset=256 -o dst.avi

# mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500:threads=4 -vf scale=320:180 -ofps 18 -oac mp3lame -srate 22050 -lameopts abr:br=32:mode=3 a.mkv -o a.mp4

# mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500:threads=4 -vf scale=320:180 -ofps 18 -oac lavc -lavcopts acodec=libfaac:abitrate=32 -srate 22050 a.mkv -o a.mp4

# mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=3000:threads=4 -vf scale=1280:720 -oac mp3lame -srate 22050 src.avi -o dst.mp4

# mencoder -ovc xvid -xvidencopts fixed_quant=1:threads=4 -vf scale=720:400 -oac mp3lame -lameopts preset=256 src.rmvb -o dst.avi

*******************************************************
−ovc <编解码器>

−ovc copy 不编码, 只进行流复制

−ovc divx4 编码为DivX4/DivX5

−ovc rawrgb 编码为未压缩的RGB24

−ovc lavc 使用一个libavcodec编解码器编码

−oac <编解码器名>

-oac copy 不编码, 只进行流复制

-oac pcm 编码为未压缩的PCM

-oac mp3lame 编码为MP3(使用Lame)

mencoder -ovc help 可列出你机器上相应版本的MEncoder所支持的所有视频编码

********************************************************
音频编码器名称 描述
** mp3lame 通过LAME编码为VBR,ABR或CBR格式的MP3文件
-lameopts aq=7:vbr=2:q=6 ***aq=算法 q=质量 质量q=0-9,0最好
aq=7:vbr:br=64***br=编码64kbps ;vbr或br需指定一个。
-srate 32000 ***-srate采样率
连贯写法:-oac mp3lame -lameopts aq=7:vbr=2:q=1 -srate 32000
** lavc 利用libavcodec中的一个编码器
** faac FAAC AAC音频编码器
** toolame MPEG音频Layer 2编码器
** twolame 基于tooLAME的MPEG音频Layer 2编码器
** pcm 未压缩的PCM音频
** copy 不要重新编码,这是复制已压缩的各?

********************************************************

视频编码器 描述
** lavc 使用libavcodec中的一个视频编码器
-lavcopts codec=flv 或 -lavcopts vcodec=mpeg4:vbitrate=500 (mpeg4即Divx并指定比特率)
**xvid Xvid, MPEG-4高级简单格式(ASP)编码器
-vf harddup(动态码率) 或 -vf scale=320:240 (指定画面大小)
-xvidencopts fixed_quant=8 ***质量fixed_quant=0-31,0最好**一般不设为0免出错
连贯写法:-ovc xvid -xvidencopts fixed_quant=1 -vf harddup
** x264 x264, MPEG-4高级视频编码(AVC), AKA H.264编码器
pass=<1-3>启用2或3阶段编码模式。 推荐总是以2或3阶段编码模式编码,因为该模式使比特的分配更佳,从而提升整体质量。第一阶段可以使用平均比特率模式,或是使用恒定量化器模式。后续的阶段是ABR模式的,并且必须指定比特率。
turbo=<0-2>快速第一阶段模式。在二阶段或更多阶段编码的第一阶段中,可以通过禁用一些对于最终阶段输出质量影响甚小,甚至没有影响的选项,以提升运行速度。第1级可以最多使第一阶段的速度加快至2倍,而与完全质量的第一阶段模式相比,对于最 终阶段的全局PSNR没有任何改变。第2级可以最多使第一阶段的速度加快至4倍,而与完全质量的第一阶段模式相比,对于最终阶段的全局PSNR有大约+/-0.05dB的改变。
threads=4 最大可用线程数。最多可以使用的线程的数量为画面的高度除以16所得的值
** nuv nuppel视频,为一些实时程序所用
** raw 未压缩的视频?
** copy 不要重新编码,只是复制已压缩的各?
** frameno 用于三通道编码(不推荐)
vcodec=flv:acodec=mp3:vbitrate=400
**********************************************************

# src.avi 输入文件路径,是Mplayer能支持的格式即可
# -o dst.flv 输出路径
# -of lavf 输出格式 lavf表示libavcodec
# -oac mp3lame 输出音频编码方式,lame是最好的mp3编码器
# -lameopts abr:br=32:mode=3
abr 代表平均码率
cbr 固定码率
vbr=<0-4>可变比特率方式0-cbr,1-mt,2-rh(默认值),3-abr,4-mtrh
br=<0-1024>就是音频的码率,越高音质越好
mode=<0-3> 0-立体声,1-共享式立体声,2-双声道,3-单声道(默认方式:自动判断)
vol=<0-10>(音量,数值越大音量越大,不建议修改)
# -srate 22050 声音采样频率设置,也可以选11025,文件可以稍小一点
# -ovc lavc 输出视频编码 lavc就是libavcodec
# -lavcopts codec=flv flv格式压缩 vbitrate=150 视频码率
**缩放** -vf scale=350:-3 -sws 2 缩放视频,指定宽度为350,高度按比例来。质量由-sws选项控制,具体看手册
# -ofps 23 设定帧数,缩小帧数对节约文件大小效果不明显,且可能造成画面声音同步。建议不设置
# -srate 22050 声音采样频率设置,现为22K
**缩放** -vf scale=208:-3 宽度为208,高度自动调整保持比例;-vf scale=-3:176宽度自动调整保持比例,高度为176;如果想保持原来的大小可以不要这个参数内
# -ofps 12 帧速率设置,现为12fps
# -alang chi 选择中文发音,en为英语
# -oac mp3lame 音频采用mp3编码
# -lameopts mode=3:cbr:br=24单声道,音频码率为24kbps;-lameopts mode=0:cbr:br=24立体声,音频码率为24kbps; 还可设置音量,-lameopts mode=3:cbr:br=32:vol=1,设置范置为1~10,但不宜设得太高
# -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112采用高质DivX视频编码,视频码率为112kbps;
# -ovc xvid -xvidencopts bitrate=112采用XviD视频编码
# src.avi 原文件
# -o dst.avi 定义压缩为dst.avi
**#** -vf scale=320:240,调整视频尺寸到320x240;
#-vf scale=320:-3 宽度320,高度自适应(推荐使用)只要知道视频文件的宽度就可以
# -oac copy,指定音频编码器,copy是指不压缩,直接使用源文件里的音频。copy换成 mp3lame,即压缩成mp3。
# -ovc lavc,指定视频编码器,使用libavcodec编码器;
# -lavcopts vcodec=mpeg4:vbitrate=500,指定libavcodec的参数,vcodec=mpeg4指使用mpeg4压缩,就是DivX,vbitrate=500指500kbps的比特率。

*****************************************************

CODE:
mencoder src.avi -o dst.flv -of lavf -oac MP3lame -lameopts abr:br=32:mode=3 -ovc lavc i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2

CODE:
mencoder -srate 22050 -vf scale=208:-3 -ofps 12 -oac mp3lame -lameopts mode=3:cbr:br=24 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112 src.avi -o dst.avi

*********************************************************
音频:动态码率,质量6 (0-9,0最好),编码:MP3,采样:32000Hz,音频算法:7

视频:动态码率,质量 8(0-31,0最好),编码:xvid,尺寸:不改变大小
CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

*********************************************************
音频:动态码率,质量6 ,编码:MP3,采样:32000Hz,音频算法:7

视频:动态码率,质量 8 ,编码:xvid,尺寸:320:240

CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf scale=320:240,harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

*********************************************************音频:固定码率,编码:64kbps,采样:32000Hz ,音频算法:7

视频:动态码率,质量 4(高) ,编码:xvid

CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr:br=64 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=4 src.avi -o dst.avi

*********************************************************音频:动态码率,质量 4 (0-9,0最好),编码:MP3,采样:32000Hz,音频算法:7

视频:动态码率,质量 8(0-31,0最好),编码:xvid,尺寸:原尺寸

CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=4 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

****************** 提取音频 ********************
mencoder -ovc frameno -oac mp3lame -lameopts cbr:br=128 -of rawaudio -ss 1:30 -endpos 2:45 src.rmvb -o out.mp3

在实际操作中,用户需要更改的就是那两个时间参数值了!该命令参数的详细说明如下:

* -o out.mp3 输出的目标文件名称

* -ovc frameno 不处理视频编码

* -oac mp3lame 输出的音频编码格式为mp3

* -lameopts cbr:br=128 音频附件选项,cbr(常量比特率)编码格式,音频码流为128bps(对于mp3来说,128已经足够了)

* -of rawaudio 输出文件为原始音频流

* -ss 1:30 音频截取的起始时间(表示从影片的第1分30秒开始截取)

* -endpos 2:45 预截取音频的长度(表示预截取的音频长度是2分45秒,那么可以计算出其结束时间是4:15)

* src.rmvb 输入源文件

*********** SCIM 特殊字符输入 **************
前面加 i

当前日期: riqi date rq

当前时间:shijian time sj

当前星期:xingqi tian day xq

各种标点符号:bdfh fuhao

大写数字:daxieshuzi dxsz

货币符号:huobi

箭头:jiantou arrow

音调:yindiao shengdiao tone sd

数学符号:shuxue

拉丁扩展:latin landing

希腊字母:xila

字符表:table

块状图案:block kuai cfx

偏旁部首:pianpang radical pp

汉字结构描述符:jiegou struct hzjg

度量单位:danwei unit

中文拼音:pingyina

**************** YUM *******************
YUM简介:
yum,是Yellow dog Updater, Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开 发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相 关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
如果没有安装,先我们要到下面的地址下载与自己系统相对应的版本的 yum:
http://ayo.freshrpms.net/

yum应用
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.
# yum makecache 生成缓存
# yum check-update 检查有哪些可更新的rpm包
# yum update 更新所有的rpm包
# yum upgrade 大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级

yum groupinstall 安装指定软件组中的软件包
yum groupupdate 更新指定软件组中的软件包
yum groupremove 卸载指定软件组中的软件包
yum grouplist 查看系统中已经安装的和可用的软件组
yum list 列出资源库中所有可以安装或更新以及已经安装的rpm包
yum list 列出资源库中与正则表达式匹配的可以安装或更新以及已经安装的rpm包
yum list available 列出资源库中所有可以安装的rpm包
yum list available 列出资源库中与正则表达式匹配的所有可以安装的rpm包
yum list updates 列出资源库中所有可以更新的rpm包
yum list updates 列出资源库中与正则表达式匹配的所有可以更新的rpm包
yum list installed 列出资源库中所有已经安装的rpm包
yum list installed 列出资源库中与正则表达式匹配的所有已经安装的rpm包
yum list extras 列出已经安装的但是不包含在资源库中的rpm包
yum list extras 列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包
yum list recent 列出最近被添加到资源库中的软件包
yum search 检测所有可用的软件的名称、描述、概述和已列出的维护者,查找与正则表达式匹配的值
yum provides 检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值
yum clean headers 清除缓存中的rpm头文件
yum clean packages 清除缓存中rpm包文件
yum clean all 清除缓存中的rpm头文件和包文件
yum deplist 显示软件包的依赖信息
yum info 可用的参数与 yum list 的相同

# yum install xmms-mp3 安装rpm包,使xmms可以播放mp3
# yum install mplayer 安装mplayer,同时自动安装相关的软件
# yum localinstall 用YUM安装本地文件
# yum remove licq 删除licq包,同时删除与该包有倚赖性的包 注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便
# yum -y update 系统更新(更新所有可以升级的rpm包,包括kernel
# yum update kernel kernel-source 更新kernel和kernel source
# chkconfig crond on
# chkconfig yum on 每天定期执行系统更新 /etc/cron.daily 目录中放有yum.cron
# service yum start
# yum info installed搜索rpm包 列出已经安装的所有的rpm包的信息
# yum search mozilla 搜索匹配特定字符的rpm包 注:在rpm包名,包描述等中搜索
# yum provides realplayer 搜索有包含特定文件名的rpm包
# yum install yumex 另外,如果闲命令太麻烦,还可以安yum的图形界面版 然后再#yumex 就可以了。^_^

在使用yum升级系统之前,基於系统安全性考量,yum需要所有RPM套件的GPG认证密钥,认证升级RPM套件的完整性之后,才能安全地帮您自动升级系统,所以您必须先载入Fedora DVD安装光碟的RPM-GPG-KEY与RPM-GPG-KEY-fedora这两个GPG认证密钥档案,才能执行yum update自动升级所有RPM套件。
# yum check-update   (检查需要升级的套件)
# rpm --import RPM-GPG-KEY
# rpm --import RPM-GPG-KEY-fedora
# yum -y update    (自动升级所有RPM套件)

vi /etc/yum.conf 将其中的“keepcache=0” 改为“keepcache=1” 这样安装后安装包就不会被删除了

清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all全部清除。

# yum clean packages //清除缓存目录(/var/cache/yum)下的软件包
# yum clean headers //清除缓存目录(/var/cache/yum)下的 headers
# yum clean oldheaders //清除缓存目录(/var/cache/yum)下旧的 headers
# yum clean, yum clean all (= yum clean packages; yum clean oldheaders) //清除缓存目录(/var/cache/yum)下的软件包及旧的headers

加融合源:
rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

*********** 使用光盘源 ************
设置yum源,在/etc/yum.repos.d目录下添加一个文件,文件的内容如下:

  # vi dvd.repo

  [dvd]

  name=mydvd

  baseurl=file:///media/moutpiont

  enabled=1

  gpgcheck=0

*** 中标麒麟升级源地址 ftp://ftp.cs2c.com.cn/NS/

****************** 抓取搭建yum源(rsync) ********************
安装apache2:
yum install httpd
chkconfig --levels 235 httpd on //设置自动启动
/etc/init.d/httpd start //启动服务

抓取源:(只介绍主源和更新源,另rpmfusion融合源依此搭建)
一:安装建源软件及建立目录
yum install createrepo //安装建源工具
mkdir -p /var/www/html/yum/base/16/x86_64 //创建源目录
mkdir -p /var/www/html/yum/updates/16/x86_64 //同上
mount /dev/cdrom /mnt //挂载光盘
cd /mnt/Packages
cp -v * /var/www/html/yum/base/16/x86_64 //复制光盘/Packages下的rpm包到前面创建的源目录中
cd /
umount /mnt

二:同步源
rsync -avrt rsync://debian.ustc.edu.cn/fedora/linux/releases/16/Everything/x86_64/os/Packages/ /var/www/html/yum/base/16/x86_64 //同步主源

createrepo /var/www/html/yum/base/16/x86_64 //建立自建源
ls -l /var/www/html/yum/base/16/x86_64/repodata/

rsync -avrt rsync://debian.ustc.edu.cn/fedora/linux/updates/16/x86_64/ --exclude=debug/ /var/www/html/yum/updates/16/x86_64 //同步更新源,排除dbg的

crontab -e //设置自动同步更新源
23 4 */2 * * /usr/bin/rsync -avrt rsync://debian.ustc.edu.cn/fedora/linux/updates/16/x86_64/ --exclude=debug/ /var/www/html/yum/updates/8/x86_64

三:使用自建源
vi /etc/yum.conf //修改yum配置加入以下内容

[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
enabled=1

或:

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
installonly_limit=2

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=0


******搜狐的fedora源,放入/etc/yum.repos.d目录
***fedora-sohu.repo内容:
[fedora]
name=Fedora $releasever - $basearch - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/releases/$releasever/Everything/$basearch/os/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[fedora-debuginfo]
name=Fedora $releasever - $basearch - Debug - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/releases/$releasever/Everything/$basearch/debug/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[fedora-source]
name=Fedora $releasever - Source - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/releases/$releasever/Everything/source/SRPMS/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-source-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

***fedora-updates-sohu.repo内容:
[updates]
name=Fedora $releasever - $basearch - Updates - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/updates/$releasever/$basearch/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[updates-debuginfo]
name=Fedora $releasever - $basearch - Updates - Debug - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/updates/$releasever/$basearch/debug/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[updates-source]
name=Fedora $releasever - Updates Source - sohu.com
failovermethod=priority
baseurl=http://mirrors.sohu.com/fedora/updates/$releasever/SRPMS/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

*********** 光驱DMA_hdparm应用实例 ************
首先确定光驱设备为hdc然后用临时命令:
hdparm -d 1 /dev/hdc

Linux下的32位I/O和DMA默认是关闭的,可是现在电脑的硬盘不会那么落伍吧!Linux好是好,但如果用的是16位I/O的话,电脑的性能就无法得到充分发挥,你心里一定会觉得很冤!没关系,跟我来吧。

  要打开32位I/O和DMA,需要以Root身份进行设置。为了降低因出错而重启系统对文件系统的损害,最好以单用户模式进行。可以先用下面的命令检查硬件驱动器的I/O情况。

  1. #hdparm -t /dev/hda

  屏幕显示如下:

  /dev/hda:

  Timing buffered disk reads:64MB in 30.93 seconds=2.07MB/sec

  如果要显示当前I/O、DMA配置,命令分别如下:

  2. #hdparm -c /dev/hda (注:显示I/O配置命令)

  屏幕显示如下:

  /dev/hda:

  I/O support=0(16bit)

  3. # hdparm -d /dev/hda (注:显示DMA配置命令)

  屏幕显示如下:

  /dev/hda:

  using_dma=0(off)

  4. 在确定32位I/O和DMA是关闭的以后,用下面的命令将其打开:

  #hdparm -c 1 /dev/hda (注:打开32位I/O的命令)

  屏幕显示如下:

  /dev/hda:

  setting 32-bit I/O support flag to 1

  I/O support= 1 (default 16-bit)

  5. #hdparm -d 1 /dev/had (注:打开DMA的命令)

  屏幕显示如下:

  /dev/hda:

  setting using_dma to 0(on)

  hdaMA inabled

  using_dma=1 (on)

  然后执行下面的命令以使配置生效:

  6. #hdparm -k 1 /dev/hda

  屏幕显示如下:

  /dev/hda:

  setting keep_settings to 1(on)

  keepsettings=1(on)

  7. 然后,可以再用命令:hdparm -t /dev/hda 来看看效果:

  /dev/hda:

  Timing buffered disk reads:64MB in 14.53 seconds=4.40MB/sec

  怎么样,性能提高了一倍多!

  *****上面的方法,可以实现在一次开机中生效,而下一次开机又要重新设置。如果要实现每一次开机时都生效,应该在文件/etc/rc.d/rc.local的结尾加入以下命令:hdparm -c 1 -d 1 -k 1 /dev/hda 它可以使设置在每次重新启动系统时生效*****

**************** 火狐鼠标 缓存位置 ***************
firefox:路径新建字符串 browser.cache.disk.parent_directory 路径值自设 如放入tmpfs中 browser.cache.disk.parent_directory=/dev/shm/firefox
Chrome:/opt/google/chrome/google-chrome --disk-cache-dir="/dev/shm/chrome/"
chromium:/usr/bin/chromium-browser --disk-cache-dir=DIR

鼠标滚动
mousewheel.withnokey.sysnumlines设为false(单击右键,选择切换)
更改 mousewheel.withnokey.numlines的数值(单击右键,选择修改),此数值就是滚动一次鼠标滚动的行

代理插件 phproxy = phzilla

地址栏下拉 browser.urlbar.maxRichResults 数值是需要保存的值 设为-1即可关闭此功能

中文菜单about:config 输入locale找到general.useragent.locale 改字符串为zh-CN
同时下载http://stage.mozilla.org/pub/mozilla.org/firefox/releases/ 相应版本的中文xpi安装

****************** 内核升级 **********************
验证内核签名
首先从pgp的服务器获取签名公匙, linux内核包的公匙编号是0x517D0F0E;0x1E1A8782;0x514C5279. 再利用sign文件来验证.bz2压缩包的签名. 如果输出中有类似gpg: Good signature from "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>" 的内容, 说明该包是有效的. (注: GPG签名只是保证镜像网站提供的压缩包和kernel.org所提供的是相同的, 如果在kernel.org下载, 不需要验证签名.)
$gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
$gpg --verify linux-2.6.35.9.tar.bz2.sign linux-2.6.35.9.tar.bz2
或:
$ wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.5.tar.xz
$ wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.5.tar.sign
$ unxz linux-3.1.5.tar.xz
$ gpg --verify linux-3.1.5.tar.sign
或:
$ xz -cd linux-3.1.5.tar.xz | gpg --verify linux-3.1.5.tar.sign -

1. 编译内核需要root权限
首先要安装必要的包。
(ncurses-dev 编译之前需要安装 RF6.3已自带)
libncurses5-dev(menuconfig需要的)和essential
sudo apt-get install build-essential kernel-package libncurses5-dev
sudo apt-get install make
sudo apt-get install gcc
另外,查看系统是否有这样的两个命令
mkinitramfs mkisofs deb系在initramfs-tools中
***综合起来 sudo apt-get install build-essential libncurses5-dev kernel-package make gcc mkinitramfs mkisofs
/boot/vmlinuz- : 用于启动的压缩内核镜像, 它也就是/arch//boot中的压缩镜像.
/boot/system.map- : 存储内核符号地址.
/boot/initrd.img- : 初始化RAM硬盘时, 用来存储挂载根文件系统所需的模块.
关于补丁:得到patch-. 将它放到解压后的内核目录树的父目录中(也就是补丁和内核目录在同一目录).
方法一:cd到内核目录树中运行:
# patch -p1 <../patch-
方法二:
cd linux-2.6.18
gzip -cd ../patch-2.6.17.gz | patch -p1 --dry-run
gzip -cd ../patch-2.6.17.gz | patch -p1
或:
cd linux-2.6.18
bzip2 -cd ../patch-2.6.17.bz2 | patch -p1 --dry-run
bzip2 -cd ../patch-2.6.17.bz2 | patch -p1
*******************************************************************
2. 内核拷贝到/usr/src/下
# cp linux-2.6.35.4.tar.bz2 /usr/src
3. 解压缩下载的内核源程序
# tar xjf linux-2.6.35.4.tar.bz2
4. 建立符号链接
# cd /usr/src
# ln -s linux-2.6.35.4 linux
5. 删除所有配置文件和*.o文件
# cd linux (已链接到linux-2.6.35.4)
# make mrproper 删除包括.config在内的生成的目标文件,用于导入原.config文件前执行,非首次编译时用
6. 配置内核命令
# make config 基于文本最为传统
# make allnoconfig 除必须的选项外, 其它选项一律不选. (常用于嵌入式系统).
# make menuconfig 基于文本选单 可以直接在menuconfig中加载已有的配置文件, 不要将它改名为.config. 否则完成配置, 退出menuconfig时会提示你运行 make mrproper.
Load an Alternate Configuration File 加载一个配置文件
save an Alternate configuration file 保存备用配置文件
# make defconfig 按默认选项对内核进行配置
# make localmodconfig 据说会lsmod自动生成适合本机的配置
# make localyesconfig:与localmodconfig差不多,但是不会编译成模块(直接编译进内核),也就不依赖于initrd.img
# 如果设定了某些选项是编译成模块的话(默认情况下,如果是localmodconfig会编译模块,而localyesconfig则没有,具体得到menuconfig里去看看,有没有项目前面标的是M的以及那个允许模块编译选项是否开启)
# make xconfig 或 make gconfig 基于图形界面(英文太多看不懂使用默认吧 记得按保存键)
xconfig基于X11, 使用qt库, 在Ubuntu中先安装qt库:
# apt-get install libqt4-headers libqt4-mt-dev
# make oldconfig 基于原来内核小修改
Y- 将该功能编译进内核
N- 不讲该功能编译进内核
M- 将该功能编译成在需要时动态插入到内核中的模块
以下是第一次升级内核,使用make menuconfig命令,根据需求进行不同的选择
make menuconfig //出现图形配置界面,可根据自己需求选择不同的选项(看不懂移动到最下面选倒数第二项退出并保存)
7. 设定依赖关系
cd /usr/src/linux-2.6.xx
make dep
8. make clean 删除生成的目标文件, 往往用它来实现对驱动的重新编译
9. 编译内核,默认没选第1个
1)make bzImage (避免编译出来的内核庞大)
2)make zImage (编译时产生的内核大)
10. make modules 编译内核模块
注:9和10可合并为make
11. 安装编译的模块
make modules_install
12. 创建模块的链接
depmod -a
13. 创建启动压缩内核镜像
cp System.map /boot/System.map-2.6.35.4 (此步可能无效,/boot 中已有System.map-2.6.35.4)
cp arch/i386/boot/bzImage /boot/vmlinuxz (X64的在arch/x86_64/boot)
14. 创建初始化ram镜像
cd /boot/
new-kernel-pkg --mkinitrd --depmod --install 2.6.35.4 必须与/lib/modules/目录下相应的文件夹同名
ubuntu: mkinitramfs -k -o /boot/initrd-2.6.3.4.img 2.6.35 这里两个版本号不可少
15. make install (安装内核)
16. make headers_install (安装内核头文件)
17. 修改grub
vi /boot/grub/menu.lst
找到 对应的以下4行,并进行修改如下
title Red Flag Desktop (2.6.31-5_1)[本机已通过YUM升级一次] //下面的也这样修改即可,根据上面产生的文件名对应
root(hd0.0)kernel /boot/vmlinuxz ro root=LABEL=/ rhgb quiet //查看对应/boot目录下的对应文件名vmlinuxz
initrd /boot/initrd-2.6.35.4.img //initrd-2.6.35.4.img 可以查看 /boot目录下的对应文件名initrd-2.6.35.4.img
18. init6 重启
开机选项多出了2.6.35.4内核选项,选择进入Linux

升级注意事项:
1 注意阅读联机文档,弄清楚选项的每个正确航意后再进行选择
2 用不到的驱动要尽可能的删除
3 对于属于“evelopment”"experimental" "debugging"选项 一般选择“N”这样生成的内核将更加稳定
4 对于内核配置的局部修改可以使用“make oldconfig”这样速度会快一些
5 内核的配置过程会发现新增或改动功能
6 ALSA是更为改进的声音系统,对于拥有好的声卡和好的音级用户必须安

*****************************************************

整理的步骤:
1 tar xjf XXXX.tar.bz2 (解压这个不多说了只是注意你下载的内核压缩属性以修改解压参数)
2 ln -s xxxx xxx (此后操作在xxx里进行)
3 make mrproper (删除所有配置文件和*.o文件,非首次编译时才用)
4 make xconfig 或 make gconfig (编译前的配置)
5 make dep (设定依赖关系)
6 make clean (确定源代码没有.o文件)
7 make (编译源码 非常耗时可以出去打酱油了)
或7.1=make bzImage
7.2=make modules
8 make modules_install (安装编译好的模块)
9 depmod -a (创建模块的连接)
10 cp System.map /boot/System.map-xxxx (xxxx为版本号)
11 cp arch/i386/boot/bzImage /boot/vmlinuxz (X64的在arch/x86_64/boot 安装启动压缩内核镜像)
12 cd /boot/ (此时改变工作路径到boot)
13 new-kernel-pkg --mkinitrd --depmod --install 2.6.35.4 必须与/lib/modules/目录下相应的新内核文件夹同名(创建新初始化ram镜像文件)
ubuntu: mkinitramfs -k -o /boot/initrd-2.6.35.4.img 2.6.35 这里两个版本号不可少
14 make install (回到原make目录即前面的XXX目录下再次安装加入vmlinux-2.6.35.4并自动生成启动菜单)
15 make headers_install (安装内核头文件)
16 reboot (你可以使用新内核的系统了)

****************************************************
Linux 2.6.32 开始引入了一个 make localmodconfig 用于简化 kernel 的配置。

make localmodconfig 会执行 lsmod 命令查看当前系统中加载了哪些模块 (Modules), 并最后将原来的 .config 中不需要的模块去掉,仅保留前面 lsmod 出来的这些模块,从而简化了内核的配置过程。

这样做确实方便了很多,但是也有个缺点:该方法仅能使编译出的内核支持当前内核已经加载的模块。
因为该方法使用的是 lsmod 的结果,如果有的模块当前没有加载,那么就不会编到新的内核中。
例如,我有的时候需要制作 squashfs , 因此在当前的内核中,将 squashfs 编译成了模块。 当使用 make localmodconfig 来配置 Kernel 的时候,如果当前系统中没有加载这个模块, 那么新编出来的内核中就不会将 squashfs 编译成模块,在新的内核中就没办法使用这个模块了。

所以建议在使用 make localmodconfig 之前,首先折腾一下系统,插个优盘,开开摄像头之类, 以便让内核加载上平时使用时候所需要的模块;执行 make localmodconfig 之后,再执行一下 make menuconfig 来手动检查一下, 是否还有其他模块需要手动选择。

这样,内核的编译可以分成如下几个步骤来进行:

1. 下载解压内核源码:
http://www.kernel.org,下载之后解压到自己的目录,例如 /usr/src/linux-2.6.35/
2. 找一个现成的 kconfig 文件作为模版:
可以从自己的 Linux 发行版中拷贝一个出来,拷贝到 /usr/src/linux-2.6.35/中, 并重命名为.config 。
3. 折腾一下系统,让它将合适的 module 都加载上。
4. 执行 make localmodconfig 精减不需要的模块。
5. 执行 make menuconfig ,检查一下是否有自己需要的模块没有选上。
6. make dep
7. make clean
8. 执行 make 进行编译
或8.1=make bzImage
8.2=make modules
9. 执行 make modules_install 安装模块
10.depmod -a 设置模块的连接
11 cp System.map /boot/System.map-xxxx (xxxx为版本号)
12 cp arch/i386/boot/bzImage /boot/vmlinuxz (X64的在arch/x86_64/boot 创建启动压缩内核镜像)
13 新初始化ram映像文件创建
cd /boot/
new-kernel-pkg --mkinitrd --depmod --install 2.6.35.4 必须与/lib/modules/目录下相应的文件夹同名
ubuntu: mkinitramfs -k -o /boot/initrd-2.6.35.4.img 2.6.35 这里两个版本号不可少
14 执行 make install 安装内核
15 make headers_install (安装内核头文件)
16. 编辑 /boot/grub/grub.conf 或者 /boot/grub/menu.lst 添加新的引导菜单。
17. 重启并以新的内核启动。

******************* 生成deb内核安装包(可重复使用不需再编译) *****************
先安装一些依赖的包(有可能被新的包代替):
# apt-get install kernel-package libncurses5-dev fakeroot
# apt-get install build-essential udev
# apt-get install libhtml-template-perl libparse-recdescent-perl
# apt-get install yaird
普通用户要用fakeroot来提权

执行下面命令来构建内核:
make localmodconfig 或 #cp /boot/config-2.xxamd64 /usr/src/linux-2.xx/.config 后#make menuconfig 选倒数第二项载入.config后 再选择需要的新功能
1.# make-kpkg clean 必须执行
2.# fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
在--append-to-version= 后面你可以写上任何字符串来区别内核版本, 但是必须以” - “符号开始而且后面不包括任何空格.
或者
#make-kpkg kernel_image 比较简单保险的
例:#make-kpkg --initrd --revision sexy2010 --append-to-version -generic kernel_image kernel_headers
这里sexy2010 & -generic 可以自定 -generic会影响到内核显示建议选个好看的 应同时生成头文件以方便安装闭源驱动
# sudo CONCURRENCY_LEVEL=4 make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers //多线程编译
#dpkg -i package.deb
这时reboot应该就可以了 如果不行才继续下面
3.# update-grub2
**** ubuntu不自动生成initrd.img 则 cd 到/boot #mkinitrd -o initrd.img-2.6.38 /lib/modules/2.6.38 (rpm系)
或# mkinitramfs -k -o /boot/initrd-2.6.38.img 2.6.38 (deb系)
****不论源码安装还是编译deb安装记住查看grub.cfg配置正确否

********************************** 注解 *************************************
注(官方较陈旧):make-kpkg kernel_image实际上执行了make oldconfig和make dep。如果没使用initrd就不要使用--initrd选项。
如果想加载pcmcia-cs模块或没有pcmcia,应该在make menuconfig后选“General setup -->”进入“PCMCIA/CardBus support -->”,配置“< > PCMCIA/CardBus support”选项(例如,取消复选项)。
对于SMP机器,参照kernel-pkg.conf(5)的说明设置CONCURRENCY_LEVEL。
注(新):
1、--initrd选项会让make-kpkg自动帮我们生成initramfs;

2、--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;

3、--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如本例中,内核更新完成之后,用“uname -r”查看会得到“2.6.38-generic”;

4、kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。

如果我们用普通用户来执行make-kpkg,需要加上fakeroot运行。

fakeroot make-kpkg --initrd --revision sexy2010 --append-to-version -generic kernel_image

编译过程执行完毕之后,会在上层目录里生成一个deb安装包,本例中生成的安装包的文件名是“linux-image-2.6.38-generic_sexy2010_amd64.deb”。

之后我们就可以用dpkg命令或者在文件浏览器中双击安装了,安装完毕之后,直接重启就可以选择进入新的内核。

使用make-kpkg来编译内核,还有其他好处。因为我们是通过包管理器来安装新的内核,当不再需要这个内核时,就可以简单的通过dpkg命令、新立得软件包管理器或者Ubuntu软件中心来完全卸载,而不需要一个个手动删除修改。

*************** 删除特殊字符文件 *******************
首先查出文件节点号 ls -i

1 删除破折号“-”开头的文件

比如说当前文件夹下有-foo文件

可以使用下列命令

rm -- -foo

rm ./-foo

rm "-foo"

2 删除“-”“/”等其他特殊符号前缀文件的最普遍方法

首先ls -il 查看文件的inode

然后运行,其中inode替换为相应文件的inode即可

find . -inum [inode] -exec rm -i {} \;

********** 模块加载卸载 **********
查看正在使用的网络模块 ethtool -i eth0
ethtool ethX //查询ethX网口基本设置
ethtool -h //显示ethtool的命令帮助(help)
ethtool -i ethX //查询ethX网口的相关信息
ethtool -d ethX //查询ethX网口注册性信息
ethtool -r ethX //重置ethX网口到自适应模式
ethtool -S ethX //查询ethX网口收发包统计
ethtool -s ethX [speed 10|100|1000] //设置网口速率10/100/1000M,用ethtool来禁用使用e1000网卡驱动模块的网卡自适应特性时,必须同时指定链路速度和全双工工作模式,如:ethtool -s ethx autoneg off speed 1000 duplex full
[duplex half|full] //设置网口半/全双工
[autoneg on|off] //设置网口是否自协商
[port tp|aui|bnc|mii] //设置网口类型

移除模块 rmmod modname
加载模块 insmod modname
载入模块或模块组 modprobe modname (可根据depmod产生的依赖关系决定载入的模块,若发生错误会自动卸载)
$ sudo dhclient //获取IP
$ sudo dhclient -r //释放IP
******************** rp-pppoe安装和配置 *******************
Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe (ARCH是,deb系配置/etc/network/interfaces)
这个软件包。从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下载
RedHat 62平台下的rp-pppoe的二进制软件包,而且可以下载源代码软件包。
1.二进制软件包的安装:
A.下载二进制软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2-1.i386.rpm
B.进行安装
以root执行:
#rpm -Uvh rp-pppoe-3.2-1.i386.rpm
2.从源代码进行安装:
从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A.下载源代码软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz
B.解压缩
#tar xvfz rp-pppoe-3.2.tar.gz
#cd rp-pppoe-3.2
C.进行编译和安装
运行脚本
#./go
将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、配置PPPOE客户端软件
安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时
使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用
adsl-setup这个工具进行配置:
#/usr/sbin/adsl-setup
当出现
>>> Enter your PPPoE user name :
输入ADSL帐号的用户名
当出现
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0):
输入 eth0 ,这是ADSL相连的网卡的名字
当出现
>>> Enter the demand value (default no):
输入 no
当出现
>>> Enter the DNS information here:
输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
当出现
>>> Please enter your PPPoE password:
输入ADSL帐号的密码
当出现
>>> Choose a type of firewall (0-2):
输入 0 ,不使用防火墙
当出现
>>> Accept these settings and adjust configuration files (y/n)?
如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。
四、启动PPPOE客户端软件
使用命令
/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现
Connected;
如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信

/usr/sbin/adsl-stop 关闭和ISP的连接
/usr/sbin/adsl-status 查看当前连接的状态
如果想在Linux系统启动时自动启动ADSL连接,输入以下命令
#chkconfig --add adsl
将在当前的运行级下加入ADSL的自启动脚本
五、测试
当连接成功后,使用命令
#ifconfig -a
在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。
使用命令
#netstat -nr
查看路由表信息,这时的默认路由应该是上面获得的Ip地址。
(1) 显示网络接口状态信息。
#netstat -i
(2) 显示所有监控中的服务器的Socket和正使用Socket的程序信息。
#netstat -lpe
(3) 显示内核路由表信息。 结果同route
#netstat -r
#netstat -nr
(4) 显示TCP/UDP传输协议的连接状态。
#netstat -t
#netstat -u
如果没有默认路由,我们可以手动增加:
#route add default gw 上面获得的IP地址
使用命令
#nslookup www.sina.com.cn
如果解析出新浪的Ip,说明已经从拨号中正确获得了DNS服务器
最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
********************** DEB系配置网络 **********************
ubuntu里面有两套管理网络连接的方案(不共存但/etc/network/interfaces共享):
1、pppoeconf
/etc/network/interfaces(/etc/init.d/networking)
/etc/NetworkManager/nm-system-settings.conf 中managed=false时生效
2、Network-Manager
/etc/NetworkManager/nm-system-settings.conf 中managed=false时关闭自己,转而使用pppoeconf,即若要使用 Network-Manager 则应把 managed 设置为 true。
使用network-manager有线连接则sudo nano /etc/network/interfaces 只保留循环回路字段并设置DNS为自己的。
一: 如果用的是rp-pppoe,那么应该在/etc/ppp/pppoe.conf文件里 这里包含一些参数设置和用户名,而密码则在同一目录下的chap-secrets或pap-secrets文件里面保存着。
安装 apt-get install pppoe pppoeconf  ***使用命令pppoeconf,进行pppoe的设置.
***在配置中,系统提示我们了几个重要的命令用于连接、断开和查看。P代表pppoe on=开 off=断 
pon dsl-provider -- 启动建立的pppoe连接,连接名称为 dsl-provider。 
poff (-a)--关闭连接,如使用a参数,表示关闭当前所有连接。 
plog -- 查看pppoe连接的状态。 
Debian(pppoeconf的adsl配置):
1、安装拨号软件
# apt-get install pppoeconf
2、运行配置命令,进入配置向导
# pppoeconf
3、进入“ALL DEVICDS FOUND?”画面,此画面列举出了本机安装的所有网卡,并询问你是否列举完整?我的电脑只有一个网卡“eth0”,选择“YES"。接下来系统会对网卡进行扫描,扫描完成后进入下一步。
4、进入“OKAY TO MODIFY”画面,确认将要修改/etc/ppp/peers/dsl-provider文件,选择“YES”。
5、在“POPULAR OPTIONS”画面中,询问你是否使用比较常用的拨号设置,这里一定选择“NO”,否则就拨不上去。
6、进入“ENTER USERNAME”画面,输入ADSL用户名。
7、进入“ENTER PASSWORD”画面,输入ADSL密码。
8、进入“USE PEER DNS”画面,选择“YES”,这一步是自动使用ISP提供的DNS地址,会修改/etc/resolv.conf文件。当然也可以自己修改这个文件使用自己的DNS。
9、进入“LIMITED MSS PROBLEM”画面,画面上的提示信息说“如果你不明白就选择‘YES’”,那就选择“YES”。
10、进入“DONE”画面,询问是否在系统启动时自动拨号连接,回答“YES”。
11、进入“ESTABLISH A CONNECTION”画面,询问是否现在就进行连接,选择“YES”。
12、完成!enjoy it!
13、相关命令:
(1)手工拨号 # pon /etc/ppp/peers/dsl-provider
(2)查看日志 # plog
(3)断开连接 # poff
二: 手工配置
1.网卡启停+自动获得IP
#ifconfig eth0 down 或 ifdown eth0
#ifconfig eth0 up 或 ifup eth0
#dhclient
2.修改/etc/network/interfaces
如果是一个 IPv6 的设备将须将 “inet” 用 “inet6” 代替
使用ADSL(pppoeconf后会自动生成,除非不能使用一般不写也可)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf

auto dsl-provider
iface dsl-provider inet ppp
provider dsl-provider

使用DHCP
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp    //配置使用DHCP自动获取IP
gateway 192.168.0.1 //设置网关
设置静态IP和网关:
auto lo
iface lo inet loopback
加如下内容:
auto eth0
iface eth0 inet static             //配置eth0使用默认的静态地址
address 192.168.0.158   //设置eth0的IP地址
netmask 255.255.255.0     //配置eth0的子网掩码
network 192.168.0.0 //配置网络段
broadcast 192.168.0.255 //配置广播域
gateway 192.168.0.1     //配置当前主机的默认网关
配置后需重启网卡或服务以生效
3.重启网络服务 (读取并载入/etc/network/interfaces实现网络重启)
#/etc/init.d/networking restart
4.临时指定IP和子网掩码及网关
#ifconfig eth0 192.168.0.158 broadcast 192.168.0.255 netmask 255.255.255.0 (ip,广播和掩码)
#route del default gw (必须先删除原网关再指定新网关以免寻址错误)
#route //查看
#route add default gw 192.168.0.1
#route //查看
5.指定DNS服务器
修改/etc/resovl.conf 使用nameserver指定最多三个,使用nslookup查询网址的真实地址,或反查网址。
#echo “nameserver 8.8.8.8” > /etc/resolv.conf   //指定的google服务器
#nslookup //查询默认服务器
*** 使用路由时由于使用路由提供的DNS,即跳转DNS,则设定DNS为路由IP;若自己指定了DNS,此时DNS会自动指向路由IP,变为跳转(或用chattr +i /etc/resolv.conf锁定自己的DNS)。
6.主机名
/etc/hostsname //本机主机名,写入即可。hostname命令可以临时更改。
/etc/hosts //把本机主机名映射到IP中,写入即可。
7. arp (内网可用)
可以使用arp命令来配置并查看arp缓存。例如:
(1) 查看arp缓存。
#arp
(2) 添加一个IP地址和MAC地址的对应记录。
#arp -s 192.168.33.15 00:60:08:27:CE:B2
(3) 删除一个IP地址和MAC地址的对应缓存记录。
#arp -d 192.168.33.15
8.MAC地址:
临时修改:
#/sbin/ifconfig eth0 down
#/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
#/sbin/ifconfig eht0 up
永久:
直接编辑 /etc/network/interfaces 文件
在对应的网卡名后面加上 hwaddress ether XX:XX:XX:XX

********** IPV6 ***********
IPv6 地址格式
环回地址 0:0:0:0:0:0:0:1 等价于::1
FE00 是本地地址 主要用于本地 本网段 通行
2000::1全局地址 即公网唯一地址
IPv6 地址大小为 128 位,默认前64位使网络部分,后64位是本机部分
首选的 IPv6 地址表示为:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个 x 是代表一个 4 位的十六进制数字。IPv6 地址范围从 0000:0000:0000:0000:0000:0000:0000:0000 至 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。
IPV6通常写作8组,每组为四个十六进制数的形式。例如:
  2001:0db8:85a3:08d3:1319:8a2e:0370:7685
IPv4的地址是由32位二进制码组成。格式为xxx.xxx.xxx.xxx,其中的x代表的是一个三位的二进制数字。
除此首选的格式之外,IPv6 地址还可以其它两种短格式指定:
省略前导零
通过省略前导零指定 IPv6 地址。例如,IPv6 地址 1050:0000:0000:0000:0005:0600:300c:326b 可写为 1050:0:0:0:5:600:300c:326b。
双冒号
通过使用双冒号(::)代替一系列零来指定 IPv6 地址。例如,IPv6 地址 ff06:0:0:0:0:0:0:c3 可写为 ff06::c3。一个 IP 地址中只可使用一次双冒号。
IPv6 地址的另一种可选格式组合了冒号与带点表示法,因此可将 IPv4 地址嵌入到 IPv6 地址中。对最左边 96 个位指定十六进制值,对最右边 32 个位指定十进制值,来指示嵌入的 IPv4 地址。在混合的网络环境中工作时,此格式确保 IPv6 节点和 IPv4 节点之间的兼容性。
| 80bits |16 | 32bits |
0000....................0000 | FFFF | IPv4 address | //IPv4映像地址
0000....................0000 | 0000 | IPv4 address | //IPv4兼容地址
这两种类型的 IPv6 地址使用此可选格式:
通过 IPv4 映射的 IPv6 地址
此类型的地址用于将 IPv4 节点表示为 IPv6 地址。它允许 IPv6 应用程序直接与 IPv4 应用程序通信。例如,0:0:0:0:0:ffff:192.1.56.10 和 ::ffff:192.1.56.10/96(短格式)。
兼容 IPv4 的 IPv6 地址
此类型的地址用于隧道传送。它允许 IPv6 节点通过 IPv4 基础结构通信。例如,0:0:0:0:0:0:192.1.56.10 和 ::192.1.56.10/96(短格式)。
LINUX ipv6协议
  modprobe ipv6
  (2)IPv6 地址设置
  ifconfig eth0 inet6 add 2001:da8:207::9402
  (3) IPv6 默认网关设置 (add增加,del删除)
  route -A inet6 add ::/0 gw 2001:da8:207::9401
# /sbin/route -A inet6 //列出IPV6路由
# /sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1 //IPV6路由设置,当前所有的(全局地址global addresses 2000::/3)通过闸道3ffe:ffff:0:f101::1
  (4) 网络测试命令
  ping6 、 traceroute6
debian:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet6 static
address 2001:da8:2:68d::2
netmask 64
up route -A inet6 add default gw 2001:da8:2:68d::1 dev $IFACE
iface eth0 inet static
address 192.168.1.6
netmask 255.255.255.0
up route add default gw 192.168.1.1 dev $IFACE
将DNS设置成202.120.2.101,以支持IPv6地址查询 //由于目前IPV6支持较少的原因

*********** linux双网卡双网关不同IP段的设置 ************
1. vi /etc/iproute2/rt_tables,增加网通和电信两个路由表
  251 tel   电信路由表
  252 cnc 网通路由表
2. 给网卡绑定两个地址用于电信和网通两个线路
  ip addr add 192.168.0.2/24 dev eth0
  ip addr add 10.0.0.2/24 dev eth1
3.分别设置电信和网通的路由表
  电信路由表:
  #确保找到本地子网
  ip route add 192.168.0.0/24 via 192.168.0.2 dev eth0 table tel
  #内部回环网络
  ip route add 127.0.0.0/8 dev lo table tel
  #192.168.0.1为电信网络默认网关地址
  ip route add default via 192.168.0.1 dev eth0 table tel
  网通线路路由表:
  #确保找到本地子网
  ip route add 10.0.0.0/24 via 10.0.0.2 dev eth1 table cnc
  #内部回环网络
  ip route add 127.0.0.0/8 dev lo table cnc
  #10.0.0.1是网通的默认网关
  ip route add default via 10.0.0.1 dev eth1 table cnc
4. 电信和网通各有自己的路由表,制定策略,让192.168.0.2的回应数据包走电信的路由表路由,10.0.0.2的回应数据包走网通的路由表路由
  ip rule add from 192.168.0.1 table tel
  ip rule add from 10.0.0.1 table cnc
  最后考虑特殊情况的网管需要批量添加IP到路由才能过,简化一下
  ip rule del from 192.168.0.0/24 table tel
  ip rule del from 10.0.0.0/24 table cnc

********************* Adsl 断网的解决方法 **********************
一. 修改配置文件
gedit /etc/ppp/options
lcp-echo-interval 30
lcp-echo-failure 4
这表示系统 30 秒会向 ADSL 服务器发出 echo request 以确认连线是否正常。如果 ADSL 服务器 120 秒 (30 秒 x 4) 都没有回应,系统会假定连线有问题,自动断开。您可以把 lcp-echo-failure 加大至 9999 #如果不行请修改/etc/ppp/peers/dsl-provider里面的配置包搞定
persist 持续连接 搜索: /etc/ppp/options和/etc/ppp/peers/provider 或/etc/ppp/peers/dsl-provider(这个可能已被替代)取消persist前面的#
二. 利用ping来判断并重启pppoe拨号的脚本
1. 首先写个脚本:
sudo gedit /usr/bin/repppoe
sudo chown `logname` /usr/bin/repppoe 内容如下:
##!/bin/bash
if ping -c 3 www.baidu.com >>/dev/null 2>&1 then
exit 0
else
echo “rootpasswd” | sudo -S /etc/init.d/networking restart
echo “network be restarted” >>/home/kk/pppoe.log
echo `date` >>/home/kk/pppoe.log
fi
exit 0
2. crontab -e
*:10 * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&1
*/5 * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&1
0,5,10,15,..... * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&14
三. 利用判断/var/run/ppp0.pid文件是否存在的脚本(该文件包含pppd进程的pid)
/usr/bin/pon /usr/bin/poff 每个发行版的拨号程序需自行调整
1. sudo gedit /usr/bin/repppoe
sudo chown `logname` /usr/bin/repppoe
2. 加入以下内容
#!/bin/bash
if [ -e /var/run/ppp0.pid ]; then
exit 0
else
echo “rootpasswd” | sudo -S /usr/bin/pon dsl-provider echo “pppoe be restarted” >>/home/kk/pppoe.log echo `date` >>/home/kk/pppoe.log
fi
exit 0
3. crontab -e
*:10 * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&1
*/5 * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&1
0,5,10,15,..... * * * * source ~/.bashrc && cd /usr/bin/ && bash repppoe >>/dev/null 2>&1
************* samba共享设置 ***************
# apt-get install samba system-config-samba
系统会问你,请参考这些答案:
用debconf配置samba吗?Yes。
输入工作组名,或者域名:workgroup。 使用口令加密?Yes。
以什么方式运行samba?我们选择默认的daemons方式,让他在后台监听。 创建samba口令库?Yes。共享目录需要777的权限。
1. 检查配置:#testparm
2. # gedit /etc/samba/smb.conf
记住备份原sam.conf
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
找到[global]把 workgroup = MSHOME 改成 :(注意,这里的WORKGROUP是共享中的工作组名称)
workgroup = WORKGROUP
log file = /var/log/samba/log.%m
搜寻这一行文字 代码:
; security = user
用下面这几行取代 :
security = user
username map = /etc/samba/smbusers
添加一个名为Share的类(名字可自定义),将下列几行新增到文件的最后面:
[Share]
comment = Shared Folder with username and password
path = /home/linux主机中已存在的用户名/共享目录
public = yes
writable = yes
valid users = 共享用户名 //linux主机中已存在的用户
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
available = yes
browseable = yes

[tmp] //再增加一个名为tmp的类,如果已经可以用了,这个类别的可以不写
comment = Temporary file space
path = /home/kk/samba (自定共享目录)
read only = no
public = yes
保存以上内容为smb.conf

3. 创建能够访问本机的用户
# sudo useradd kk //linux主机中已存在的用户可以不加
# touch /etc/samba/smbpasswd
然后,使用smbpasswd命令,添加samba用户: # smbpasswd -a kk 此处为要访问Linux主机的windows主机用户名 New SMB password:
Retype new SMB password:
$ sudo gedit /etc/samba/smbusers
在新建立的文件内加入下面这一行并保存
kk = “network username” //如果已经可用,此步可省
4.重启生效 # /etc/init.d/samba restart
ubuntu: #/etc/init.d/smbd restart
ps:中文乱码的解决:
1.如果linux locale是zh_CN.UTF-8,在smb.conf中添加:
display charset = UTF-8
unix charset = UTF-8
dos charset = UTF-8
2.如果locale是zh_CN.GBK或zh_CN.gb2312,在smb.conf中添加:
display charset = cp936
unix charset = cp936
dos charset = cp936
端口设置:smbd所占用的端口是139和445

***************** nfs *****************
Debian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:一. 安装:
$ sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
这样,宿主机就相当于NFS Server。
同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。如果是Debian/Ubuntu系统,则需要安装nfs-common。
$ sudo apt-get install nfs-commmon
nfs-common和nfs-kernel-server都依赖于portmap

二. 配置NFS
2.1. 配置portmap
$ sudo gedit /etc/default/portmap
方法1: 编辑/etc/default/portmap 取消最后一行的注释并改为OPTIONS=""
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.
/etc/hosts.deny 禁止所有用户对portmap的访问.
/etc/hosts.allow 允许某些用户对portmap的访问.
2.2. 配置/etc/hosts.deny
$ sudo gedit /etc/hosts.deny
(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
2.3. 配 置/etc/hosts.allow
$ sudo gedit /etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.2开头的主机(连 接到NFS服务器上),也可以指定特定的IP地址。参看man页 hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd: 192.168.1.
rquotad: 192.168.1.
mountd: 192.168.1.
statd: 192.168.1.

2.4. 配置/etc/exports:
$ sudo gedit /etc/exports
NFS挂载目录及权限由/etc/exports文件定义,/etc/exports实际上就是nfs服务器的核心配置文件了.
比如我要将我的home目录中的/home/kk/share目录让192.168.6.*的IP共享, 则在该文件末尾添加下列语句:
/home/kk/share 192.168.1.*(rw,sync,no_root_squash) 指定的主机和配置之间即:*和(之间没有空格表示授予读写并拒绝其他用户;有空格则表示授予该主机只读并给其他用户读写权。
或者:/home/kk/share 192.168.1.6/24(rw,sync,no_root_squash) a.b.c.d/z z为子网掩码中的位数
以上配置的说明: 192.168.1.*网段的NFS客户端能够共享NFS服务器 /home/kk/share 目录内容.且有读,写权限, 并且该用户进入 /home/kk/share目录后的身份为root
最好加上sync, 否则 $ sudo exportfs -r 时会给出警告, sync是NFS的默认选项.

2.5. 修改目录权限 :chmod -R 777 /home/kk/share

2.6. 启动服务
2.6.1 $ sudo exportfs -r 更新使其立即生效,然后$ showmount -e 查看NFS server的export list 是否生效
2.6.2 $ sudo /etc/init.d/portmap restart
或$ sudo service portmap restart //重启portmap daemon
2.6.3 $ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务(ubuntu中) ,或$ sudo service nfs reload
2.6.4 $ sudo iptables -F //清除防火墙设置或另行打开端口
2.6.5 $ rpcinfo -p //查看nfs的端口情况
2.6.6 测试NFS:
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.168.1.6,将/home/kk/share 挂载到/mnt)
$ sudo mount 192.168.1.6:/home/kk/share /mnt
运行 $ df 看看结果
$ sudo umount /mnt
如果 出现 permission deny:
试一试 :sudo mount -o nolock -t nfs 192.168.1.6:/home/kk/share /mnt搞定。

三. 挂载使用:
#mount 192.168.1.6:/远程目录 /本地目录
或用# mount -t nfs -o nolock IP:/nfs共享目录 /本地mountpoint
另外可以使用/etc/fstab 加入:
192.168.1.6:/远程目录 /本地目录 nfs rsize=8192.,wsize=8192,time0=14,intr,tcp
以后只用(mount /本地目录) 就可以了。加入tcp是由nfs的默认udp转为使用更可靠的tcp协议。
也可以用autofs这个就不累诉了。

启停服务:
# service nfs start
# sudo /etc/init.d/nfs-kernel-server start
# service nfs stop
# sudo /etc/init.d/nfs-kernel-server stop
# service nfs status
# sudo /etc/init.d/nfs-kernel-server status
# service nfs restart
# sudo /etc/init.d/nfs-kernel-server restart

使用KVM桥接时客机以宿主机br0为ip地址段

****************** wondershaper限速 ******************
1. $ wondershaper [接口] [上传速度 K] [下载速度 K] 接口指网络连接的接口, 也就是与调制解调器连接 (从而和因特网连接) 的网卡. 查找命令用的是 ifconfig
使用PPP0比较保险 eth0有可能不能正常起效
示例: $ sudo wondershaper ppp0 100 20 (限制ppp0网卡下载速度100K,上传速度20K)
示例: $ sudo wondershaper clear ppp0 (清除ppp0网卡的网速限制)
示例: $ sudo wondershaper ppp0 (查看状态)
2. trickle (使用最简单,版本有点旧2003过后即无新版)
$ trickle -s -d 100 -u 30 command //限速某个程序,单位 K
3. tc 控制网卡和IP,使用复杂功能强大
4. iproute 同3
# /sbin/tc qdisc add dev eth0 root tbf rate 50kbit latency 50ms burst 1000 //限制eth0网卡的带宽为50kbi
# /sbin/tc qdisc del dev eth0 root tbf //解除eth0网卡的带宽限制
# tc -s qdisc ls dev eth0 //列出当前规则

*********************** ufw防火墙 ***********************
sudo apt-get install ufw (or gufw)
sudo ufw enable
sudo ufw default deny 一般这三步足矣
sudo ufw status
*** 一些示例:
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1
sudo netstat -anp | less 帮助查询使用中的端口
***************** 用法 ********************
ufw [--dry-run] enable|disable|reload
命令[--试运行]激活|关闭|重新载入
ufw [--dry-run] default allow|deny|reject [incoming|outgoing]
命令[--试运行]默认 允许|阻止|拒绝 [访问本机的规则|向外访问的规则]
注:reject让访问者知道数据被拒绝(回馈拒绝信息)。deny则直接丢弃访问数据,访问者不知道是访问被拒绝还是不存在该主机。
ufw [--dry-run] logging on|off|LEVEL
命令[--试运行]日志 开启|关闭|“级别”
ufw [--dry-run] reset
命令[--试运行]复位
ufw [--dry-run] status [verbose|numbered]
命令[--试运行]状态 [详细|被编号的规则]
ufw [--dry-run] show REPORT
命令[--试运行]显示 “报告类型”
ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out][log|log-all] PORT[/protocol]
命令[--试运行][删除] [插到“x号规则”之前] 允许|阻止|拒绝|限制 [进|出] [记录新连接|记录所有数据包] “端口” [/“协议”]
ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]
命令 [--试运行][删除][插到x号规则之前] 允许|阻止|拒绝|限制 [进|出 基于“什么网络设备”] [协议 “协议”] [来源 “地址” [端口 “端口”]] [目标 “地址” [端口 “端口”]]
ufw [--dry-run] delete NUM
命令[--试运行] 删除 “第X号规则”
ufw [--dry-run] app list|info|default|update
命令 [--试运行] 程序 清单|信息|默认|更新
********************** 参数 ***************************
--version 显示程序版本号
-h , --help 显示帮助信息
--dry-run 不实际运行,只是把涉及的更改显示出来。
enable 激活防火墙,开机时自动启动
disable 关闭防火墙,开机时不启动
reload 重新载入防火墙
default allow|deny|reject 方向 方向是指:向内(incoming)|向外(outgoing)。如果更改了默认策略,一些已经存在的规则可能需要手动修改。
logging on|off|“级别” 切换日志状态。日志记录包使用的是系统日志。“级别”有好几个,默认是低级(low)
reset [--force] 关闭防火墙,并复位至初始安装状态。如果使用--force选项,则忽略确认提示。
status 显示防火墙的状态和已经设定的规则。使用status verbose显示更详细的信息。‘anywhere’与‘any’、‘0.0.0.0/0’一个意思。
show “报告类型” 显示防火墙运行信息。详细内容看“报告类型”
limit “规则” 此命令目前只能用于IPv4。还不支持IPv6.
**************** 注意 ****************
*** 要删除规则,只要在命令中加入delete就行了。
ufw deny 80/tcp 要删除这条命令建立的规则,使用:ufw delete deny 80/tcp
也可以使用规则号来进行删除。比如要第3号规则 ufw delete 3
注意,如果你开启IPv6功能。要同时删除IPv4和IPv6的规则(比如:ufw allow 22/tcp),如果用规则号的方式删除可能只删除了一个。
显示第几号规则,可以使用这样的命令 ufw status numbered(也就是规则号)
*** ufw可以连续例举端口号。端口号间必须使用逗号或分号,不能使用空格。“输入端口号”字符数最多不能超过15过(8080:8090算两个字符)。比如允许80,443,8080~8090这几个端口接受tcp传入连接。ufw allow proto tcp from any to any port 80,443,8080:8090 此例,“输入端口号”字符数为4个.
***ufw也可以使用IPv6协议。但要事先在/etc/default/ufw 中设定IPv6为启动状态。举例: ufw deny proto tcp from 2001:db8::/32 to any port 25 (阻止IPv6为2001:db8::/32类型的地址,连接本机25端口)
*** UFW同时支持出入口过滤。用户可以使用in或out来指定向内还是向外。如果未指定,默认是in。例如:
ufw allow in http
ufw reject out smtp
ufw deny out to 192.168.1.1
阻止向192.168.1.1发送信息
*** ufw allow 53 允许其它机子访问本机53端口,协议包含tcp和udp。如果要控制协议,只要加入“/协议”在端口后面就行了。例如:ufw allow 25/tcp 允许其它机子使用tcp协议访问25端口。
*** UFW也可以检查 /etc/services文件,明白服务的名字及对应的端口和协议。我们使用服务的名称即可: ufw allow smtp

********************* 路由 *******************************
主机路由 主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H
网络路由 网络路由是代表主机可以到达的网络。网络路由的Flags字段为N
默认路由 当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G
文章评论

共有 14 条评论

  1. 于 2012-02-21 16:03:49发表:

    很好,十全大补贴

  2. Chengox 于 2011-12-31 19:29:24发表:

    收藏了

  3. yy520tn 于 2011-12-30 10:00:13发表:

    感谢

  4. mr_tianwei 于 2011-12-28 23:24:12发表:

    佩服!!1拷贝下来慢慢看

  5. wxlyxd1314 于 2011-12-28 16:36:33发表:

    给力!!!

  6. 风逝者 于 2011-12-23 15:08:34发表:

    很好 很详细

  7. 风逝者 于 2011-12-23 15:08:30发表:

    很好 很详细

  8. yuxiangzhang 于 2011-12-22 18:34:10发表:

    学习中。。。。。

  9. belovedtttl 于 2011-12-18 16:58:23发表:

    用了很久的linux 感觉进步还是不大

  10. Buyto 于 2011-12-16 21:34:22发表:

    好多啊,支持

  11. okzokz123 于 2011-12-16 18:58:22发表:

    [i=s] 本帖最后由 okzokz123 于 2012-9-20 12:11 编辑 [/i]

    ************* Arch aur ***************
    ****************2012 新版安装 *****************
    由于/arch/setup被移除,目前只有采取在线网络安装,从光盘引导后先配置好网络
    ** pacstrap是对pacman的一个封装,arch-chroot是chroot的封装。
    1. 先分区格式化磁盘
    2. mount /dev/sdx /mnt
    3. pacstrap /mnt base{,-devel} //下载并安装基本系统
    pacstrap /mnt base base-devel //官方的标准安装命令
    4. genfstab -p /mnt >> /mnt/etc/fstab //自动生成 /mnt/etc/fstab
    手动: blkid /dev/sdx //得到UUID并修改 /mnt/etc/fstab
    这是一个例子:
    /etc/fstab
    #


    tmpfs /tmp tmpfs nodev,nosuid 0 0
    UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,noatime 0 1
    UUID=03ec5dd3-45c0-4f95-a363-61ff321a09ff /home ext4 defaults,noatime 0 2
    UUID=4209c845-f495-4c43-8a03-5363dd433153 none swap defaults 0 0

    5. arch-chroot /mnt //chroot到mnt

    ************ 新版配置文件 **************
    注:/etc/rc.conf现在仅负责设置要启动的进程和文件系统信息;老方式配置的系统信息依然可用,但是已经不是官方推荐的方法,一段时间后将废止。系统配置现在分散到多个文件当中,它们的优先级比/etc/rc.conf高,新文件也是 systemd 的配置文件,可能需要创建这些文件。

    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    配置内容 配置文件 老rc.conf 段落
    Hostname /etc/hostname
    /etc/hosts NETWORKING
    终端字体和键盘映射 /etc/vconsole.conf LOCALIZATION
    Locale /etc/locale.conf
    /etc/locale.gen LOCALIZATION
    时区 /etc/timezone
    /etc/localtime LOCALIZATION
    硬件时钟 /etc/adjtime LOCALIZATION
    内核模块 /etc/modules-load.d/ HARDWARE
    Daemons /etc/rc.conf DAEMONS
    Wired Network /etc/rc.conf NETWORKING
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    6. *** 主机名:
    hostname //将 hostname 写入 /etc/hostname;安装程序的最近版本会在你修改 /etc/rc.conf 后自动将主机名加入。如果不是,请使用指令更新文件信息。
    将 hostname 写入 /etc/hosts,作为别名:

    127.0.0.1 localhost.localdomain localhost myhostname即我的主机名
    ::1 localhost.localdomain localhost myhostname即我的主机名

    注意: ::1 是 IPv6 中的 127.0.0.1
    警告: 为了程序的兼容性,必须严格遵照这个格式,错误的句法可能会导致网络性能低下或某些程序运行缓慢甚至无法运行。对新手来说这是十分普遍的错误。

    如果你使用静态 IP,新加另外一行: 即:
    192.168.1.100 我的主机名.domain.org 我的主机名

    7. *** 终端字体和键盘映射:
    编辑/etc/vconsole.conf.

    KEYMAP
    可用的键盘映射位于/usr/share/kbd/keymaps. 注意此设置仅对 TTY 起作用,不改变图形窗口或X的设置。
    FONT
    可用字体位于 /usr/share/kbd/consolefonts/。一般可用留空。
    FONT_MAP
    定义要加载的映射,可用设置位于/usr/share/kbd/consoletrans,一般可留空。

    Example(例子):
    KEYMAP=us
    FONT=
    FONT_MAP=

    8. *** 时区:
    编辑文件 /etc/timezone.示例:
    Asia/Shanghai
    同时需要做个链接:
    # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //将/etc/localtime 软链接到 /usr/share/zoneinfo/Zone/SubZone.其中 Zone 和 Subzone 替换为所在时区

    如果使用 systemd,请编辑/etc/timezone,写入时区数据Zone/Subzone.例如:
    Europe/Minsk

    9. *** 启用 locales:
    # nano /etc/locale.gen //如下配置即可
    en_US.UTF-8 UTF-8
    zh_CN.GB18030 GB18030
    zh_CN.GBK GBK
    zh_CN.UTF-8 UTF-8
    zh_CN GB2312
    # locale-gen //从/etc/locale.gen读取配置
    # nano /etc/locale.conf //设置系统locale,如下配置
    LANG=zh_CN.UTF-8
    LC_TIME=en_GB.UTF-8
    设置 LANG 基本就足够了,它将作为其它设置的默认值

    10. *** 硬件时间 :
    默认、推荐的设置为UTC。请在同一个机器使用同一个硬件时钟模式,否则它们会覆盖时间导致时间错乱。可以用下面命令自动生成 /etc/adjtime。
    注意: 请确保/etc/rc.conf中未配置 HARDWARECLOCK。
    # hwclock --systohc --utc //设置为UTC (国际化网络)
    # hwclock --systohc --localtime //使用本地时间(主板),一般windowsOS默认即是

    11. *** 内核模块
    Tip: 一般情况下 udev 会自动加载需要的模块,大部分用户都不需要手动修改。这里只需要加入真正需要自定义的模块。

    /etc/modules-load.d/中保存内核启动时加入模块的配置文件。每个配置文件用/etc/modules-load.d/.conf的格式命名。配置文件中包含需要装入的内核列表,每个一行。空行和以 # 或 ; 开头的行直接被忽略。示例:

    /etc/modules-load.d/virtio-net.conf

    # Load virtio-net.ko at boot
    virtio-net

    12. *** Daemons(守护进程,可以在后面安装好dbus和各dm再行修改) :
    # nano /etc/rc.conf //在 /etc/rc.conf 的 DAEMONS 行加入的程序将在开机时自动启动。DAEMONS 序列中加入的是位于 /etc/rc.d/ 目录的脚本名。

    DAEMONS=(network @syslog-ng netfs @crond)

    如果脚本名字前有惊叹号(!),表示它不被执行。
    如果脚本名字前有"at"符号(@),则表示它会在后台被执行,启动序列不等待脚本运行成功就会继续执行下一脚本。例如"mpd" 依赖 "network",所以 network 后台启动将影响 mpd 的正常启动。
    安装新服务后如果需要开启启动,请编辑此序列。

    Tip: 使用 rc.d list 命令可以显示所有可用服务。

    13. *** 网络配置 :
    # nano /etc/rc.conf
    DAEMONS=(... network ...)

    DHCP:
    interface=eth0
    address=
    netmask=
    gateway=

    Static IP:
    interface=eth0
    address=192.168.0.2
    netmask=255.255.255.0
    broadcast=192.168.0.255
    gateway=192.168.0.1

    DNS:
    /etc/resolv.conf
    nameserver 61.23.173.5
    nameserver 61.95.849.8
    search example.com

    14. *** 创建初始 ramdisk 环境 :
    # mkinitcpio -p linux

    15. *** 安装配置启动加载器 :
    1. Grub 2
    安装到 BIOS 主板系统:
    # pacman -S grub-bios
    # grub-install --target=i386-pc --recheck /dev/sda //注意,若无法肯定类型即直接安到/dev/sda即可

    安装到 UEFI 主板系统:
    # pacman -S grub-efi-x86_64
    # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck

    # cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo //可以避免一个启动时无关紧要的错误信息

    2. 多系统创建grub.cfg,要搜索硬盘上安装的其它操作系统,请先用 # pacman -S os-prober 安装 os-prober。

    # grub-mkconfig -o /boot/grub/grub.cfg //生成grub.cfg

    16. *** Root密码:
    # passwd

    17. *** 卸载分区并重启系统:

    如果还在 chroot 环境,先用 exit 命令退出系统:

    # exit

    卸载/mnt中挂载的系统:

    # umount /mnt/{boot,home,}

    退出安装并重启:

    # reboot



    ******************* 重启后进入系统继续的安装 ******************
    ****************配置PPPOE客户端软件
    安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,(arch在/usr/sbin/pppoe-setup)从而让ADSL拨号时
    使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用
    一般的发行版用adsl-setup这个工具进行配置:#/usr/sbin/adsl-setup
    arch使用 #sudo /usr/sbin/pppoe-setup
    当出现
    >>> Enter your PPPoE user name :
    输入ADSL帐号的用户名
    当出现
    >>> Enter the Ethernet interface connected to the ADSL modem
    For Solaris, this is likely to be something like /dev/hme0.
    For Linux, it will be ethn, where 'n' is a number.
    (default eth0):
    输入eth0 ,这是ADSL相连的网卡的名字
    当出现
    >>> Enter the demand value (default no):
    输入no
    当出现
    >>> Enter the DNS information here:
    输入server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
    当出现
    >>> Please enter your PPPoE password:
    输入ADSL帐号的密码
    当出现
    >>> Choose a type of firewall (0-2):
    输入0,不使用防火墙
    当出现
    >>> Accept these settings and adjust configuration files (y/n)?
    如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。****************完成 pppoe-start

    ****** 配置源:
    大部分人会使用 [core], [extra] 和 [community]。如果想在 Arch x86_64 上运行 32 位应用程序,请在 /etc/pacman.conf 中加入如下内容以启用 [multilib] 源:

    [multilib]
    Include = /etc/pacman.d/mirrorlist

    [mate]源:
    # nano /etc/pacman.conf //加入MATE的稳定源
    [mate]
    Server = http://packages.mate-desktop.org/repo/archlinux/$arch

    ****** 全面升级解决安装前的依赖
    1 ping www.google.com(检查网络是否正常,如果不正常,则再次执行 vi /etc/rc.conf与 vi /etc/resolv.conf,设置两个文件中与网络相关的部分。注意要加参数 -c n "-c是限制参数 n是具体次数)
    2 links(网络正常,则测试links。按下Alt+F键,任意打开一个网址看看。这也是没办法,因为后面要用这个工具来下载NVIDIA的闭源驱动,所以先试试。)
    3.1 pacman -Syy (更新软件列表)
    3.2 pacman -Syu(全面更新,这条命令要执行两次,第一次会让你更新pacman自身。)
    3.3 pacman -S base-devel 编译环境

    *** 引导你进入图形
    **************** Xorg **********************
    4 pacman -S xorg xorg-xinit (安装最基本的图形界面 虚拟机安X另见wiki,但据试用还是原始X加vesa适用最大)或:
    # pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
    # pacman -S mesa mesa-demos //3D 工具 glxgears 和 glxinfo
    3D 工具 glxgears, glxinfo 都包含在 mesa-demos 包里。如果你需要这些工具,那就安装这个包: # pacman -S mesa-demos
    到这一步,已经有了运行X Server的基本软件包,接下来需要把显卡的驱动安装到电脑里(e.g. xf86-video-). 最简单的X.org配置方法就是安装正确的驱动包,然后使用自动脚本对 /etc/X11/xorg.conf 进行初始化,比如使用 Xorg -configure(arch团队提供hwd工具,但据以前用户的反映,这个现在还老出问题,新手可以使用,以后有能力再配置其他).
    ******* virtualbox中的xorg支持******************
    1. # pacman -Syu virtualbox-archlinux-additions
    2. # modprobe -a vboxguest vboxsf vboxvideo
    3. #nano /etc/rc.conf 加 MODULES(... vboxguest vboxsf vboxvideo) ; 加 DAEMONS(... rc.vboxadd)
    4. #VBoxClient-all &

    **************** 开源显卡驱动 *****************
    # lspci | grep VGA //查看显卡类型
    # pacman -Ss xf86-video | less //查看所有开源驱动
    pacman -S xorg 会装上几乎大部分开源驱动,少数的可查询后补充如:nouveau,openchrome
    下面是一个开源的显卡列表和相关说明:

    * xf86-video-apm Alliance ProMotion video driver
    * xf86-video-ark ark video driver
    * xf86-video-ati ati video driver
    * xf86-video-chips Chips and Technologies video driver
    * xf86-video-cirrus Cirrus Logic video driver
    * xf86-video-dummy dummy video driver
    * xf86-video-fbdev framebuffer video driver
    * xf86-video-glint GLINT/Permedia video driver
    * xf86-video-i128 Number 0 i128 video driver
    * xf86-video-i740 Intel i740 video driver
    * xf86-video-i810 Intel i810/i830/i9xx video drivers (deprecated - use -intel)
    * xf86-video-intel Newer Version of Intel i810/i830/i9xx video drivers
    * xf86-video-imstt Integrated Micro Solutions Twin Turbo vidoe driver
    * xf86-video-mach64 mach64 video driver
    * xf86-video-mga mga video driver (Matrox Graphics Adapter)
    * xf86-video-neomagic neomagic video driver
    * xf86-video-nouveau Open Source 3D acceleration driver for nVidia cards (eperimental)
    * xf86-video-nv nvidia nv video driver
    * xf86-video-openchrome Openchrome drivers
    * xf86-video-r128 ati Rage128 video driver
    * xf86-video-radeonhd Experimental Radeon HD video driver for r500 and r600 ATI cards
    * xf86-video-rendition Rendition video driver
    * xf86-video-s3 S3 video driver
    * xf86-video-s3virge S3 Virge video driver
    * xf86-video-savage savage video driver
    * xf86-video-siliconmotion siliconmotion video driver
    * xf86-video-sis SiS video driver
    * xf86-video-sisusb SiS USB video driver
    * xf86-video-tdfx tdfx video driver
    * xf86-video-trident Trident video driver
    * xf86-video-tseng tseng video driver
    * xf86-video-unichrome Unichrome video drivers
    * xf86-video-v4l v4l video driver
    * xf86-video-vesa vesa video driver
    * xf86-video-vga VGA 16 color video driver
    * xf86-video-via via video driver
    * xf86-video-vmware vmware video driver
    * xf86-video-voodoo voodoo video driver

    * 说明:vesa驱动是最通用的软图形驱动, 适用于大部分的显卡, 但没有3D加速等功能。所以如果实在无法找到合适的显卡驱动,就只好选用vesa, 理论上它应该能在任何显卡上工作。

    ************** 开源显卡驱动 (radeonhd似乎已移除)***********
    pacman -S xf86-video-ati libgl ati-dri
    或 pacman -S xf86-video-radeonhd libgl ati-dri
    # pacman -S xf86-video-nouveau //开源的 nouveau 适合大部分人,所以推荐使用:
    # pacman -S nouveau-dri //实验 3D 支持

    ************** 安装输入设备驱动 ******************
    Udev 应该能够正确检测设备;evdev (xf86-input-evdev) 是现代热插拔输入驱动,可以支持绝大部分设备。所以通常不需要安装输入驱动。此时,evdev 已经作为 Xorg 的依赖关系被安装。

    如果 evdev 不支持您的设备,请从xorg-input-drivers组安装需要的驱动。

    用 pacman 查找所有输入设备驱动:

    # pacman -Ss xf86-input

    注意: 如果准备禁用热插拔,请安装 xf86-input-keyboard 或 xf86-input-mouse 否则 evdev 将会成为输入驱动。

    笔记本(或触摸屏)用户需要 synaptics 软件包以支持触摸板/触摸屏:

    # pacman -S xf86-input-synaptics

    ************* 守护进程和ntfs兼容 *******************
    1. pacman -S dbus hal ntfs-3g gdm fuse(先装上这几个必须要用的hal在新版中似乎没了,新守护进程为dbus)
    2. 对GNOME有用的守护进程 选一个即可,新守护进程为dbus
    启动hal: /etc/rc.d/hal start
    启动fam:/etc/rc.d/fam start(使用了hal就不用fam了)
    ***将hal加入到/etc/rc.conf的DAEMONS中以使得它们随系统启动而自动运行:nano /etc/rc.conf
    ***DAEMONS=(syslog-ng dbus network crond alsa hal gdm) 加入括号内即可
    ****fuse加入/etc/rc.conf MODULES 队列中或 modprobe fuse 也可。
    让gdm启用有两种方式,一种是直接加入到/etc/rc.conf的DAEMONS的末尾;另外一种方式是用过配置inittab来加载gdm。
    ***nano /etc/inittab
    ****然后取消下面代码的注释:x:5:respawn:/usr/sbin/gdm -nodaemon
    ***************** 声音 ******************
    1. pacman -S alsa-utils alsa-oss(安装声卡的驱动)用xfce4装 xfce4-mixer
    ***为了解决Alsa声卡独占问题,可以安装alsa-oss:
    2. alsamixer (配置声卡的驱动)
    3. alsactl store(保存声卡的驱动)
    4. nano /etc/rc.conf //将alsa加到最后,使声卡能随系统启动而启动
    DAEMONS=(syslog-ng network crond alsa) 加入括号内即可
    ********************** 用户帐户 ************************
    1. useradd -m 用户名(先建好,免得后面忘了)
    ***-m 以 /home/username 创建账户家目录。-g 组名或者账户初始组名。-G 一个附加的将加入的组列表。-s 账户默认 shell 的目录及文件名。 Arch Linux 的 init 脚本使用 bash
    2. passwd 用户名 (设定密码)
    3. usermod -a -m -G users,audio,video,lp,wheel,power,storage,optical,floppy,games,scanner 用户名 (添加用户到组)
    ***把你的普通用户账号加入到audio用户组中:以root身份,运行/usr/bin/gpasswd程序:
    ***gpasswd -a yourusername audio

    ****** 新版--注意命令有所区别:
    # adduser

    程序将交换方式运行,要求用户输入所需信息。下例中将创建用户archie:

    Login name for new user []: archie

    User ID ('UID') [ defaults to next available ]:

    Initial group [ users ]:

    Additional groups (comma separated) []: audio,lp,optical,storage,video,wheel,games,power,scanner

    Home directory [ /home/archie ]:

    Shell [ /bin/bash ]:

    Expiry date (YYYY-MM-DD) []:

    正如例子中所示,建议仅在Login name 和 Additional groups 输入内容,其它都留空。

    Additional groups 中的列表是桌面系统的典型选择,特别推荐给新手:

    * audio - 让任务可以调用声卡以及相关软件
    * lp - 管理打印任务
    * optical - 管理光驱相关任务
    * storage - 管理存储设备
    * video - 视频任务以及硬件加速
    * wheel - 使用 sudo
    * games - 得到那些属于游戏组的权限,比如手柄
    * power - 笔记本用户需要这个
    * scanner - 使用扫描仪

    接着会给出用户信息预览,可以取消或者继续。

    New account will be created as follows:

    ---------------------------------------
    Login name.......: archie
    UID..............: [ Next available ]
    Initial group....: users
    Additional groups: audio,lp,optical,storage,video,wheel,games,power,scanner
    Home directory...: /home/archie
    Shell............: /bin/bash
    Expiry date......: [ Never ]

    This is it... if you want to bail out, hit Control-C. Otherwise press
    ENTER to go ahead and make the account.

    按下 ENTER 后将创建账户,并提升输入新用户的附加可选信息:

    Creating new account...

    Changing the user information for archie
    Enter the new value, or press ENTER for the default
    Full Name []:
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:

    最后,提示输入新帐号的密码:

    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Account setup complete.
    新非 root 用户创建完成,同时还建立了用户主目录和登录密码。


    chmod +w /etc/sudoers //确认现有安装sudo,并已加入wheel组或直接加指定用户
    visudo 加入
    %wheel ALL=(ALL) ALL
    或:
    用户名 ALL=(ALL) ALL
    chmod 0440 /etc/sudoers //特别提醒必须要当即改回权限,否则将会连root也无法行使超级权限

    删除账户:如果你弄错了账户设置,或者你想删除一个账户,或者你想要换个账户名,或者任何其他什么原因,使用 /usr/sbin/userdel :

    # userdel -r [帐户名]

    -r 此选项将在删除账户的同时删除其主目录及其中的文件,用户的 mail spool 中的文件也会被删除。

    ************************* 字体及本地化 **************************************
    1. pacman -S wqy-zenhei(先安个文泉驿正黑矢量字体为安gnome做准备)
    # yaourt -S ttf-win7-fonts ttf-office-2007-fonts //MSOS字体
    2. locale-gen //该命令设置中文环境为安gnome,xfce4,kde等作好准备 locale 或 locale -a 来查看,必须正确运行否则会是英文桌面且输入法会出现错误。
    /etc/locale.gen
    locale-gen 命令从 /etc/locale.gen读取信息设定系统的locales. 这些设置稍后会被glibc 和其他一些支持本地化的程序或者库用于自动翻译输出各种语言的"独特" 文本, 并且合适的显示地域、货币、时区以及日期格式, 字符排列方式和其他一些本地化的特殊标准。设置默认本地化的功能是类UNIX操作系统的一大特质
    默认情况下 /etc/locale.gen 是一个仅包含注释文档的空文件.编辑后,这个文件将不会get touched again. 每次glibc更新之后locale-gen就会运行一次, 以在/etc/locale.gen重新生成所有的本地化设置.选定你需要的本地化类型(移除前面的#即可), 比如: en_US ISO-8859-1 en_US.UTF-8
    3. nano /etc/rc.conf(改编码方式,将原来的英文en_US.UTF-8改为中文zh_CN.UTF-8,为安gnome作好准备,否则gnome安好后会是英文界面,由于前面已经做过修改,所以检查一下也无妨)
    *********************** 图形环境 ***************************
    XFCE4: pacamn -S xfce4 xfce4-goodies
    gnome: pacman -S gnome(可选择安装,全部装也可以,安gnome3的话还需同时安gnome-extra,若是2to3还需要gnome-shell,新守护进程为dbus)
    pacman -S gnome-desktop gnome-panel gnome-applets gnome-backgrounds metacity gnome-settings-daemon gnome-control-center gnome-icon-theme gnome-keyring gnome-screensaver gnome-session gnome-terminal gnome-themes gnome-system-monitor yelp nautilus notification-daemon nautilus-open-terminal
    pacman -S gnome-system-tools system-tools-backends liboobs(几个系统的工具)
    pacman -S gnome-tweak-tool (gnome3显示桌面图标要用)
    pacman -S gnome-extra(这个可选装,只安装自己需要的,如下)
    pacman -S gnome-speech deskbar-applet evolution evolution-exchange evolution-webcal gconf-editor gnome-games gnome-games-extra-data gnome-power-manager gnome-system-monitor(不喜欢游戏的话,就不安games)

    *********************** 图形MATE ********************
    不得不说gnome3是多么的让人吐槽,以后就用MATE了。
    1. # nano /etc/pacman.conf //加入MATE的稳定源
    [mate]
    Server = http://packages.mate-desktop.org/repo/archlinux/$arch
    2. # pacman -Syy
    # pacman -S mate
    3. # pacman -S mate-extra 或者 # pacman -S mate-extras //目前, MATE 的pacman 仓库里有两个扩展组(变更恕不通知): mate-extra 和 mate-extras
    4. # nano ~/.xinitrc //加入启动信息
    exec ck-launch-session mate-session
    export LANG=zh_CN.UTF-8 //这个变量要加上,否则是英文菜单
    # startx

    ******************** AUR *********************
    关于ABS太繁杂也不是普通用户需要的,暂且免去重要介绍AUR软件源的使用。
    ***************** 安装aur软包 ********************
    进入构建目录:

    cd ~/abs/slim

    修改 PKGBUILD 添加或者移除支持的组件、进行修补或者修改软件包的版本等(可选):

    vim PKGBUILD

    运行 makepkg(-s 打开自动依赖关系安装处理):

    makepkg -s //然后就得到你想要的软件包

    以 root 权限安装:

    pacman -U slim-1.3.0-2-i686.pkg.tar.xz

    这样,你刚刚从源代码构建了 slim 并使用 pacman 干净地安装到了你的系统。软件包的删除同样由 pamcan 来完成(pacman -R slim)。

  12. okzokz123 于 2011-12-16 18:57:35发表:

    ************ pacman 用法 *************
    ******************** 安装和删除包 ********************
      ***安装和升级软件包前,先让本地的包数据库和远程的软件仓库同步是个好习惯。
    pacman -Syy 或 pacman --sync --refresh

      ***安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:
      pacman -S package_name1 package_name2

      ***有时候在不同的软件仓库中,一个软件包有多个版本(比如extra和testing)。你可以选择一个来安装:
      pacman -S extra/package_name
      pacman -S testing/package_name

      ***你也可以在一个命令里同步包数据库并且安装一个软件包:
      pacman -Sy package_name

      ***删除单个软件包,保留其全部已经安装的依赖关系
      pacman -R package_name

      ***删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:
      pacman -Rs package_name

    ***要删除孤立软件包(递归的,要小心)
    pacman -Rs $(pacman -Qtdq)

    ***获取本地软件包和它们大小的一个已排序清单列表
    LANG=C pacman -Qi | sed -n '/^Name[^:]*: \(.*\)/{s//\1 /;x};/^Installed[^:]*: \(.*\)/{s//\1/;H;x;s/\n//;p}' | sort -nk2

    ***不希望升级某个软件包
    IgnorePkg = 软件包名

    ***不升级某个软件包组
    IgnoreGroup = gnome

    ******************** 升级系统 *******************
      ***Pacman能够只用一个指令来升级系统中所有已安装的包。升级的时间取决于你的系统有多新。
      pacman -Su

      ***当然,最好做法的是将升级系统和同步仓库数据合成为一条指令:
      pacman -Syu

    ******************* 查询包数据库 ********************
      ***Pacman 可以用 -Q 标志搜索和查询本地包数据库。见
      pacman -Q 或 pacman --query //列出所有安装的软件包
      pacman -Q package_name 或 pacman --query package_name //查看某个软件包是否已安装
    pacman -Qi package_name 或 pacman --query --info package_name //显示某个软件包的信息
    pacman -Qii package_name //使用两个 -i 将同时显示备份文件和修改状态
    pacman -Ql package_name 或 pacman --query --list package_name //显示软件包中包含的文件
    pacman -Qo /path/to/file 或 pacman --query --owns /path/to/file //查找某个文件属于哪个包
    pacman -Qdt //罗列所有不再作为依赖的软件包(孤立orphans)

      ***或者更详细的 pacman(8) manpage。同步数据库可以用 -S 标志搜索和查询。或者见刚提及的 manpage 或者
      pacman -S --help
      查看详情。

    pacman -Ss 或 pacman --sync --search //查找软件仓库和包信息
    pacman -Si 或 pacman --sync --info //显示软件仓库中某个指定软件包的信息
    ********************* 其它用法 *********************
      Pacman是个非常广泛的包管理工具,这里只是它的一些其它主要特性。
      ***下载包而不安装它:
      pacman -Sw package_name

      ***安装一个本地包(不从源里):
      pacman -U /path/to/package/package_name-version.pkg.tar.gz

    ***安装一个远程包(不从源里)
    pacman -U http://www.example.com/repo/example.pkg.tar.xz

      ***完全清理包缓存(/var/cache/pacman/pkg):
      pacman -Scc

      ***重安装包(那些因为依赖关系问题而无法先删除的包):
      pacman -Sf package_name

    ***删除 Cache 中当前未安装的软件包(/var/cache/pacman/pkg)
    pacman -Sc

    ***完全清理包缓存
    pacman -Scc


      ***要了解更详细的参数开关可以pacman --help或者man pacman。

  13. okzokz123 于 2011-12-16 18:56:17发表:

    ********* ARCH(来源arch_wiki)整理**************
    用U盘或光盘启动机子,出现选单时,选择第一项进行安装。

    输入用户名时,输入root,现在还没有密码,直接回车即可。

    进入安装界面,输入“/arch/setup”开始安装。

    不管是刻盘安装,还是U盘安装,这儿都选 CD-ROM 即可。

    下面确定地区与时区,当然选Asia(亚洲)、Shanghai(上海)

    下一步,设置时间,如果是linux与windows双系统,则选第二项 local time。



    接下来,是对硬盘分区。

    *******小心:(1)别选了第一项自动分区!要选第二项手动分区!否则你盘上win系统下的所有东东可就都挂啦!!

    *i've detected you already have blockdevice definitions in place

    do you want to use these as a starting point?

    make sure you disk are partitioned correctly so your definitions can be applied on the disk.

    (我发现你已经到位blockdevice定义

    ,你想用这些作为一个起点?

    确保你的磁盘进行分区正确,以便您的定义可以在磁盘上的应用。)

    **i've detected you already have blockdevice definitions in place:/dev/sda raw no_label.

    ext3;yes;/boot;target;no_opts;no_label_no_params.

    do you want to use these as a starting point?

    make sure you disks are partitioned correctly so your definitions can be applied on the disk .pick 'no' when in doubt to start form scratch.我发现你已经blockdevice定义到位:/ dev / sda的原始no_label。

    ext3的,是的; /开机;目标; no_opts; no_label_no_params。

    你想用这些作为一个起点?

    确保你的磁盘分区正确,以便您的定义可以在磁盘上的应用。挑'不'时,怀疑从头开始形成。

    ***use the up an down arrows to navigate menus. use tab to switch between buttons and enter to select. change ext4 filesystem settings(create:no ,label:,mountpoint:/home) on /dev/sda4 (type:raw,label:)? (使用了一个向下箭头的导航菜单。使用TAB键切换按钮和输入选择。变化的ext4文件系统设置(创建:没有,标签:,挂载点:/家)在/ dev/sda4(类型:原料,标签:)?

    ****do you want to have this filesystem recreated

    if not ,make sure there already is a filesystem

    enter any additional opts for mkfs.ext3(你想拥有这个文件系统重建

    如果不是,请确保已经是一个文件系统

    ,输入mkfs.ext3任何额外的选择那-----不想格式化选canl,但仍然有格式化选项,且会挂载文件系统)





    小心:(2)如果是linux与windows双系统,最好将此处的分区,都放在扩展分区上,不要使用主分区!否则很容易出错!首先是系统不会支持大于4个主分区,其次是,在后面格式化磁盘时,分区表的顺序会被打乱,一不小心就会将windows下的磁盘给格掉!所以建议全部使用扩展分区上的逻辑磁盘。



    我的分区如下:

    (hd0,6) 200MB 给/boot目录(sda7)

    (hd0,7) 10GB 给/home目录(sda8)

    (hd0,8) 10GB 给/var目录(sda9)

    (hd0,9) 32GB 给/ 根目录(sda10)

    (hd0,10) 2GB 用于swap虚拟内存(sda11)



    分好之后,格式化磁盘,Ext3或者Ext4,则随个人爱好。唯一值得注意的是,选择磁盘格式时,不要将83输入成了82,因为默认的82,是swap。



    下一步,选择要安装的软件包,我选了base全部基础包,外加base-devel中的links与kernel26-headers,之所以要选Links和kernel26-headers,与安装显卡驱动有关,下面会说到。



    所有选择的包安完之后,开始系统的配置。这个时候要特别小心,不要出错。



    首先是选编辑器,建议使用vi或者nano,nano比vi直观些,但我喜欢用vi。



    以下是几个重要的配置文件:

    这个在配置完后进入tty在配置网络:

    ****************配置PPPOE客户端软件

    安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,(arch在/usr/sbin/pppoe-setup)从而让ADSL拨号时

    使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用

    一般的发行版用adsl-setup这个工具进行配置:#/usr/sbin/adsl-setup

    arch使用 #sudo /usr/sbin/pppoe-setup

    当出现

    >>> Enter your PPPoE user name :

    输入ADSL帐号的用户名

    当出现

    >>> Enter the Ethernet interface connected to the ADSL modem

    For Solaris, this is likely to be something like /dev/hme0.

    For Linux, it will be ethn, where 'n' is a number.

    (default eth0):

    输入eth0 ,这是ADSL相连的网卡的名字

    当出现

    >>> Enter the demand value (default no):

    输入no

    当出现

    >>> Enter the DNS information here:

    输入server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址

    当出现

    >>> Please enter your PPPoE password:

    输入ADSL帐号的密码

    当出现

    >>> Choose a type of firewall (0-2):

    输入0,不使用防火墙

    当出现

    >>> Accept these settings and adjust configuration files (y/n)?

    如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。****************完成 pppoe-start

    若要使用GNOME网络管理工具请用下面的安装命令(进入X后):

    pacman -S gnome-network-manager

    安装之后你还需要编辑/etc/rc.conf 文件,找到 INTERFACES 这行,在括号中的 eth0

    前面加上感叹号,即:

    INTERFACE=(!eth0)

    同时找到 DAEMONS 行,在 network 前加上感叹号,并在其后面加“networkmanager”。



    文件一: /etc/rc.conf

    这个文件中,有以下几个要点:

    HOSTNAME=“主机名" (这里是设定你的主机名。这个一定不要忘了)

    eth0="dhcp" (这里配置网卡,DHCP是自动获取IP地址。如果你使用的是静态IP,则修改原文档中上面一行,像这样“#eth0="eth0 你的IP 你的子网掩码 你的广播域”并去掉这一行前面的井号,而在下面DHCP这行前面,加上井号。

    INTERFACES=(eth0) (这行是启用网卡。)

    gateway="default gw 你网关的IP地址" (这行是你的网关地址。)

    ROUTES=(!gateway) (这行决定你是否启用网关,如果你是静态IP,就去掉括号中的!号,表示启用,如果前面是dhcp的,则不管它。)



    文件二: /etc/resolv.conf

    这个文件用于设定你的DNS,如果你是DHCP动态获取的上网地址,这个文件就不用改动。如果有固定DNS,则如下设置:

    nameserver 你的DNS地址 (注意“你的DNS地址”不要有引号或者括号!我第一次安装时,就是在这个地方犯了错误,上不了网,查找了两天才找到原因。如果有多个DNS,可以按上述格式,分成多行书写。)



    文件三: /etc/pacman.d/mirrorlist

    这个文件指定你更新系统之时的pacman源,找到国内的源(#China行),根据你的网络情况,删掉相应行的#号就行了。我选的是163与sohu的源,中间的两个源没有选。此外,为保证万无一失,建议选几个世界范围内离国内近点的源,比如印度、日本的源等。我在安xfce时发现,国内的源经常会出现某个包下载不了的情况,而加了日本与印度的源之后,能够顺利下载下来。



    文件四: /etc/locale.gen

    这个文件设定系统可用的编码方式,直接翻到最后,将以zh_CN 开头的那几行前面的井号去掉即可。



    好啦,基本的设定就这样了,下面回到首页选项,准备最后两个安装步骤。



    文件五: /etc/fstab

    如果你打算用hal来自动挂载DVD之类的媒体,为了给即将安装的hal做准备,你可能要注释掉cdrom和dvd条目。



    文件六:/etc/resolv.conf

    如果你使用DHCP,完全可以忽略此文件,缺省情况下dhcpd守护进程会自动创建和销毁此文件。



    文件七:/etc/locale.gen

    本地化语言货币化设置 后面将提到



    选择Root-Password 设置root帐号的密码,要输入两次。

    注意,linux系统下,密码在输入时是不会显示的,不要以为自己没有输入进去,呵呵。



    最后一项,安装系统的GRUB引导程序。最好安装是sda0上。

    完成之后,会让你手工修改grun.conf文件,注意,如果你是双系统,硬盘上有windows的话,不要忘了将文档最后windows下面那几行前面的井号去掉。



    完成之后,输入reboot命令重启电脑,整个linux 系统,即以安装完毕。重启之后,进行应用程序的安装。我的步骤如下:



    重启之后,输入root用户登录,然后开始应该程序的安装



    1 ping www.google.com(检查网络是否正常,如果不正常,则再次执行 vi /etc/rc.conf与 vi /etc/resolv.conf,设置两个文件中与网络相关的部分。注意要加参数 -c n "-c是限制参数 n是具体次数)

    2 links(网络正常,则测试links。按下Alt+F键,任意打开一个网址看看。这也是没办法,因为后面要用这个工具来下载NVIDIA的闭源驱动,所以先试试。)

    3.1 pacman -Syy (更新软件列表)

    3.2 pacman -Syu(全面更新,这条命令要执行两次,第一次会让你更新pacman自身。)

    3.3 pacman -S base-devel 编译环境

    **************** Xorg **********************

    4 pacman -S xorg xorg-xinit (安装最基本的图形界面 虚拟机安X另见wiki,但据试用还是原始X加vesa适用最大)或 # pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils

    安装 mesa 以获得 3D 支持: # pacman -S mesa mesa-demos

    3D 工具 glxgears, glxinfo 都包含在 mesa-demos 包里。如果你需要这些工具,那就安装这个包: # pacman -S mesa-demos

    到这一步,已经有了运行X Server的基本软件包,接下来需要把显卡的驱动安装到电脑里(e.g. xf86-video-). 最简单的X.org配置方法就是安装正确的驱动包,然后使用自动脚本对 /etc/X11/xorg.conf 进行初始化,比如使用 Xorg -configure(arch团队提供hwd工具,但据以前用户的反映,这个现在还老出问题,新手可以使用,以后有能力再配置其他).

    ******* virtualbox中的xorg支持******************

    1. # pacman -Syu virtualbox-archlinux-additions

    2. # modprobe -a vboxguest vboxsf vboxvideo

    3. #nano /etc/rc.conf 加 MODULES(... vboxguest vboxsf vboxvideo) ; 加 DAEMONS(... rc.vboxadd)

    4. #VBoxClient-all &

    ************** 开源显卡驱动 ***********

    如果不知道显卡类型,输入下面命令: lspci | grep VGA

    输入下面命令,查看所有开源驱动: pacman -Ss xf86-video | less

    pacman -S xorg 会装上几乎大部分开源驱动,少数的可查询后补充如:nouveau,openchrome

    下面是一个开源的显卡列表和相关说明:



    * xf86-video-apm Alliance ProMotion video driver

    * xf86-video-ark ark video driver

    * xf86-video-ati ati video driver

    * xf86-video-chips Chips and Technologies video driver

    * xf86-video-cirrus Cirrus Logic video driver

    * xf86-video-dummy dummy video driver

    * xf86-video-fbdev framebuffer video driver

    * xf86-video-glint GLINT/Permedia video driver

    * xf86-video-i128 Number 0 i128 video driver

    * xf86-video-i740 Intel i740 video driver

    * xf86-video-i810 Intel i810/i830/i9xx video drivers (deprecated - use -intel)

    * xf86-video-intel Newer Version of Intel i810/i830/i9xx video drivers

    * xf86-video-imstt Integrated Micro Solutions Twin Turbo vidoe driver

    * xf86-video-mach64 mach64 video driver

    * xf86-video-mga mga video driver (Matrox Graphics Adapter)

    * xf86-video-neomagic neomagic video driver

    * xf86-video-nouveau Open Source 3D acceleration driver for nVidia cards (eperimental)

    * xf86-video-nv nvidia nv video driver

    * xf86-video-openchrome Openchrome drivers

    * xf86-video-r128 ati Rage128 video driver

    * xf86-video-radeonhd Experimental Radeon HD video driver for r500 and r600 ATI cards

    * xf86-video-rendition Rendition video driver

    * xf86-video-s3 S3 video driver

    * xf86-video-s3virge S3 Virge video driver

    * xf86-video-savage savage video driver

    * xf86-video-siliconmotion siliconmotion video driver

    * xf86-video-sis SiS video driver

    * xf86-video-sisusb SiS USB video driver

    * xf86-video-tdfx tdfx video driver

    * xf86-video-trident Trident video driver

    * xf86-video-tseng tseng video driver

    * xf86-video-unichrome Unichrome video drivers

    * xf86-video-v4l v4l video driver

    * xf86-video-vesa vesa video driver

    * xf86-video-vga VGA 16 color video driver

    * xf86-video-via via video driver

    * xf86-video-vmware vmware video driver

    * xf86-video-voodoo voodoo video driver



    * 说明:vesa驱动是最通用的软图形驱动, 适用于大部分的显卡, 但没有3D加速等功能。所以如果实在无法找到合适的显卡驱动,就只好选用vesa, 理论上它应该能在任何显卡上工作。

    ************** 开源ATI显卡驱动 (radeonhd似乎已移除)***********

    5 pacman -S xf86-video-ati libgl ati-dri

    或 pacman -S xf86-video-radeonhd libgl ati-dri

    3D 工具 glxgears, glxinfo 都包含在 mesa-demos 包里。如果你需要这些工具,那就安装这个包:

    # pacman -S mesa-demos

    开源的 nouveau 适合大部分人,所以推荐使用:

    # pacman -S xf86-video-nouveau

    实验 3D 支持:

    # pacman -S nouveau-dri

    6 links(为了下载闭源驱动,不得不用它。打开后,输入最前面自己找到的闭源驱动的地址,用方向键激活“下载”按钮,回车,进入下载页面,再用方向键,激活“同意并下载”按钮,然后在links的菜单栏中,选择link,注意不是选择“Downloads”,将驱动下载下来。不能直接用下载工具下载的原因,就是因为这个“同意”二字!否则完全可以找到下载的链接后,直接用下载工具下载了!!!!)

    7 ls -a (看一下)

    8 sh ./ati*.run (sudo pacman -S kernel26-headers安装闭源显卡驱动前别忘了这个)

    ************* 守护进程和ntfs兼容 *******************

    9 pacman -S dbus hal ntfs-3g gdm fuse(先装上这几个必须要用的hal在新版中似乎没了,新守护进程为dbus)

    10 对GNOME有用的守护进程 选一个即可,新守护进程为dbus

    启动hal: /etc/rc.d/hal start

    启动fam:/etc/rc.d/fam start(使用了hal就不用fam了)

    ***将hal加入到/etc/rc.conf的DAEMONS中以使得它们随系统启动而自动运行:nano /etc/rc.conf

    ***DAEMONS=(syslog-ng dbus network crond alsa hal gdm) 加入括号内即可

    ****fuse加入/etc/rc.conf MODULES 队列中或 modprobe fuse 也可。

    让gdm启用有两种方式,一种是直接加入到/etc/rc.conf的DAEMONS的末尾;另外一种方式是用过配置inittab来加载gdm。

    ***nano /etc/inittab

    ****然后取消下面代码的注释:x:5:respawn:/usr/sbin/gdm -nodaemon

    ***************** 声音 ******************

    11 pacman -S alsa-utils alsa-oss(安装声卡的驱动)用xfce4装 xfce4-mixer

    ***为了解决Alsa声卡独占问题,可以安装alsa-oss:

    12 alsamixer (配置声卡的驱动)

    13 alsactl store(保存声卡的驱动)

    14 vi /etc/rc.conf(将alsa加到最后,使声卡能随系统启动而启动。)

    为了每次启动都可以自动恢复混音器设置,可将守护进程alsa加入到你的/etc/rc.conf中的DAEMONS列表。

    vi /etc/rc.conf

    DAEMONS=(syslog-ng network crond alsa) 加入括号内即可

    ********************** 用户帐户 ************************

    15 useradd -m 用户名(先建好,免得后面忘了)

    ***-m 以 /home/username 创建账户家目录。-g 组名或者账户初始组名。-G 一个附加的将加入的组列表。-s 账户默认 shell 的目录及文件名。 Arch Linux 的 init 脚本使用 bash

    16 passwd 用户名 (设定密码)

    17 usermod -a -m -G users,audio,video,lp,wheel,power,storage,optical,floppy,games,scanner 用户名 (添加用户到组)

    ***把你的普通用户账号加入到audio用户组中:以root身份,运行/usr/bin/gpasswd程序:

    ***gpasswd -a yourusername audio

    新版--注意命令有所区别:

    # adduser



    程序将交换方式运行,要求用户输入所需信息。下例中将创建用户archie:



    Login name for new user []: archie



    User ID ('UID') [ defaults to next available ]:



    Initial group [ users ]:



    Additional groups (comma separated) []: audio,lp,optical,storage,video,wheel,games,power,scanner



    Home directory [ /home/archie ]:



    Shell [ /bin/bash ]:



    Expiry date (YYYY-MM-DD) []:



    正如例子中所示,建议仅在Login name 和 Additional groups 输入内容,其它都留空。



    Additional groups 中的列表是桌面系统的典型选择,特别推荐给新手:



    * audio - 让任务可以调用声卡以及相关软件

    * lp - 管理打印任务

    * optical - 管理光驱相关任务

    * storage - 管理存储设备

    * video - 视频任务以及硬件加速

    * wheel - 使用 sudo

    * games - 得到那些属于游戏组的权限,比如手柄

    * power - 笔记本用户需要这个

    * scanner - 使用扫描仪



    接着会给出用户信息预览,可以取消或者继续。



    New account will be created as follows:



    ---------------------------------------

    Login name.......: archie

    UID..............: [ Next available ]

    Initial group....: users

    Additional groups: audio,lp,optical,storage,video,wheel,games,power,scanner

    Home directory...: /home/archie

    Shell............: /bin/bash

    Expiry date......: [ Never ]



    This is it... if you want to bail out, hit Control-C. Otherwise press

    ENTER to go ahead and make the account.



    按下 ENTER 后将创建账户,并提升输入新用户的附加可选信息:



    Creating new account...



    Changing the user information for archie

    Enter the new value, or press ENTER for the default

    Full Name []:

    Room Number []:

    Work Phone []:

    Home Phone []:

    Other []:



    最后,提示输入新帐号的密码:



    Enter new UNIX password:

    Retype new UNIX password:

    passwd: password updated successfully

    Account setup complete.

    新非 root 用户创建完成,同时还建立了用户主目录和登录密码。

    chmod +w /etc/sudoers

    visudo 加入 %wheel ALL=(ALL) ALL 前提是已安装sudo并已加入wheel组或直接加指定用户

    chmod 0440 /etc/sudoers

    ************************* 字体及本地化 **************************************

    18 pacman -S wqy-zenhei(先安个文泉驿正黑矢量字体为安gnome做准备)

    19 locale-gen //该命令设置中文环境为安gnome,xfce4,kde等作好准备 locale 或 locale -a 来查看,必须正确运行否则会是英文桌面且输入法会出现错误。

    /etc/locale.gen

    locale-gen 命令从 /etc/locale.gen读取信息设定系统的locales. 这些设置稍后会被glibc 和其他一些支持本地化的程序或者库用于自动翻译输出各种语言的"独特" 文本, 并且合适的显示地域、货币、时区以及日期格式, 字符排列方式和其他一些本地化的特殊标准。设置默认本地化的功能是类UNIX操作系统的一大特质

    默认情况下 /etc/locale.gen 是一个仅包含注释文档的空文件.编辑后,这个文件将不会get touched again. 每次glibc更新之后locale-gen就会运行一次, 以在/etc/locale.gen重新生成所有的本地化设置.选定你需要的本地化类型(移除前面的#即可), 比如: en_US ISO-8859-1 en_US.UTF-8

    20 vi /etc/rc.conf(改编码方式,将原来的英文en_US.UTF-8改为中文zh_CN.UTF-8,为安gnome作好准备,否则gnome安好后会是英文界面)

    *********************** 图形环境 ***************************

    特别: pacamn -S xfce4 xfce4-goodies

    21 pacman -S gnome(可选择安装,全部装也可以,安gnome3的话还需同时安gnome-extra,若是2to3还需要gnome-shell,新守护进程为dbus)



    22 pacman -S gnome-desktop gnome-panel gnome-applets gnome-backgrounds metacity gnome-settings-daemon gnome-control-center gnome-icon-theme gnome-keyring gnome-screensaver gnome-session gnome-terminal gnome-themes gnome-system-monitor yelp nautilus notification-daemon nautilus-open-terminal



    23 pacman -S gnome-system-tools system-tools-backends liboobs(几个系统的工具)

    24 pacman -S gnome-tweak-tool (gnome3显示桌面图标要用)

    25 pacman -S gnome-extra(这个可选装,只安装自己需要的,如下)

    26 pacman -S gnome-speech deskbar-applet evolution evolution-exchange evolution-webcal gconf-editor gnome-games gnome-games-extra-data gnome-power-manager gnome-system-monitor(不喜欢游戏的话,就不安games)





    ***#reboot(重启以准备下面的安装在这之前不要重启以免卡在gdm)*****



    27 pacman -S wqy-zenhei wqy-bitmapfont ibus ibus-table ibus-pinyin evince eog gedit (常用工具先安上,这里安的是拼音输入法,五笔下面安)

    ********** ibus (若不能启动请检查locale) **********

    pacman -Ss ^ibus*

    拼音: pacman -S ibus ibus-pinyin

    **** ibus-setup //设置可启动守护进程

    修改 $HOME/.bashrc 加:

    export GTK_IM_MODULE=ibus

    export XMODIFIERS=@im=ibus

    export QT_IM_MODULE=ibus

    在~/.xinitrc的首行添加ibus-daemon -x -d -r -v

    ibus五笔:

    28 cd ibus-table-chinese-1.3.0.20100527(这个是早前下载并解开的“ibus-table-chinese-1.3.0.20100527.tar.gz”包,如果你没有这个包,可以在网上去下载一个)

    29 cp wubi86.svg /usr/share/ibus-table/icons(拷贝五笔的图标到启动文件夹,有可能需要执行 chmod 777 -R *.* 给出权限)

    30 cp wubi86.db /usr/share/ibus-table/tables(拷贝五笔的编码原文件,然后将ibus重启一次,再在它的首选项中,将五笔输入法添加进去即可。)

    或安aur源 # pacman -S aspell-en ibus-table python2-pyenchant cmake //这几个是必备的,还可以顺便安些其他编译工具,然后下载编译ibus-table-chinese

    ******************** 其他软件 ****************

    31 pacman -S firefox firefox-i18n(安装中文火狐)

    32 pacman -S flashplugin(浏览器的flash插件 2011年不提供flashplugin插件了,自己到adobe去下个解压到/usr/lib/fire-3.6/plugins中 plugins没有请自建)

    33 pacman -S openoffice-base openoffice-zh-CN(Office套件,这个总得安的)

    34 pacman -S gstreamer0.10-ffmpeg gstreamer0.10-ugly gstreamer0.10-ugly-plugins gstream0.10-base-plugins gstream0.10-good-plugins gstream0.10-bad-plugins

    35 pacman -Sf mplayer smplayer (安装媒体播放器)

    36 pacman -S compiz-fusion



    ***************桌面用户到这里已经可以使用了,如无问题下面的就可以省略了。



    最后的几个步骤:

    ******创建 /etc/X11/xorg.conf(可选,安了闭源驱动也许可以省略此步,最好看一下保险些)*******

    高级用户可以手动创建他们的xorg.conf文件。一般用户可以使用程序/usr/bin/Xorg附加参数-configure来生成一个基本的配置文件;以root身份输入下面命令:

    # Xorg -configure

    这里生成的文件是/root/xorg.conf.new

    把这文件复制到 /etc/X11/:

    # cp /root/xorg.conf.new /etc/X11/xorg.conf



    安装输入设备驱动软件包(可选,如果正常就不要搞了)

    最新的X需要你为包括键盘和鼠标在内的输入设备安装驱动。查看可用输入设备驱动的完整列表:

    # pacman -Ss xf86-input | less

    对大部分用户,xf86-input-keyboard和xf86-input-mouse应该可以满足基本配置。使用pacman来为你的输入设备安装需要的驱动,例如:

    # pacman -S xf86-input-keyboard



    ****安装字体



    在安装桌面环境/窗口管理器之前,也许你会先安装些美观的字体。Dejavu和bitstream-vera都是不错的字体集。而对于网页,你还可能需要Microsoft字体。如下安装:



    pacman -S ttf-ms-fonts ttf-dejavu ttf-bitstream-vera



    对于中文字体,开源的文泉驿正黑矢量字体是不错的选择,它还内嵌了9pt-12pt的点阵宋体:



    pacman -S wqy-zenhei



    服务器:

    pacman -S apache apache-ant php php-apache php-gd php-odbc mysql



    ****美化



    如果不满足于缺省的GNOME主题和图标,那么可以安装一个不错的主题,比如murrine:



    pacman -S gtk-engine-murrine



    接着在System->Preferences->Theme里选择这个主题。



    Arch Linux也做了些不错的主题,根据你自己的审美观,选择满意的安装吧:



    # pacman -S gtk-engines gtk2-themes-collection gtk-aurora-engine gtk-candido-engine gtk-rezlooks-engin



    ****Input设备热插拔问题:请在测试X前阅读



    xorg 1.5.x版本里已经开启热插拔Input设备。

    Note: 当热插拔开启后, X将清空xorg.conf里所有使用the kbd and mouse 驱动建立的设备。这将导致X被冻结,使得鼠标和键盘失去响应。下面是解决办法。方法只能二选一



    有两个办法可以修复这一问题:



    1) 配置 input设备热插拔:安装驱动 xf86-input-evdev,同时配置HAL使其能使用kbd/mouse驱动。



    安装xf86-input-evdev:



    # pacman -S xf86-input-evdev



    在X.org相关进程启动前,启动守护进程hal:



    # /etc/rc.d/hal start



    把hal加入/etc/rc.conf里的DAEMONS列表里,这样每次电脑启动,都会自动开启hal。详情请见Xorg input hotplugging 。



    说明: 开启hal必须首先有一个dbus用户和用户组,以root身份输入下面命令创建用户和用户组



    usr/sbin/groupadd -g 81 dbus

    usr/sbin/useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus



    2) 关闭input设备热插拔:在/etc/X11/xorg.conf的ServerFlags段,加入参数Option "AutoAddDevices" "False" 这将忽略hal的硬件检测,并使用你xorg.conf的keyboard/mouse配置。步骤如下



    # nano /etc/X11/xorg.conf



    加入下面三行:



    Section "ServerFlags"

    Option "AutoAddDevices" "False"

    EndSection



    *********** 测试 X *****************



    在所生成的xorg文件路径path/to/xorg.conf前,加入参数-config ,运行 X脚本,可以测试脚本配置是否正确。对于 Xorg 7.3 或者之前的版本, 键入:



    1. Xorg -config xorg.conf.new



    X 将启动,在屏幕中央会有一个白色的 X ,鼠标或是触摸板可以移动它,按 CTRL-Alt-Backspace 可以退出 X 从 Xorg 7.4 和更高的版本开始,这个测试将显示出一个黑色的屏幕,对于判断 X11 是否能正常工作会造成一些困扰。 可以通过 retro 选项使用旧的模式:



    1. Xorg -config xorg.conf.new -retro



    如果看到黑灰的格子以及 X 型鼠标指针, 就表示配置成功了。要退出测试, 需要同时按下 Ctrl+Alt+Fn 来切换到用于启动 X 的虚拟控制台 (F1 表示第一个虚拟控制台) 之后按 Ctrl+C。

    ********* 对xorg.conf除错 *******************



    如果 X 出现错误不能运行,你需要手动检查你的配置文件:



    nano /root/xorg.conf.new



    * 确定 Xorg -configure 命令正确的识别了你的显卡,比如:



    Section "Device"



    ...



    Driver "savage"



    ...



    EndSection



    * 确定里面的 Section "Monitor" 设置了水平同步率和垂直刷新率,如果没有要把它加上:



    Section "Monitor"

    Identifier "Monitor0"

    VendorName "Monitor Vendor"

    ModelName "Monitor Model"

    HorizSync 30.0 - 130.0 # Safe for LCD's

    VertRefresh 50.0 - 100.0 # Safe for LCD's and most CRT's.

    EndSection



    如果你不知道这些刷新率到底是多少,你就得查一下你显示器的说明书。



    * 在section "Screen"配置默认色深(color depth):



    Section "Screen"

    Identifier "Screen0"

    Device "Card0"

    Monitor "Monitor0"

    DefaultDepth 24



    (此处色深被设定为真彩24色。)





    * 在subsection "Display" 加入你需要的Modes, at least under the Depth 24 header, e.g.:



    SubSection "Display"

    Viewport 0 0

    Depth 24

    Modes "1024x768" "800x600" "640x480"



    * Add the following section, if you wish to enable eye candy which requires the composite extension:



    Section "Extensions"

    Option "Composite" "Enable"

    EndSection



    * 上述调整完成后,再测试你的配置:



    X -config /root/xorg.conf.new



    * 在确认 X session开启,没有错误之后,把测试好的配置文件移到 /etc/X11下,作为系统的xorg.conf配置文件:



    mv /root/xorg.conf.new /etc/X11/xorg.conf



    ******简要设置CPU频率**************** 现在的处理器都能够降低频率和电压,以降温和降低电源消耗。降温能使系统更稳定,笔记本用户肯定是想这样做的,但是即使是台式机也会对系统有利。 安装CPU频率工具用:

    pacman -S cpufrequtils

    把CPU频率在/etc/rc.conf里加入到启动进程(daemons)中。编辑配置文件



    /etc/conf.d/cpufreq改

    governor="conservative"

    这使得在需要的情况下可以动态地增减CPU频率(这是对于台式机来说也是一个安全的选择)。改变最小频率(min_freq)和最大频率 (max_freq)以匹配你的CPU的情况。如果你不知道频率,在载入频率测量模块后运行“cpufreq-info”。你也可以将min_freq和 max_freq注释掉或删除,这样就能自动进行。加入频率测量模块到/etc/rc.conf的模块行。几乎所有的笔记本和台式机都可以简单地使用acpi-cpufreq驱动,但是也有其它的选择,如:

    p4-clockmod, powernow-k6, powernow-k7, powernow-k8, and speedstep-centrino。

    通过下面这个命令载入这个模块:

    modprobe

    通过下面命令行开启cpufreq:

    /etc/rc.d/cpufreq start





    ******** 较详细的CPU频率调整设置 ******

    ***概要



    Cpufrequtils 用于自动/手动调节 CPU 频率,主要用于笔记本等对电池和温度要求较高的领域,cpufrequtils能够根据系统负载和(或者)电源管理方案自动调节cpu频率。例如,CPU 频率调节可以在笔记本电脑使用电池工作时,将 2Ghz 的处理器降低到 1Ghz 来延长续航时间,减少发热和减少风扇噪音。

    若与 Pm-utils 一起使用,可以提供一套完整的电源管理功能。

    注意:cpufrequtils和 powernowd 是不一样的, cpufrequtils用于调节cpu频率,而powernowd 用于自动/手动调节cpu电压。两者配合,可以最大化节能/最大化降温,但会因此牺牲cpu的整体性能。



    *************注意:cpufreqtuils 和cpufreqd(能同时调节cpu频率和电压)是不一样的东西,两者相互冲突,所以不要同时运行他们。************************************



    ********安装



    Cpufrequtils 软件包可以从 Extra 软件源得到:



    # pacman -S cpufrequtils



    ******* 设置 *********



    设置 CPU 频率调节需要三步:



    1. 加载合适的 CPU 频率调节驱动程序

    2. 加载需要的调速器

    3. 设置并加载 CPU 频率调节守护进程 (可选)



    CPU 频率调节驱动程序



    要使频率调节正常工作,操作系统必须知道您的 CPU 所具有的一些限制,为此,可以加载一个能读取、管理您的 CPU 规格的内核驱动。



    大部分较新的笔记本电脑可以简单地使用 acpi-cpufreq 驱动,其他选项包括 p4-clockmod, powernow-k6, powernow-k7, powernow-k8, 和 speedstep-centrino 驱动。



    手动加载 CPU 频率调节驱动:



    # modprobe acpi-cpufreq



    若要自动加载驱动,将合适的驱动添加到 /etc/rc.conf 的 MODULES 列,如:



    MODULES=( acpi-cpufreq vboxdrv fuse fglrx iwl3945 ... )



    加载合适的 cpufreq 驱动后,您可以用一下命令来查看您的 CPU 的详细信息:



    $ cpufreq-info



    调速器 (CPU 电源方案)



    调速器可以被看作是预先设置好的 CPU 电源方案,它们必须被作为内核模块加载才能够被 kpowersave 和 gnome-power-manager 之类的程序识别。您可以加载多个调速器,但是在同一时间您只能激活一个。



    可用的调速器:



    * performance (默认) -- Performance 调速器使 CPU 运行在最高频率,它已经被编译进内核。

    * cpufreq_ondemand (推荐使用) -- 根据系统负载动态调节 CPU 频率。

    * cpufreq_conservative -- 与 ondemand 相似但更为保守 (clock speed changes are more graceful)

    * cpufreq_powersave (节能模式) -- 使 CPU 运行在最低频率。

    * cpufreq_userspace (手动模式)-- 由用户手动选择 CPU 频率。



    将需要的调速器加入 /etc/rc.conf 的 MODULES 列:



    MODULES=(acpi-cpufreq cpufreq_ondemand cpufreq_powersave vboxdrv fuse fglrx iwl3945 ... )



    作为选择,您可以以 root 执行 cpufreq-set 命令来手动设置调速器,但这在关机或重启后不会保存。如:



    # cpufreq-set -g ondemand



    运行 cpufreq-set --help 或者 man cpufreq-set 来获得更多信息。



    添加cpu监视器监视cpu频率的系统就有,右键单击面板,选择“添加到面板”,里面找到“cpu频率范围监视器”。另外,如果嫌命令行麻烦,可以这么做代码:



    # sudo chmod +s /usr/bin/cpufreq-selector



    然后,cpu频率范围监视器的首选项里就会多出一个“频率选择器”,显示菜单选择“频率和调速器”。鼠标左键单击cpu频率范围监视器,会发现“频率”和“调速器”两个菜单,就可以随便调了

    守护进程



    cpufrequtils 也安装了一个守护进程,可以在启动系统的时候就设置调速器和 CPU 的最高、最低频率,而不需要额外的如 kpowersave 之类的程序。这对于运行轻量级桌面,如 Openbox 的人来说是一个完善的解决方案。



    在启动守护进程之前,以 root 编辑 /etc/conf.d/cpufreq,选择需要的调速器并且设置 CPU 的最高、最低频率,例如:



    #configuration for cpufreq control

    # valid governors:

    # ondemand, performance, powersave,

    # conservative, userspace

    governor="ondemand"



    # valid suffixes: Hz, kHz (default), MHz, GHz, THz

    min_freq="1GHz"

    max_freq="2GHz"



    注意: 精确的 min/max 数值可以由运行 cpufreq-info 查看 (在加载 CPU 驱动之后,如 modprobe acpi-cpufreq)。不过,这是可选的,您可以将它们完全忽略,例如删除或者注释这两行,这样它将会自动工作。



    设置好配置文件后,可以运行以下命令来启动守护进程:



    # /etc/rc.d/cpufreq start



    若要在启动系统时自动加载守护进程,将 cpufreq 加到 /etc/rc.conf 的 DAEMONS 列,如:



    DAEMONS=(syslog-ng hal cpufreq dhcdbd networkmanager !network !netfs @alsa @crond @cups @fam @ntpd @sshd)



    KDE: pacman -S kde kde-l10n-zh_cn

  14. okzokz123 于 2011-12-16 18:53:20发表:

    [i=s] 本帖最后由 okzokz123 于 2012-9-20 11:57 编辑 [/i]

    *************************** iptables详解 ************************
    真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤 的内部结构。
    IPTABLE 分INPUT OUTPUT FORWORD PREROUTING POSTROUTING (链)
    规则链:
    1. INPUT----进来的数据包应用此规则链中的策略。
    2. OUTPUT----外出的数据包应用此规则链中的策略。
    3. FORWARD----转发数据包时应用此规则链中的策略。
    4. PREROUTING----对数据包作路由选择前应用此链中的规则。(所有的数据包进来的时侯都先由这个链处理)
    5. POSTROUTING----对数据包作路由选择后应用此链中的规则。(所有的数据包出来的时侯都先由这个链处理)
    规则表:
    (1) filter表----三个链:INPUT、FORWARD、OUTPUT
    作用:过滤数据包。内核模块:iptables_filter。
    (2) nat表----三个链:PREROUTING、POSTROUTING、OUTPUT
    作用:用于网络地址转换(IP、端口)。内核模块:iptable_nat。
    (3) mangle表----五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
    作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS。内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
    (4) raw表----两个链:OUTPUT、PREROUTING
    作用:决定数据包是否被状态跟踪机制处理。内核模块:iptable_raw。
    iptables传输数据包的过程
    1.当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
    2.如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
    3.如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。


    规则表之间的优先顺序: raw----mangle----nat----filter
    规则链之间的优先顺序 :
    第一种情况:入站数据流向
    从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。第二冲情况:转发数据流向
    来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。
    第三种情况:出站数据流向
    防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

    防火墙处理数据包的四种方式:
    1. ACCEPT 允许数据包通过。
    2. DROP 直接丢弃数据包,不给任何回应信息。
    3. REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
    4. LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。

    一.基本格式
    iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
    常用命令选项如下:
    -A 【append】 在指定的连的结尾添加规则
    -D 【delete】删除指定连中的规则,可以按规则号或规则内容匹配
    -I 【insert】插入一条新规则,默认是在最前面
    -R 【replace】 替换某一条规则
    -L 【list】列出所有规则
    -F 【flush】清空所有规则
    -N 【new】自定义一条规则连
    -X 【--delete-chain】 删除用户自定义规则连
    -P 【policy】设置默认策略
    -n 【numeric】以数字方式显示,如:显示ip,但不显示主机名
    -v 【verbose】显示详细信息
    -V 【version】查看iptable的版本信息
    --line-number 查看规则连是,显示列表号
    -Z 清空计数器值
    ***
    -t 加表
    -j 操作行为
    --to-source SNAT用,表示改成的SNAT源地址
    --to-destination DNAT用,表示改成的DANT目标地址
    -p 跟协议 protocol 指出要匹配的协议,可以是tcp, udp, icmp, all, 前缀!为逻辑非,表示除该协议外的所有协议.
    -s 源IP address[/mask] 指定源地址或者地址范围.
    -sport 指定源端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名字.
    -d 目标IP address[/mask] 指定目的地址或者地址范围.
    -dport 指定目的端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名字.
    -icmp-type 指定匹配规则的ICMP信息类型(可以使用 iptables -p icmp -h 查看有效的ICMP类型名)
    -i 匹配单独或某种类型的接口,此参数忽略时,默认符合所有接口,接口可以使用"!"来匹配捕食指定接口来的包.参数interface是接口名,如 eth0, eht1, ppp0等,指定一个目前不存在的接口是完全合法的,规则直到接口工作时才起作用,折中指定对于PPP等类似连接是非常有用的."+"表示匹配所有此类型接口.该选项只针对于INPUT,FORWARD和PREROUTING链是合法的.
    -o 匹配规则的对外网络接口,该选项只针对于OUTPUT,FORWARD,POSTROUTING链是合法的.
    --syn 仅仅匹配设置了SYN位, 清除了ACK, FIN位的TCP包. 这些包表示请求初始化的TCP连接.阻止从接口来的这样的包将会阻止外来的TCP连接请求.但输出的TCP连接请求将不受影响.这个参数仅仅当协议类型设置为了TCP才能使用. 此参数可以使用"!"标志匹配已存在的返回包,一般用于限制网络流量,即只允许已有的,向外发送的连接所返回的包.
    二.举例
    # iptable -t filter -F【清空filter表中所有规则】
    # iptable -t filter -Z【清空filter表中的计数器值】
    #iptable -t filter -X 【清除filter表中自定义连】
    # iptable -t filter -P INPUT DROP 【设置INPUT连默认策略为DROP】
    # iptable -t filter -P OUTPUT DROP
    # iptable -t filter -P FORWROD DROP
    # iptable -t filter -A INPUT -p tcp -j ACCEPT 【在INPUT连最后添加一条允许tcp协议的数据包进入的规则】
    # iptable -t filter -R INPUT 1 -p tcp -j DROP 【替换INPUT连的第1条规则为拒绝tcp数据包进入】
    # iptable -t nat -vnL --line-number 【以详细的、数字的格式列出nat表中的所有规则】
    # iptable -t nat -D POSTROUTING 1 【删除nat表POSTROUTING 连中的第1条规则】

    三.条件匹配
    1. 协议匹配:用于检查数据包使用的协议,符合规则就允许,反之拒绝。允许使用的协议名在/etc/protocols文件中。
    常用的协议有tcp,udp,icmp,ip 和all。 [-p 协议名 ]
    # iptable -I INPUT -p icmp -j REJECT //拒绝进入防火墙本身的icmp数据包
    # iptable -A FORWARD -p udp -j ACCEPT //允许转发udp的所有数据包
    2. 地址匹配:用于检查数据包的地址是否符合规则,包括源地址和目的地址。[-s 源地址, -d 目的地址]
    # iptable -A FORWARD -s 10.0.0.0/8 -j DROP //拒绝转发来自10.0.0.0/8 网段的数据包
    # iptable -A FORWARD -d 80.0.0.0/8 -j DROP //拒绝转发目的是80.0.0.0/8 网段的数据包

    3.端口匹配:用于检查数据包的tcp或udp端口,需要和 “-p 协议类型” 一起使用[-sport 源端口,-dport 目的端口]
    # iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT //允许转发来自10.0.0.0/8网段,目的端口是80的数据包
    # iptables -I FORWARD -s 10.0.0.0/8 -p tcp --sport 21 -j ACCEPT //允许转发来自10.0.0.0/8网段,源端口是21的数据包

    4.接口匹配:用于检查数据包从防火墙那个接口进入或出去,来判断是否允许。
    # iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT //允许转发从eth0进入,来自10.0.0.0/8网段,使用tcp 协议,目的端口椒80的数据包
    # iptables -A INPUT -i eth0 -s 80.0.0.0/8 -j DORP  //拒绝从eth0进入,来自80.0.0.0/8的数据包

    5.SNAT转换:一般linux充当网关服务器时使用
    SNAT只能用在nat表的POSTROUTING连,用于对源地址进行转换。要结合 --to 使用。
    # iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to 202.106.1.1 //将来自10.0.0.0/8网段的所有数据包的源地址转为202.106.1.1
    # iptables -t nat -A POSTROUTING -i eth0 -s 80.0.0.0/8 -p tcp --dport 25 -j SNAT --to 202.106.1.1 //将来自eth0接口,10.0.0.0/8网段,目的端口25,tcp协议的数据包的源地址转为202.106.1.1

    6.DNAT转换:只能用在nat表中的PREROUTING连,用于对目的地址或端口进行转换。
    # iptables -t nat -A PREROUTING -i eth1 -d 202.106.1.1 -p tcp --dport 80 -j DNAT --to 10.0.0.10 //将从eth1 进入,目的地址是202.106.1.1,使用tcp 协议,目的端口是80的数据包的目的地址转为10.0.0.1

    7.MASQUERADE:伪装,是SNAT的特例。
    # iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE //将来自10.0.0.0/8网段,从eth1出去的数据包的源地址伪装为eth1接口地址


    四.拓展模块
    1.按来源MAC地址匹配
    # iptables -t filter -A FORWARD -m --mac-source 00:02:b2:03:a5:f6 -j DROP //拒绝转发来自该MAC地址的数据包
    2.按多端口或连续端口匹配
    20: 表示20以后的所有端口
    20:100 表示20到100的端口
    :20 表示20之前的所有端口
    -m multiport [--prots, --sports,--dports]
    # iptables -A INPUT -p tcp -m multiport --dports 21,20,25,53,80 -j ACCEPT //多端口匹配
    # iptables -A INPUT -p tcp -dport 20: -j ACCEPT
    # iptables -A INPUT -p tcp -sport 20:80 -j ACCEPT
    # iptables -A INPUT -p tcp -sport :80 -j ACCEPT
    3.还可以按数据包速率和状态匹配
    -m limit --limit 匹配速率 如: -m limit --limit 50/s -j ACCEPT
    -m state --state 状态 如: -m state --state INVALID,RELATED -j ACCEPT

    *****************************************************
    1. 使用拨号带动局域网上网
    小型企业、网吧等多使用拨号网络上网,通常可能使用代理,但是考虑到成本、对协议的支持等因素,建议使用ip欺骗方式带动区域网上网。
    成功升级内核后安装iptables,然后执行以下脚本:
    #载入相关模块
    modprobe ip_tables
    modprobe ip_nat_ftp
    #进行ip伪装
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    2. ip映射
    假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息。我们可以再防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
    我们假设以下情景:
    该ISP分配给A单位www服务器的ip为:伪ip:192.168.1.100 真实ip:202.110.123.100
    该ISP分配给B单位www服务器的ip为:伪ip:192.168.1.200 真实ip:202.110.123.200
    linux防火墙的ip地址分别为:
    内网接口eth1:192.168.1.1
    外网接口eth0:202.110.123.1
    然后我们将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:
    ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0
    ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0
    成功升级内核后安装iptables,然后执行以下脚本:
    #载入相关模块
    modprobe ip_tables
    modprobe ip_nat_ftp
    首先,对防火墙接收到的目的ip为202.110.123.100和202.110.123.200的所有数据包进行目的NAT(DNAT):
    iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT --to 192.168.1.100
    iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT --to 192.168.1.200
    其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):
    iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT --to 202.110.123.100
    iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT --to 202.110.123.200

    这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100和 192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分别被伪装成由 202.110.123.100和202.110.123.200,从而也就实现了ip映射。
    **************************************************************
    iptables -t nat -A POSTROUTING -s 内网地址网段 -o 外网接口 -j SNAT --to-source 外网接口地址

    还有你做了映射后 你应该可以访问外面的web了 如果你只允许内网访问外网的某些特定服务的话 为了安全你得把 filter的 FORWARD 链的默认规则改成DROP
    具体是
    iptables -P FORWARD DROP
    然后
    允许dhcp的包通过
    iptables -A FORWARD -s 内网地址 -o 外网接口 -p udp --dport 67 -j ACCEPT
    iptables -A FORWARD -s 内网地址 -o 外网接口 -p udp --dport 68 -j ACCEPT
    iptables -A FORWARD -i 外网接口 -p udp --sport 67 -j ACCEPT
    iptables -A FORWARD -i 外网接口 -p udp --sport 68 -j ACCEPT
    允许服务端口出去 和允许服务端口进来
    如果你要添加别的服务出去的话你只要改 -p 和 -dport(出的) sport(进的)
    ******************** 实例(单网卡多IP已验证) ********************
    1. 开启IP转发 (双网卡eth0接internat eth1接net)
    两种方式,
    临时:echo "1">/proc/sys/net/ipv4/ip_forward
    固定:修改/etc/sysctl.conf,取消注释 net.ipv4.ip_forward= 1
    然后使之立即生效 sysctl -p
    2. 设置iptables规则
    临时:iptables -t nat -A POSTROUTING -j MASQUERADE
    固定:把上面这个写到一个启动脚本中(比如/etc/rc.local)。
    或者:
    iptables -F //清除掉之前所有的iptables规则
    iptables -P INPUT ACCEPT //允许接收数据包
    iptables -P FORWARD ACCEPT 允许接收发送数据包
    iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth1 -j MASQUERADE //在eth1网卡上NAT
    **掩码:1111 1111.1111 1111.1111 1111.0000 0000,采用十进制的形式为:255.255.255.0 即24
    3. 客户端(发送)设置
    将缺省网关设置为192.168.0.1,至于IP,192.168.0.*自己随便设。
    利用iptables可以方便的架设一台网关。如果eth0连接的是外部网络,而eth1连接的是局域网(192.168.0.0/24),假设在外部网络上,本机的IP为202.113.13.91,我们只需要一条命令,就可以使得局域网内部的所有主机都可以通过本机访问外部网络。
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 202.113.13.91
    该脚本实际上是向nat表的POSTROUTING链增加了一条SNAT规则,对于所有来自局域网的需要转发的数据包,将其源地址伪装成本机IP,向外部网络发送。这样便实现了局域网网关的功能。
    Ps:单网卡多ip转发
    #!/bin/bash
    iptables -F
    iptables -F -t nat
    ifconfig eth0:1 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0
    echo "1" > /proc/sys/net/ipv4/ip_forward
    #iptables -P FORWARD DROP //1安全考量
    #iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT //2开放网段
    #iptables -A FORWARD -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT //3开放接口,这三条可以不加直接使用下面的命令,若要加则需要指定相同的ppp0接口.
    #下面的命令选一即可
    #iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to <外网IP> //debian不加接口类型可行,或指定为ppp0(可不加上面三条而单独指定接口)
    #iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE //debian不加接口类型可行,或指定为ppp0(可不加上面三条而单独指定接口)
    4.接收端设置
    IP:192.168.0.xxx
    网关:192.168.0.1(上面设的内网IP)
    DNS与服务端相同或自己另设。
    5.桥接转发解:
    在主机上创建一个网络桥
    1.安装bridge-utils
    sudo apt-get install bridge-utils uml-utilities (bridge-utils用来做桥接,uml-utilities用来虚拟网卡)
    2.我们将改变网络设置,先停止网络 invoke-rc.d stop
    sudo /etc/init.d/networking stop
    3. sudo gedit /etc/network/interfaces 可以直接用下面的替换。
    #****adsl用pppoeconf拨号配置
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual #可以为dhcp,指定ip亦可,这里使用默认配置

    auto tap0
    iface tap0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user kk

    auto br0
    iface br0 inet static #这里也可以使用dhcp分配
    bridge_ports eth0 tap0 #多tap这里要逐个加上
    address 192.168.1.6
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    auto dsl-provider
    iface dsl-provider inet ppp
    pre-up /sbin/ifconfig br0 up # line maintained by pppoeconf ##注意这行不再是eth0而是br0,和直接用pppoeconf连adsl是不同的
    provider dsl-provider

    #****局网内KVM桥接配置,不必安装pppoeconf和network-manager
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual

    auto tap0
    iface tap0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user kk


    auto br0
    iface br0 inet dhcp //dhcp模式
    bridge_ports eth0 tap0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    auto br0
    iface br0 inet static //静态IP模式
    address 192.168.0.10
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    bridge_ports eth0 //若要桥接多个网卡,这里加上
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    注1:tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。
    注2:虚拟机中转发的IP设为br0的网关IP即可。
    注3:如果用户未加入uml-net组,则会遇到could not open /dev/net/tun: no virtual network emulation这是无/dev/net/tun读写权限造成的,如无tun.ko则编译内核。make menuconfig选择network device support->universal TUN/TAP device driver support;dummy network driver support;bonding driver support(同时设为M);若ls /dev/net/tun有返回信息则 sudo chmod o+rw(或0666) /dev/net/tun。 另外主机中再分配一个有线连接来实现转发的接收 sudo ifconfig eth0:1 192.168.1.8 broadcast 192.168.1.255 netmask 255.255.255.0即可。若已加入uml-net组则由br0实现分发,tap0桥入虚拟机,eth0可接收虚拟机转发。
    注4:客机中要设转发IP为br0指定的网关。
    4.启动tap和br0
    sudo /sbin/ifup tap0
    sudo /sbin/ifup br0
    如果没有eth0和lo的话需要重启网络
    sudo /etc/init.d/networking restart

    ################ VPN #################
    一:pptp
    pptp是通过点到点的方式连接到服务器,所以pptp依赖ppp软件包。
    #######客户端使用VPN(pptp-linux)
    1. sudo apt-get install pptp-linux //安装vpn包

    2.创建连接
    sudo pptpsetup --create yes --server f.vaone.info --username okzokzyes --password bxo3ks --encrypt --start
    其中,
    --create后的是创建的连接名称,可以为任意名称;
    --server后接的是vpn服务器的IP;
    --username是用户名
    --password是密码,在这也可以没这个参数,命令稍后会自动询问。这样可以保证账号安全
    --encrypt 是表示需要加密,不必指定加密方式,命令会读取配置文件中的加密方式
    --start是表示创建连接完后马上连接,如果你不想连,就不写

    3. 连上vpn
    如果刚才你没有输入--start选项或者是下次再想连接时,输入:
    sudo pon yes

    4. 中断vpn连接
    sudo poff yes

    @@@@@@ 注意事项:
    在处理路由的时候采用client to lan方式,需要增加对方lan的路由或者目标网络的路由.

    route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
    或: route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.1
    另可加:
    sudo ip ro ad 184.82.64.15 via 192.168.0.1
    注意: 192.168.0.1 为我的局域网内的路由器的IP, 184.82.64.15 是VPN服务器的IP

    *******需要注意的几个文件:
    /etc/ppp/chap-secrets // 定义用户密码连接IP等
    /etc/ppp/peers/yes // 这是自己命名的,或由pptpsetup创建的拨号控制文件
    /etc/ppp/optinons.pptp // 加密方式控制
    解:
    1. sudo nano /etc/ppp/chap-secrets //添加用于登陆的账户,四段式格式如下:
    用户名 pptpd "密码" *
    或: sudo echo 用户名 pptpd "密码" * >> /etc/ppp/chap-secrets
    okzokzyes yes "bxo3ks" *
    okzokzyes和bxo3ks分别为用户名和密码,yes为连接名称。最后一项代表希望获得的IP,*表示任意IP都行

    2. 创建文件/etc/ppp/peers/yes 内容如下:
    pty "pptp f.vaone.info --nolaunchpppd"
    lock
    noauth
    nobsdcomp
    nodeflate
    name okzokzyes
    remotename yes
    ipparam yes
    require-mppe-128

    #文件中每行的含义,可以在/etc/ppp/options.pptp中查看

    (3)连接和断开
    sudo pon yes
    sudo poff yes

    ########搭建VPN-pptpd服务器
    1. sudo apt-get install pptpd //安装PPTPD

    2. sudo nano /etc/pptpd.conf //编辑pptpd.conf文件,取消下面内容的注释
    option /etc/ppp/pptpd-options
    localip 192.168.2.1 //localip是 VPN 服务器 IP,可任意指定
    remoteip 192.168.1.234-238,192.168.1.245 //remoteip是可分配给 vpn 客户端 IP;为避免冲突,localip、remoteip 最好不要与服务器当前内网或经常拨入的客户端内网地址在同一网段

    3.sudo nano /etc/ppp/chap-secrets //添加用于登陆的账户,四段式格式如下:
    用户名 pptpd "密码" *
    或: sudo echo 用户名 pptpd "密码" * >> /etc/ppp/chap-secrets

    密码需要用英文双引号
    星号(*)代表允许接入的ip可以是任意ip。

    4. sudo nano /etc/ppp/pptpd-options //设置DNS解析,编辑pptpd-options文件

    找到ms-dns,取消掉注释,并修改DNS地址,这里我推荐大家用Google DNS 8.8.8.8 和 8.8.4.4
    如:
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4

    一些注释:
    name pptpd(pptpd服务名,可以随便填写。)
    refuse-pap(拒绝pap身份认证模式。)
    refuse-chap(拒绝chap身份认证模式。)
    refuse-mschap(拒绝mschap身份认证模式。)
    require-mschap-v2(在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。)
    require-mppe-128(MPPE 模块使用 128 位加密。)
    ms-dns 8.8.8.8 (ppp 为 Windows 客户端提供 DNS 服务器 IP 地址。)
    proxyarp (建立 ARP 代理键值。)
    nodefaultroute(不替换默认路由)
    debug(开启调试模式,相关信息记录在 /var/logs/message 中。)
    lock(锁定客户端 PTY 设备文件。)
    nobsdcomp (禁用 BSD 压缩模式。)

    5. sudo nano /etc/sysctl.conf //开启ip转发,取消注释以下内容
    net.ipv4.ip_forward=1
    或手动 sudo echo 1 > /proc/sys/net/ipv4/ip_forward


    6. apt-get install iptables
    iptables -t nat -I POSTROUTING -j MASQUERADE //安装iptables并设置转发

    7. sudo /etc/init.d/pptpd restart //重新启动服务

    二:l2tp
    (1) 安装xl2tpd
    sudo apt-get install xl2tpd

    (2) 修改 sudo gedit /etc/xl2tpd/xl2tpd.conf, 内容如下

    [lac okzokzyes]
    lns = 184.82.64.15
    ppp debug = yes
    pppoptfile = /etc/ppp/options.l2tpd.client
    length bit = yes

    修改184.82.64.15 为你自己的l2tp vpn服务器的Ip地址

    (3) 还需要建立一个/etc/ppp/options.l2tpd.client
    sudo gedit /etc/ppp/options.l2tpd.client 内容如下:

    ipcp-accept-local
    ipcp-accept-remote
    refuse-eap
    require-mschap-v2
    noccp
    noauth
    idle 1800
    mtu 1410
    mru 1410
    defaultroute
    replacedefaultroute
    usepeerdns
    debug
    lock
    connect-delay 5000
    name my_user
    password my_pass

    修改myuser和mypass为实际的用户名和密码

    配置说明
    defaultroute 添加一条默认路由记录到系统路由表, 使用拨号服务器的内网IP作为网关
    replacedefaultroute 代替默认的路由记录, 默认的数据都从VPN通路走
    usepeerdns 使用VPN拨号提供的DNS服务
    mru 最大接收单元, 对于VPN, 设置为1410 mru范围在128-1500,
    因为以太网的mru/mtu是1518 , 以太网的UDP包最大是 1472, L2TP包1460 , L2TP上的TCP包为1420
    请参看此文 http://huangdonghai.com/pptp-over-pppoe-mtu/

    lock 应该在此串口上使用UUCP式的锁定以确 定对该设备为互斥(exclusive)存取。 防止别的程序写程序到这个串口,干扰PPP连接
    noccp 禁止Compression Control Protocol 压缩控制协议的协商

    noauth 不要求对方认证自己 (对客户端要设置这个选项, 对服务端,应该配置auth,要求客户端来认证自己), 并且Windows VPN服务器不会认证自己
    crtscts 串口硬件流量控制, 显然在VPN拨号中不应该使用

    ipcp-accept-local pppd将会接受彼端对於本地IP位址 的意见,即使本地的IP位址已经在某个选项中指定。
    ipcp-accept-remote pppd将会接受彼端对於它的IP位址 的意见,即使远端的IP位址已经在某个选项中指定。
    对于客户端, IPCP的这两个选项是必要的

    refuse-eap 拒绝使用eap, 因为windows VPN服务器在对客户端进行认证时, 会首先使用EAP
    proxyarp 以对方的IP位址以及该系统的以太网路地址, 增加一个条目到系统的ARP. 这样就让VPN中的内网地址,暴露在本地局域网内,这是不必要的

    (4) 添加一条到你的VPN服务器的路由
    sudo ip ro ad 184.82.64.15 via 192.168.0.1
    注意: 192.168.0.1 为我的局域网内的路由器的IP, 184.82.64.15 是VPN服务器的IP

    如果在配置中没有replacedefaultroute, 或许需要添加
    route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0

    (5) 重启xl2tp服务
    /etc/rc2.d/S20xl2tpd restart (有可能是 S18xl2tpd 根据实际调整)
    或者
    invoke-rc.d xl2tpd restart

    (6)连接到指定lac

    echo 'c okzokzyes' > /var/run/xl2tpd/l2tp-control

    注意, okzokzyes就是/etc/xl2tpd/xl2tpd.conf中配置的lac名字

    (7) 关闭l2tp连接

    echo "d okzokzyes" > /var/run/xl2tpd/l2tp-control

    单引号-----目的:为了保护文字不被转换.除了他本身. 就是说除去单引号外, 在单引号内的所有文字都是原样输出
    双引号-----目的:为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.
    反引号-----目的:是为了在双引号内保持函数转换. 但单引号内其无作用.
    ***************** aria2 *******************
    aria2:支持http(s)/ftp/BitTorrent/Metalink五种协议 man aria2c

    典型用法:
    *** aria2c http://AAA/file.zip 普通下载

    *** aria2c http://AAA/file.metalink 或 aria2c -j2 file1.metalink file2.metalink 从metalink下载文件

    *** aria2c --select-file=1-4,8 file.metalink 在metalink中选择文件下载

    *** aria2c --metalink-location=jp,us --metalink-version=1.1 --metalink-language=en-US file.metalink 指定地区版本和语言

    *** aria2c -s 2 http://AAA/file.zip 开2个线程下载

    *** aria2c "http://host/file.zip" "http://mirror/file.zip" 从2个不同的HTTP服务器下载文件

    *** aria2c "http://host1/file.zip" "ftp://host2/file.zip" 支持不同的协议从不同的地址下载同一文件

    *** aria2c -s 2 "http://AAA/image.iso" "http://BBB/image.iso" "http://CCC/image.iso" -s 2 参数表示使用 2 个线程分别从2个镜像下载 image.iso 文件, 第三个链接由于超过进程数,所以作为备用链接。 -s 默认5

    *** aria2c -i files.txt 表示从 files.txt 中获取下载链接进行下载, files.txt 中可以包含多个链接。

    *** aria2c http://site/file.torrent 从远程获取 bt 种子并进行 bt 下载。

    *** aria2c -T test.torrent "http://host1/file" "ftp://host2/file" 用http ftp torrent同时下一个文件

    *** aria2c -o BBB.torrent http://AAA/file.torrent 下载BT种子为BBB.torrent

    *** aria2c --max-upload-limit=60K -T file.torrent BT下载并设定BT最大上传速度

    *** aria2c -c http://AAA/file.iso

    *** aria2c -c -s 10 -j 10 -i file.list
    -T 指定.torrent文件的路径 ;-d 指定下载目录; -c 断点续传 ; -o 输出文件 ; -j 最大并行下载数。
    --max-upload-limit=SPEED 限制单个torrent上传速度;
    --max-overall-upload-limit=SPEED 限制总体上传速度;
    --metalink-location=地区 指定地区如:us ua cn tw kr nl fr il de gb dk ca

    例:
    1. mkdir ubuntu1060.4 && cd ubuntu10.4
    2. wget http://mirrors.163.com/ubuntu-releases/10.04.2/ubuntu-10.04.2-desktop-amd64.metalink
    3. cat ubuntu-10.04.2-desktop-amd64.metalink
    4. aria2c --metalink-location=地区 -M ubuntu-10.04.2-desktop-amd64.metalink
    或直接 aria2c -s 10 -j 10 http://mirrors.163.com/ubuntu-releases/10.04.2/ubuntu-10.04.2-desktop-amd64.metalink

    ~/.aria2/aria2.conf 的一些配置内容
    # sample configuration file for aria2c
    file-allocation=prealloc
    listen-port=6885
    seed-ratio=2.0
    max-download-limit=300K
    max-upload-limit=60K
    enable-dht=true
    enable-dht6=true
    dht-listen-port=60000
    dir=/home/kk/下载/
    bt-hash-check-seed=true
    enable-peer-exchange=true


    **************** zsync *****************
    类似jigdo但只支持http协议
    例:
    zsync -i /绝对路径或在目录中执行/ubuntu-10.04-dvd-amd64.iso http://mirrors.163.com/ubuntu-releases/10.04.2/ubuntu-10.04.2-desktop-amd64.iso.zsync
    ******目录中要有原始文件以做校对******
    zsync -i ubuntu-10.04-dvd-amd64.iso http://mirrors.163.com/ubuntu-releases/10.04.2/ubuntu-10.04.2-desktop-amd64.iso.zsync
    (desktop为cd版 国内很多都是cd镜像 镜像升级了版本 却成了cd版 国外有完整镜像 速度.....)


    **************** 加最快源(国内源最快) *******************
    系统自带的debian源是固定的,象debian这样依赖网络的操作系统,无论你是在中国,还是在美国,都是一个系统提供的,这当然不合理,所以我们就来找到适合自己,快速稳定的安装源,apt-spy他就是我们今天的主角,下面就看看具体的实现过程吧!
    系统安装好后,先运行apt-get update
    然后安装apt-spy
    #apt-get install apt-spy
    最后用
    #apt-spy -d stable -a asia -t 5
    命令行中的-d选项指定发行版本,如stable、testing、unstable。
    -a选项指定debian安装源服务器的区域,如asia、Europe、North-America等。
    这些区域信息保存在/etc/apt-spy.conf文档中,如果要测试所有服务器,还可用ALL关健字代替具体的区域。
    -t选项指定连接超时阀值,阀值以秒为单位,设置较小的阀值能有效提高测试速度,忽略慢速服务器。
    ***********应用前先备份
    测试完成后,apt-spy会自动创建/etc/apt/sources.list.d文件夹,并在里面创建apt-spy.list文件。
    所以把apt-spy.list拷贝到/etc/apt/sources.list文件,就能把寻找到的源使用了,记得要备份你原来的sources.list文件。
    随后就可以用apt-get update来更新镜像站点
    这样,我们以后安装软件就很快了! **************************

    附: apt-spy [options]
    选项:
    -d distribution 选择 debian 的发行版本,例如 stable 。除升级外,必须使用此参数。
    -a area 选择进行测试的区域,例如 Aisa 。
    -c config 指定配置文件。
    -e number 指定测试的服务器数量。
    -f file 测试时抓取制定的文件(文件相对 debian base 的路径)。
    -i file 指定输入的文件,配合 -w 参数使用。
    -m mirror-list 指定要升级的镜像列表文件。
    -o output-file 重定向输出到指定文件。
    -p proxy 指定使用的代理服务器,需要遵从 [server]:[port] 的格式。
    -s country_list 指定要进行测试的国家。不能和 -a 参数同时使用。
    -t time 指定进行测试时每台服务器的超时时间,只能是正整数。
    -u update-URL 从指定的 URL 获得镜像列表更新。
    -w file 输出 -i 参数提供的服务器列表中速度最快的前几台镜像服务器(缺省是前 5 台)。
    -n number 制定 -w 参数输出的服务器数量。
    -v 输出版本信息。
    -h 输出当前帮助信息

    ************************备份制作本地源************************
    一:制作本地源:
    所有从软件仓库中安装的软件包都会在本地的/var/cache/apt/archives 目录下缓存。而且每次安装完Ubuntu,重新上网安装软件包是个非常麻烦的事情,所以,本地源的制作就非常必要了。

    首先需要安装软件包dpkg-dev
    ps: dpkg-sancpackages这个命令可能找不到,这个命令在
    dpkg-dev这个包里面
    先找到这个包安装一下就是了。
    1 #sudo apt-get install dpkg-dev
    等配置好后,在/下建立一个目录software作为软件包的存放地点,或者放在硬盘中任意位置。
    将/var/cache/apt/archives中的所有软件包拷贝到这个文件夹里。
    执行以下命令,进行软件源的制作
    2 #sudo dpkg-scanpackages /software /dev/null | gzip>/software/Packages.gz

    我的 sudo dpkg-scanpackages /home/kaka/ubuntu10.4_64_本地源 /dev/null | gzip>/home/kaka/ubuntu10.4_64_本地源/Packages.gz
    sudo dpkg-scanpackages /home/kk/debianRJ /dev/null | gzip>/home/kk/debianRJ/Packages.gz
    等待系统扫描完所有的软件包后,会返回命令行,并且在software文件夹中生成一个名为Packages.gz的压缩文件,存有这个文件夹中的软件包信息及其依赖关系。Packages.gz复制到 ubuntu10.4_64_本地源/dists/lucid/main/binary-amd64/ 目录没有需自建并根据发行版本修改 debian修改lucid为debian版本号 如:/dists/squeeze/main/binary-amd64/
    二:使用本地源:
    3 复制所有deb包到 /var/cache/apt/archives/
    4 #sudo gedit /etc/apt/sources.list (修改前先备份以便还原)
    删除所有内容,添加
    deb file:///software/ lucid main restricted universe multiverse (lucid main 版本信息必须加)-----ubuntu
    deb file:/software squezze main contrib non-free -------debian没有software后面的/ 且冒号后不空格
    保存。
    打开终端,输入
    sudo apt-get update 以更新本地的软件包列表
    sudo apt-get dist-upgrade 以更新整个系统(已安装过的包)
    或者可以用apt-get命令安装本地源中的软件包

    **********************分割线 光盘源******************************

    光盘源:
    如何以CD为源?可以使用apt-cdrom命令,具体方法如下:
    Apt-cdrom
    使用apt-cdrom 命令将CD添加到源文件中。将光盘放入光驱(也可以用mount命令将光盘镜像文件加载到CDROM中)然后依次执行下面命令:
    apt-cdrom --no-act add
    添加光盘源debian简化: apt-cdrom add 或 sudo apt-cdrom -m -d /media/cdrom0 add
    "add"命令可以向source.list中添加一个新的光盘源文件。它会卸载CD设备,提示插入光盘,然后扫描光盘并且复制索引文 件。如果光盘上没有.disk文件夹,系统则会提示要你提供一个合适的描述。 APT采用光驱ID来跟踪当前光驱并且在/var/lib/apt/cdroms.list中保留这些ID信息。
    ***注意,执行完成后查看/etc/apt/sources.list文件,确保文件如下一行在文件顶部或者在网络源前面,否者,安装软件的时候系统还是优先从网络上下载。***
    ident 是一个 调试工具,可以报告当前光盘和存储的文件名的信息。
    -d or --cdrom : 加载点(指明光驱加载的位置)。这个加载点必需在 /etc/fstab文件中并且正确配置。
    -r or --rename : 重命名光盘,改变光盘标签或者覆盖光盘。使用这个选项会导致apt-cdrom提示需要一个新的光盘标签。
    -n, --just-print, --recon or --no-act : 不改变sources.list文件,并且不会重写索引文件,但是仍然会检查相关内容。
    apt-cdrom ident ----扫描一张光盘,但不将其加入列表
    apt-cdrom -d -r

    apt-setup设置软件源和apt代理
    测试
    使用 dist-upgrade 完成版本升级后可以测试升级是否成功。

    使用iso镜像*****************经验证可在命令行和新立得中使用
    首先,你必须先挂载你的iso镜像文件。
    $ sudo mount -o loop -t iso9660 /.../ubuntu-9.04-dvd-i386.iso /media/cdrom0/ (....为你的iso文件的绝对路径)
    $ sudo apt-cdrom -m -d /media/cdrom0 add
    $ sudo umount /media/cdrom0
    推荐使用iso镜像,一来操作方便,二来可以减少光驱的使用次数,延长其寿命。

    ************ APT-MIRROR 建本地源 **************
    一.安装:
    sudo apt-get install apt-mirror

    必须要先建立目录:如果镜像等文件放在 /you_path/ubuntu文件夹下

    /your_path/ubuntu //我的/home/kk/ubuntu
    /your_path/ubuntu/mirror //我的/home/kk/ubuntu/mirror
    /your_path/ubuntu/skel //我的/home/kk/ubuntu/skel
    /your_path/ubuntu/var //我的/home/kk/ubuntu/var

    二.修改配置文件:
    sudo gedit /etc/apt/mirror.list
    ############# config ##################
    #
    # set base_path /var/spool/apt-mirror //这行是指定下载目录,取消注释并修改比如我的/home/kk/ubuntu
    #
    # set mirror_path $base_path/mirror //取消这行的注释=设置默认变量的目录
    # set skel_path $base_path/skel //取消这行的注释=设置默认变量的目录
    # set var_path $base_path/var //取消这行的注释=设置默认变量的目录
    # set cleanscript $var_path/clean.sh //取消这行的注释=设置默认变量的目录
    # set defaultarch
    # set postmirror_script $var_path/postmirror.sh
    # set run_postmirror 0
    set nthreads 20 //下载线程,建议改少点以求稳定
    set _tilde 0
    #
    ############# end config ##############
    # 之所以使用deb-amd64是告诉系统,我们只要其中的amd64架构的文件,这样可以节省空间,默认只有deb的时候是本机架构;或修改set defaultarch 则把deb默认为修改的架构。
    deb-amd64 http://debian.ustc.edu.cn/ubuntu lucid main restricted universe multiverse
    deb-amd64 http://debian.ustc.edu.cn/ubuntu lucid-security main restricted universe multiverse
    deb-amd64 http://debian.ustc.edu.cn/ubuntu lucid-updates main restricted universe multiverse
    deb-amd64 http://debian.ustc.edu.cn/ubuntu lucid-proposed main restricted universe multiverse
    deb-amd64 http://debian.ustc.edu.cn/ubuntu lucid-backports main restricted universe multiverse

    #deb-amd64 http://extras.ubuntu.com/ubuntu precise main #11.4过后的gnome3版本加了ubuntu自己的unity分支,注意,也可不用。

    #deb-src http://debian.ustc.edu.cn/ubuntu lucid main restricted universe multiverse
    #deb-src http://debian.ustc.edu.cn/ubuntu lucid-security main restricted universe multiverse
    #deb-src http://debian.ustc.edu.cn/ubuntu lucid-updates main restricted universe multiverse
    #deb-src http://debian.ustc.edu.cn/ubuntu lucid-proposed main restricted universe multiverse
    #deb-src http://debian.ustc.edu.cn/ubuntu lucid-backports main restricted universe multiverse

    ###########下面的代码是为了镜像成功后节省空间的,从哪几个源下载就写几个源的
    clean http://debian.ustc.edu.cn/ubuntu

    ##########以上是/etc/apt/mirror.list的配置文件,配置结束。

    三.下载包:
    ############## 和指定的镜像进行同步(升级同步也是这个命令) ################
    $ sudo apt-mirror

    ##############用 clean.sh清理无用的过时软件包 #############
    $ sudo sh /your_path/var/clean.sh

    四.使用:
    ########### 发布和使用 (指向your_path下的mirror目录)##############
    1. apache2(http方式可向外发布比如局网改成你自己的IP即可或自己用127.0.1.1):
    $ sudo ln -s /your_path/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu
    修改源地址:
    deb http://127.0.1.1/your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://127.0.1.1/your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://127.0.1.1/your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://127.0.1.1/your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-backports restricted universe multiverse
    deb http://127.0.1.1/your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse
    2. 未安装 apache2 而使用本地源方式(本机用或放入nfs,适用于apt-mirror和debmirror):
    debian:
    deb file:/your_path/debian/ squeeze main non-free contrib
    deb file:/your_path/debian/ squeeze-updates main non-free contrib
    deb file:/your_path/debian/ squeeze-proposed-updates main contrib non-free
    deb file:/your_path/debian-security/ squeeze/updates main contrib non-free
    deb file:/your_path/debian-multimedia/ squeeze main non-free
    deb file:/your_path/debian-multimedia/ squeeze-backports main
    deb file:/your_path/debian-backports/ squeeze-backports main contrib non-free

    ubuntu:
    #deb file:///your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid main restricted universe multiverse
    #deb file:///your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    #deb file:///your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    #deb file:///your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-backports restricted universe multiverse
    #deb file:///your_path/mirror/debian.ustc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    #deb file:///your_path/mirror/ppa.launchpad.net/wfg/0ad/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/wengxt/fcitx-nightly/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/motumedia/mplayer-daily/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/team-xbmc/ppa/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/cnav/ppa/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/mozillateam/firefox-stable/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/matthaeus123/mrw-gimp-svn/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/lucid-bleed/ppa/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/hydr0g3n/ppa/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/deluge-team/ppa/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/ferramroberto/sopcast/ubuntu lucid main
    #deb file:///your_path/mirror/ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu lucid main

    **************** DEBMIRROR 建本地源 ******************
    1 安装debmirror软件:
    #apt-get install debmirror

    2 运行debmirror软件获得debian软件包:
    #debmirror /mydebian (决定debian软件包放在硬盘的那个目录,这是debmirror运行必需参数)
    #man debmirror
    -v:详细显示镜像的具体步骤,最好选上,时刻掌握debmirror的动向。
    -h:从哪个主机下载debian软件包,缺省是ftp.debian.org,国内我想最好使用debian.cn99.com。
    -d:决定镜像debian的哪个版本,stable或当前稳定版代号squeeze.
    -s:决定镜像debian的哪个部分,即在main,contrib,non-free三者中选一个,缺省都选。
    -a:选择计算机架构方式,缺省为i386。
    --nosource:缺省情况下,debmirror会把debian包的源码一起下载,该参数则禁止下载源码

    官方的(目前squeeze在stable里,可以直接抓stable,媒体源的squeeze里面只有main,non-free;而squeeze-backports只有main):
    debmirror --host=www.debian-multimedia.org --ignore-small-errors --diff=none --dist=stable,testing,unstable,experimental --arch=amd64,armel,i386,ia64,kfreebsd-amd64,kfreebsd-i386,mips,mipsel,powerpc,sparc --root=/ --method=http --section=main,non-free

    我的(例,注意自己的目录):
    debmirror --host=www.debian-multimedia.org --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    首次下载:
    debmirror /home/kk/debian/debian-multimedia --verbose --host=mirrors.ustc.edu.cn/debian-multimedia/ --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    同步更新(例-多媒体源已改为 http://www.deb-multimedia.org 请自行修改,搜狐,中科大):
    debmirror /home/kk/debian/debian-multimedia --verbose --rsync-extra=www.debian-multimedia.org --host=www.debian-multimedia.org --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    debmirror /home/kk/debian/debian-multimedia --verbose --rsync-extra=mirrors.sohu.com/debian-multimedia --host=mirrors.sohu.com/debian-multimedia --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    debmirror /home/kk/debian/debian-multimedia --verbose --rsync-extra=debian.ustc.edu.cn/debian-multimedia --host=debian.ustc.edu.cn/debian-multimedia --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    ************** debmirror 抓取中科大的debian_squeeze镜像 ****************
    主源、主源更新、建议更新源(共三个源)
    debmirror /home/kk/文档/程序/linux/DEB系/DEB_源/debian/debian --verbose --rsync-extra=debian.ustc.edu.cn/debian/ --host=debian.ustc.edu.cn/debian/ --ignore-small-errors --diff=none --dist=squeeze,squeeze-updates,squeeze-proposed-updates --arch=amd64 --root=/ --method=http --section=main,contrib,non-free --nosource
    安全更新源:
    debmirror /home/kk/debian/debian-security --verbose --rsync-extra=debian.ustc.edu.cn/debian-security --host=debian.ustc.edu.cn/debian-security --ignore-small-errors --diff=none --dist=squeeze/updates --arch=amd64 --root=/ --method=http --section=main,contrib,non-free --nosource
    向后支持backport源:
    debmirror /home/kk/debian/debian-backports --verbose --rsync-extra=debian.ustc.edu.cn/debian-backports --host=debian.ustc.edu.cn/debian-backports --ignore-small-errors --diff=none --dist=squeeze-backports --arch=amd64 --root=/ --method=http --section=main,contrib,non-free --nosource
    多媒体源multimedia(目前squeeze在stable里,可以直接抓stable,媒体源的squeeze里面只有main,non-free;而squeeze-backports只有main):
    debmirror /home/kk/文档/程序/linux/DEB系/DEB_源/debian/debian-multimedia --verbose --rsync-extra=debian.ustc.edu.cn/debian-multimedia --host=debian.ustc.edu.cn/debian-multimedia --ignore-small-errors --diff=none --dist=squeeze,squeeze-backports --arch=amd64 --root=/ --method=http --section=main,non-free --nosource

    ****************** 多媒体源 ********************
    ****************** 需要root权限 ****************
    方法一:
    gpg --keyserver keyring.debian.org --recv-keys ID
    sudo apt-key adv --keyserver keyserver.debian.com --recv ID
    gpg --armor --export ID | apt-key add -
    方法二:
    debian-multimedia-keyring
    获取http://www.debian-multimedia.org/公钥-----到http://www.debian-multimedia.org/faq.php 下载debian-multimedia-keyring_2010.12.26_all.deb 媒体源现已更新为 http://www.deb-multimedia.org 请自行修改
    安装该公钥文件
    dpkg -i debian-multimedia-keyring_2010.12.26_all.deb(版本号可能会不断更新)

    public key ? 07DC563D1F41B907
    公钥服务器有:
    wwwkeys.pgp.net
    keyring.debian.org
    wwwkeys.eu.pgp.net
    下载公钥,打开终端输入:
    gpg --keyserver wwwkeys.pgp.net --recv-keys 07DC563D1F41B907
    添加这个key
    gpg --armor --export 07DC563D1F41B907 | apt-key add -
    上面两步都需要在root权限下执行,其中 07DC563D1F41B907 参数是出错信息中提示的key标号。现在再执行 aptitude update 或 apt-get update 已经能成功了。

    方 法 1:
    gpg --keyserver wwwkeys.pgp.net --recv-keys 07DC563D1F41B907
    gpg --armor --export 07DC563D1F41B907 | apt-key add -
    ln -s ~/.gnupg/pubring.gpg ~/.gnupg/trustedkeys.gpg
    cp /etc/apt/trusted.gpg ~/.gnupg/trustedkeys.gpg

    方法 2:
    http://wwwkeys.eu.pgp.net/ 搜索 0x07DC563D1F41B907,下载保存为 key.txt
    apt-key add key.txt
    ln -s ~/.gnupg/pubring.gpg ~/.gnupg/trustedkeys.gpg
    cp /etc/apt/trusted.gpg ~/.gnupg/trustedkeys.gpg

    ************* debian-backports公钥 ***************
    sudo apt-get install debian-backports-keyring
    或:
    gpg --keyserver hkp://subkeys.pgp.net --recv-keys EA8E8B2116BA136C
    gpg --keyserver hkp://subkeys.pgp.net --recv-keys 473041FA
    gpg --armor --export EA8E8B2116BA136C | apt-key add -
    gpg --armor --export 473041FA | apt-key add -
    安装backports软包:
    apt-get -t squeeze-backports install “package"

    *************** apache的安装使用 ****************
    安装:
    $sudo aptitude update
    $sudo aptitude install apache2 apache2-utils
    其中apache2-utils提供了我们在配置维护过程中非常有用的一些工具

    **使用方法一:
    1. 修改 /etc/apache2/httpd.conf 里面加:
    Alias /rj /mymirror-directory
    如:Alias /rj /home/gg/multimediayuan
    再用#apachectl restart重新启动apache服务器。

    2. 启动 Apache 服务:
    $ sudo /etc/init.d/apache2 start
    停止 Apache 服务:
    $ sudo /etc/init.d/apache2 stop
    也可以直接用 kill 命令强制杀死apache2进程
    $ sudo killall apache2
    如有需要, 可以通过rcconf来控制是否在系统启动是加载Apache 服务

    启动完成后打开浏览器, 使用URL http://localhost/ 来访问已经启动的Apache服务器, 服务器将会将会跳转到 http://localhost/apache2-default/, 向浏览器返回一个Apache安装成功的页面.注: 这取决于/etc/apache2/sites-available/default 配置文件中, 是否取消了 RedirectMatch ^/$ /apache2-default/ 行的注释

    3. 修改/etc/apt/sources.list
    deb http://myip-如启动apache时返回的127.0.1.1/rj squeeze main non-free (或加contrib,根据源的目录修改)

    例(debian):
    ***/etc/apache2/httpd.conf内容(debian主源合三为一,原服务器目录架构如此):
    Alias /debian /home/kk/debian/debian
    Alias /debian-security /home/kk/debian/debian-security
    Alias /debian-backports /home/kk/debian/debian-backports
    Alias /debian-multimedia /home/kk/debian/debian-multimedia
    ***/etc/apt/sources.list内容(同级目录三个主源分开写才能识别,媒体源同理):
    deb http://127.0.1.1/debian/ squeeze main non-free contrib
    deb http://127.0.1.1/debian/ squeeze-updates main non-free contrib
    deb http://127.0.1.1/debian/ squeeze-proposed-updates main contrib non-free
    deb http://127.0.1.1/debian-security/ squeeze/updates main contrib non-free
    deb http://127.0.1.1/debian-backports/ squeeze-backports main contrib non-free
    deb http://127.0.1.1/debian-multimedia/ squeeze main non-free
    deb http://127.0.1.1/debian-multimedia/ squeeze-backports main

    例(ubuntu):
    ***/etc/apache2/httpd.conf内容
    Alias /ubuntu /home/kk/ubuntu/ubuntu //因为ubuntu是同级目录,和debian的主源一拖三相似,为一拖五

    Alias /ppa-cnav /home/kk/ubuntu/cnav
    Alias /ppa-xbmc /home/kk/ubuntu/team-xbmc
    Alias /ppa-mplayer /home/kk/ubuntu/motumeida/mplayer-daily
    Alias /ppa-fcitx /home/kk/ubuntu/wengxt/fcitx-nightly
    Alias /ppa-0ad /home/kk/ubuntu/wfg/0ad
    Alias /ppa-firefox /home/kk/ubuntu/mozillateam/firefox-stable
    Alias /ppa-gimp /home/kk/ubuntu/matthaeus123/mrw-gimp-svn
    Alias /ppa-vlc /home/kk/ubuntu/lucid-bleed/ppa

    ***/etc/apt/sources.list内容
    deb http://127.0.1.1/ubuntu/ lucid main restricted universe multiverse
    deb http://127.0.1.1/ubuntu/ lucid-security main restricted universe multiverse
    deb http://127.0.1.1/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://127.0.1.1/ubuntu/ lucid-proposed main restricted universe multiverse
    deb http://127.0.1.1/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://127.0.1.1/ppa-cnav/ubuntu lucid main
    deb http://127.0.1.1/ppa-xbmc/ubuntu lucid main
    deb http://127.0.1.1/ppa-mplayer/ubuntu lucid main
    deb http://127.0.1.1/ppa-fcitx/ubuntu lucid main
    deb http://127.0.1.1/ppa-0ad/ubuntu lucid main
    deb http://127.0.1.1/ppa-firefox/ubuntu lucid main
    deb http://127.0.1.1/ppa-gimp/ubuntu lucid main
    deb http://127.0.1.1/ppa-vlc/ubuntu lucid main

    ***使用方法二(可对外发布):
    1. $sudo gedit /etc/apache2/sites-enabled/000-default
    把:

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    Options FollowSymLinks
    AllowOverride None


    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all


    修改为如下:
    NameVirtualHost * //任意主机名
    //任意IP地址
    ServerAdmin webmaster@localhost

    # DocumentRoot /var/www/ //默认的目录,修改为下面这行为自己的目录
    DocumentRoot /your_dir/mirror/debian.ustc.edu.cn/ //apt-mirror的目录,debmirror做相应修改。

    Options Indexes FollowSymLinks
    AllowOverride None


    Options FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all


    2. 启动 Apache 服务:
    $ sudo /etc/init.d/apache2 start

    3. 修改/etc/apt/sources.list
    deb http://your_ip(如局网内192.168.1.6)/debian/ squeeze main non-free contrib
    deb http://your_ip(如局网内192.168.1.6)/debian/ squeeze-updates main non-free contrib
    deb http://your_ip(如局网内192.168.1.6)/debian/ squeeze-proposed-updates main contrib non-free
    deb http://your_ip(如局网内192.168.1.6)/debian-security/ squeeze/updates main contrib non-free
    deb http://your_ip(如局网内192.168.1.6)/debian-multimedia/ squeeze main non-free
    deb http://your_ip(如局网内192.168.1.6)/debian-multimedia/ squeeze-backports main
    deb http://your_ip(如局网内192.168.1.6)/debian-backports/ squeeze-backports main contrib non-free

    ****************** debian源 ******************
    *************** 官方安全更新的源 ***************

    deb http://security.debian.org/ squeeze/updates main

    deb http://http.us.debian.org/debian squeeze main contrib non-free
    deb http://non-us.debian.org/debian-non-US squeeze/non-US main contrib non-free //这个分类里头的软件都来自非美国地区,当中可能有牵扯到专利、加密..等等问题
    deb http://security.debian.org squeeze/updates main contrib non-free

    ****************** 163 ****************
    deb http://mirrors.163.com/debian-backports/ squeeze-backports main contrib non-free

    deb http://mirrors.163.com/debian/ squeeze main non-free contrib
    deb http://mirrors.163.com/debian/ squeeze-updates main non-free contrib
    deb http://mirrors.163.com/debian/ squeeze-proposed-updates main contrib non-free
    deb http://mirrors.163.com/debian-security/ squeeze/updates main contrib non-free

    ******************** 清华源 *********************
    deb http://mirrors.tuna.tsinghua.edu.cn/debian-backports/ squeeze-backports main contrib non-free

    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ squeeze main non-free contrib
    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ squeeze-updates main non-free contrib
    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ squeeze-proposed-updates main contrib non-free

    deb http://mirrors.tuna.tsinghua.edu.cn/debian-security/ squeeze/updates main contrib non-free

    deb http://mirrors.tuna.tsinghua.edu.cn/debian-multimedia/ squeeze main non-free
    deb http://mirrors.tuna.tsinghua.edu.cn/debian-multimedia/ squeeze-backports main

    ******************** 中科大源 ********************
    deb http://debian.ustc.edu.cn/debian-backports/ squeeze-backports main contrib non-free

    deb http://debian.ustc.edu.cn/debian/ squeeze main non-free contrib
    deb http://debian.ustc.edu.cn/debian/ squeeze-updates main non-free contrib
    deb http://debian.ustc.edu.cn/debian/ squeeze-proposed-updates main contrib non-free

    deb http://debian.ustc.edu.cn/debian-security/ squeeze/updates main contrib non-free

    deb http://mirrors.ustc.edu.cn/debian-multimedia/ squeeze main non-free
    deb http://mirrors.ustc.edu.cn/debian-multimedia/ squeeze-backports main

    #deb ftp://mirrors.ustc.edu.cn/debian-multimedia/ stable main non-free

    #deb-src http://mirrors.ustc.edu.cn/debian-multimedia/ stable main non-free
    #deb-src ftp://mirrors.ustc.edu.cn/debian-multimedia/ stable main non-free

    ************** sohu **************
    deb http://mirrors.sohu.com/debian-backports/ squeeze-backports main contrib non-free

    deb http://mirrors.sohu.com/debian/ squeeze main non-free contrib
    deb http://mirrors.sohu.com/debian/ squeeze-updates main non-free contrib
    deb http://mirrors.sohu.com/debian/ squeeze-proposed-updates main contrib non-free

    deb http://mirrors.sohu.com/debian-security/ squeeze/updates main contrib non-free

    deb http://mirrors.sohu.com/debian-multimedia/ squeeze main non-free
    deb http://mirrors.sohu.com/debian-multimedia/ squeeze-backports main

    ****************** 上海交大 *****************
    deb http://ftp.sjtu.edu.cn/debian/ squeeze main non-free contrib
    deb http://ftp.sjtu.edu.cn/debian/ squeeze-updates main non-free contrib
    deb http://ftp.sjtu.edu.cn/debian/ squeeze-proposed-updates main contrib non-free

    deb http://ftp.sjtu.edu.cn/debian-security/ squeeze/updates main contrib non-free

    deb http://http.us.debian.org/debian squeeze main contrib non-free
    deb http://non-us.debian.org/debian-non-US squeeze/non-US main contrib non-free
    deb http://security.debian.org squeeze/updates main contrib non-free
    ************* debianHK ***********
    deb http://ftp.hk.debian.org/debian/ squeeze main non-free contrib
    deb http://ftp.hk.debian.org/debian/ squeeze-updates main non-free contrib
    deb http://ftp.hk.debian.org/debian/ squeeze-proposed-updates main contrib non-free
    deb http://ftp.hk.debian.org/debian-security/ squeeze/updates main contrib non-free

    ************** debianTW ************
    deb http://ftp.tw.debian.org/debian/ squeeze main non-free contrib
    deb http://ftp.tw.debian.org/debian/ squeeze-updates main non-free contrib
    deb http://ftp.tw.debian.org/debian/ squeeze-proposed-updates main contrib non-free

    deb http://ftp.tw.debian.org/debian-security/ squeeze/updates main contrib non-free

    另一个台湾源:
    deb http://debian.nctu.edu.tw/debian/ squeeze main non-free contrib
    deb http://debian.nctu.edu.tw/debian/ squeeze-updates main non-free contrib
    deb http://debian.nctu.edu.tw/debian/ squeeze-proposed-updates main non-free contrib

    deb http://debian.nctu.edu.tw/debian-security/ squeeze/updates main contrib non-free

    *************************** UBUNTU源 *****************************
    注:extras.ubuntu.com是ubuntu从11.4的gnome3开始自己搞的unity分支,可以不用。
    中科大:
    deb http://debian.ustc.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://debian.ustc.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://debian.ustc.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://debian.ustc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse
    deb http://debian.ustc.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse

    163:
    deb http://mirrors.163.com/ubuntu/ lucid main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ lucid-security main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ lucid-proposed main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ lucid-backports main restricted universe multiverse

    官方:
    deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ lucid-proposed main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse

    sohuDVD:
    deb http://cn.archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
    deb http://cn.archive.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
    deb http://cn.archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
    deb http://cn.archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
    deb http://cn.archive.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse

    骨头:
    deb http://ubuntu.srt.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://ubuntu.srt.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://ubuntu.srt.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://ubuntu.srt.cn/ubuntu/ lucid-proposed main restricted universe multiverse
    deb http://ubuntu.srt.cn/ubuntu/ lucid-backports main restricted universe multiverse

    LupaWorld
    deb http://mirror.lupaworld.com/ubuntu lucid main restricted universe multiverse
    deb http://mirror.lupaworld.com/ubuntu lucid-security main restricted universe multiverse
    deb http://mirror.lupaworld.com/ubuntu lucid-updates main restricted universe multiverse
    deb http://mirror.lupaworld.com/ubuntu lucid-backports main restricted universe multiverse
    deb http://mirror.lupaworld.com/ubuntu lucid-proposed main restricted universe multiverse

    常州贝特康姆:
    deb http://centos.bitcomm.cn/ubuntu lucid main restricted universe multiverse
    deb http://centos.bitcomm.cn/ubuntu lucid-security main restricted universe multiverse
    deb http://centos.bitcomm.cn/ubuntu lucid-updates main restricted universe multiverse
    deb http://centos.bitcomm.cn/ubuntu lucid-backports main restricted universe multiverse
    deb http://centos.bitcomm.cn/ubuntu lucid-proposed main restricted universe multiverse

    青岛大学:
    deb http://mirror.qdu.edu.cn/ubuntu lucid main restricted universe multiverse
    deb http://mirror.qdu.edu.cn/ubuntu lucid-security main restricted universe multiverse
    deb http://mirror.qdu.edu.cn/ubuntu lucid-updates main restricted universe multiverse
    deb http://mirror.qdu.edu.cn/ubuntu lucid-backports main restricted universe multiverse
    deb http://mirror.qdu.edu.cn/ubuntu lucid-proposed main restricted universe multiverse

    清华大学:
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    北交大:
    deb http://mirror.bjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe
    deb http://mirror.bjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe
    deb http://mirror.bjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe
    deb http://mirror.bjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe
    deb http://mirror.bjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe
    deb-src http://mirror.bjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe

    北京理工:
    deb http://mirror.bit.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://mirror.bit.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://mirror.bit.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://mirror.bit.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://mirror.bit.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    北京化工大学:
    deb http://ubuntu.buct.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://ubuntu.buct.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://ubuntu.buct.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://ubuntu.buct.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://ubuntu.buct.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    天津大学:
    deb http://mirror.tju.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://mirror.tju.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://mirror.tju.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://mirror.tju.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://mirror.tju.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    东北大学:
    deb http://ftp.neu.edu.cn/mirrors/ubuntu/ lucid main multiverse restricted universe
    deb http://ftp.neu.edu.cn/mirrors/ubuntu/ lucid-backports main multiverse restricted universe
    deb http://ftp.neu.edu.cn/mirrors/ubuntu/ lucid-proposed main multiverse restricted universe
    deb http://ftp.neu.edu.cn/mirrors/ubuntu/ lucid-security main multiverse restricted universe
    deb http://ftp.neu.edu.cn/mirrors/ubuntu/ lucid-updates main multiverse restricted universe

    哈尔滨工业大学:
    deb http://run.hit.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://run.hit.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://run.hit.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://run.hit.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://run.hit.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    大连理工:
    deb http://mirror.dlut.edu.cn/ubuntu/ lucid main restricted universe multiverse
    deb http://mirror.dlut.edu.cn/ubuntu/ lucid-security main restricted universe multiverse
    deb http://mirror.dlut.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse
    deb http://mirror.dlut.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse
    deb http://mirror.dlut.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse

    上海交大:
    deb http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe
    deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe
    deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe
    deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe
    deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe

    厦门大学:
    deb http://mirrors.xmu.edu.cn/ubuntu/archive/ lucid main restricted universe multiverse
    deb http://mirrors.xmu.edu.cn/ubuntu/archive/ lucid-backports restricted universe multiverse
    deb http://mirrors.xmu.edu.cn/ubuntu/archive/ lucid-proposed main restricted universe multiverse
    deb http://mirrors.xmu.edu.cn/ubuntu/archive/ lucid-security main restricted universe multiverse
    deb http://mirrors.xmu.edu.cn/ubuntu/archive/ lucid-updates main restricted universe multiverse

    成都电子工业大学:
    deb http://ubuntu.dormforce.net/ubuntu/ lucid main multiverse restricted universe
    deb http://ubuntu.dormforce.net/ubuntu/ lucid-backports main multiverse restricted universe
    deb http://ubuntu.dormforce.net/ubuntu/ lucid-proposed main multiverse restricted universe
    deb http://ubuntu.dormforce.net/ubuntu/ lucid-security main multiverse restricted universe
    deb http://ubuntu.dormforce.net/ubuntu/ lucid-updates main multiverse restricted universe

    西南林业大学:
    deb http://cs3.swfu.edu.cn/ubuntu/ lucid main multiverse restricted universe
    deb http://cs3.swfu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe
    deb http://cs3.swfu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe
    deb http://cs3.swfu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe
    deb http://cs3.swfu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe

    兰州大学:
    deb http://mirror.lzu.edu.cn/ubuntu/archive/ lucid main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/archive/ lucid-backports restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/archive/ lucid-proposed main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/archive/ lucid-security main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/archive/ lucid-updates main restricted universe multiverse


    *************************** PPA ******************************
    sudo gedit /etc/apt/sources.list
    加入源:deb http://ppa.launchpad.net/软件名/ppa/ubuntu 发行代号 main (也是目录结构确保有支持的发行版)
    1. deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu lucid main
    2. deb-src http://ppa.launchpad.net/libreoffice/ppa/ubuntu lucid main
    添加公钥的第一种方法:选择“Signing Key: 1024R/”后的那段数字,然后在前面添加:
    sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com **********
    添加公钥的第二种方法:也可以点击链接后,会出现’ox*******’,选择“OX”后的数字,然后添加:
    sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com ************

    ubuntu公钥服务器: gpg --keyserver keyserver.ubuntu.com --recv XXXXXXXX

    |或这样添加源:sudo add-apt-repository ppa:user/ppa-name
    | sudo add-apt-repository -r ppa:user/ppa-name
    | libreoffice:
    | 1. sudo add-apt-repository ppa:libreoffice/ppa (会自动导入密钥)
    | ppa:(冒号前是指ppa源)libreoffice/ppa(冒号后是指目录结构确保有支持的发行版)
    获取更新列表更新:
    | 2. sudo apt-get update
    | 3. sudo apt-get install libreoffice
    | XBMC(lucid):sudo add-apt-repository ppa:team-xbmc
    | sudo apt-get update -y
    | sudo apt-get install -y xbmc xbmc-bin xbmc-data xbmc-skin-confluence
    | XBMC(oneiric):DejaVuSans+DroidSansFallback256.ttf改名为arial.ttf并设置权限(重要!不然,连乱码也没了#_#):sudo chmod a+r arial.ttf;复制到“/usr/share/xbmc/media/Fonts”,覆盖原文件。select-language-0.3.0.tgz,压缩包里面所有内容,包括子文件夹到默认XBMC addons文件夹:“/usr/share/xbmc/media/Fonts”中,覆盖原文件。
    | sudo apt-add-repository ppa:nathan-renniewaldock/xbmc-stable
    | sudo apt-get update
    | sudo apt-get install xbmc
    | totem-sopcast(lucid需要,暂无oneiric的包):sudo apt-add-repository ppa:cnav/ppa
    | sudo apt-get update
    | sudo apt-get install sopcast gst-plugins-sopcast totem-sopcast
    | wine(各版本都有): sudo apt-add-repository ppa:ubuntu-wine/ppa
    | sudo apt-get update
    | sudo apt-get install wine1.3
    |温度监控:
    |sudo apt-add-repository ppa:jfi/ppa
    |sudo apt-get update
    |sudo apt-get install psensor lm-sensors
    |安? lm-sensors ??要求?行?置端口和监听IP
    |查看: sensors
    |系?工具”菜?中??“Psensor
    | umplayer:
    | sudo add-apt-repository ppa:webupd8team/umplayer
    | sudo apt-get update
    | sudo apt-get install umplayer
    | qbitorrent:
    | sudo add-apt-repository ppa:hydr0g3n/ppa
    |  sudo apt-get update
    |  sudo apt-get install qbittorrent
    | deluge:
    | sudo add-apt-repository ppa:deluge-team/ppa
    | sudo apt-get update
    | sudo apt-get install deluge
    | mplayer(lucid需要,暂无oneiric的包):
    | sudo add-apt-repository ppa:motumedia/mplayer-daily
    | sudo apt-get update
    | sudo apt-get install mplayer mencoder
    | vlc1.1.x
    | sudo add-apt-repository ppa:lucid-bleed/ppa
    | sudo apt-get update
    | sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc
    | 游戏0ad(各版本都有):
    |sudo add-apt-repository ppa:wfg/0ad
    |sudo apt-get update
    |sudo apt-get install 0ad
    | fcitx(lucid需要,oneiric自带):
    | 1. sudo add-apt-repository ppa:wengxt/fcitx-nightly
    | 2. sudo apt-get update
    | 3. sudo apt-get install fcitx fcitx-config-gtk fcitx-sunpinyin
    | 4. sudo apt-get install fcitx-table-all #同时安装其他码表
    | 5. im-switch -s fcitx -z default #设为默认输入法,一般不需要,除非系统有多个输入法然后重启即可,最简单就是在语言支持里面默然即可
    ************* ubuntu 缺失公钥FCITX_PPA(root终端) **************
    gpg --keyserver hkp://subkeys.pgp.net --recv-keys FAF69C646FF368B7

    ubuntu公钥服务器: gpg --keyserver keyserver.ubuntu.com --recv XXXXXXXX

    gpg --armor --export FAF69C646FF368B7 | apt-key add -
    | transmission:
    | sudo add-apt-repository ppa:transmissionbt/ppa
    | sudo apt-get update
    | sudo apt-get install transmission-gtk transmission-cli transmission-common transmission-daemon
    | 新版pidgin配合libqq-pidgin:
    | sudo add-apt-repository ppa:pidgin-developers/ppa
    | sudo apt-get update
    | sudo apt-get upgrde //如果没装主源的就直接下面的新安装
    | sudo apt-get install pidgin
    | libqq-pidgin:
    | sudo add-apt-repository ppa:lainme/libqq
    | sudo apt-get update
    | sudo apt-get install libqq-pidgin
    | firefox:
    | sudo add-apt-repository ppa:mozillateam/firefox-stable
    | sudo apt-get update
    | sudo apt-get upgrade
    | gimp(支持版本较多):
    | sudo add-apt-repository ppa:matthaeus123/mrw-gimp-svn
    | sudo apt-get update
    | sudo apt-get install -y gimp
    | sopcast(支持版本齐全):
    | sudo add-apt-repository ppa:ferramroberto/sopcast
    | sudo apt-get update
    | sudo apt-get install sopcast-player
    | 老旧显卡驱动:
    | sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

    ***************** 跨版本升级ubuntu *****************
    sudo update-manager -dc 启动图形界面更新管理器(可用于寻找高版本的)
    sudo do-release-upgrade -d 直接在命令行中升级

    ************* 预安装环境选择 **************
    sudo tasksel

    ************* debian中sudo **************
    安装好Debian后还不能使用sudo
    如果没有安装sudo,则在root用户下apt-get install sudo
    然后设置sudoers配置文件
    先修改权限:
    chmod +w /etc/sudoers
    vim /etc/sudoers
    添加一行 username ALL=(ALL) ALL
    其中username是你的用户名
    更改sudoers文件权限 chmod 0440 /etc/sudoers
    退出root
    **************************** dpkg ******************************
    命令 作用
    dpkg -i package.deb 安装包
    dpkg -i --force-all 强制安装忽略依赖
    dpkg -r package 删除包
    dpkg -P package 删除包(包括配置文件)
    dpkg -L package 列出与该包关联的文件
    dpkg -l package 显示该包的版本
    dpkg --unpack package.deb 解开 deb 包的内容
    dpkg -s package 查询已安装的包
    dpkg -S keyword 搜索所属的包内容
    dpkg -l 列出当前已安装的包
    dpkg -c package.deb 列出 deb 包的内容
    dpkg --configure package 配置包
    更多选项可通过 dpkg -h 查询,有些指令需要超级用户权限才能执行。
    ********* 32to64 *********
    dpkg-deb -x 解压deb包
    dpkg-deb -b 创建deb包
    dpkg-deb -x a.deb A
    dpkg-deb -e a.deb A/DEBIAN
    改A/DEBIAN/control,将里面的Architecture改成amd64,最好也将Depends加一个ia32-libs,
    一般再将A的所有者改成root $sudo chown -R root:root A
    再包回去 $dpkg-deb -b A a.deb
    *************** apt-get apt-cache ***************
    sudo apt-get -f install
    sudo dpkg --configure -a 安装过后的配置
    sudo apt-spy 寻找最快源


    apt主要有apt-cache apt-cdrom apt-config apt-get等四个命令,还有apt-p2p
    用户用的最多的应该就是apt-get

    apt-cache search package 搜索包

    apt-cache show package 获取包的相关信息,如说明、大小、版本等

    apt-get install package 安装包

    apt-get install package --reinstall 重新安装包

    apt-get -f install 强制安装

    apt-get remove package 删除包

    apt-get remove package --purge 删除包,包括删除配置文件等

    apt-get autoremove 自动删除不需要的包

    apt-get update 更新源

    apt-get upgrade //更新已安装的包,只会在现有基础上升级软件包,而不会安装额外的软件包,如果新版本的软件的依赖关系发生变化,引入了新的依赖包, 则现有系统将不能满足新版本的依赖关系,故软件包无法升级,而被保留

    apt-get dist-upgrade //全面升级系统,可以智能的解决依赖关系,即如果新版本因为新的依赖包,升级将为了满足依赖关系,而试图安装引入的依赖包

    apt-get dselect-upgrade //使用 dselect 升级,可以删去旧的包,并且安装上新的包,具有根据dselect安装推荐和建议包的能力。upgrade和dist-upgrade只会更新,并不会做出把原来的软件删除再装上新的这类的处理

    apt-cache depends package 了解使用依赖

    apt-cache rdepends package 了解某个具体的依赖

    apt-get build-dep package 安装相关的编译环境

    apt-get source package 下载该包的源代码

    apt-get clean && sudo apt-get autoclean 清理下载文件的存档

    apt-get check 检查是否有损坏的依赖

    -h 帮助信息
    -d 只下载----不安装或解压档案
    -f 即便完整性检查失败了仍然继续
    -s 不做什么。只是按顺序模拟
    -y 对于所有问题都假定为Yes,不询问
    -u 显示一系列已经将要更新的包

    update - 取回更新的软件包列表信息
    upgrade - 进行一次已安装的包的升级
    install - 安装新的软件包(注:软件包名称是 libc6 而非 libc6.deb)
    remove - 卸载软件包
    autoremove - 卸载所有自动安装且不再使用的软件包
    purge - 卸载并清除软件包的配置
    source - 下载源码包文件
    build-dep - 为源码包配置所需的编译依赖关系
    dist-upgrade - 发布版升级
    dselect-upgrade - 根据 dselect 的选择来进行升级
    clean - 删除所有已下载的包文件
    autoclean - 删除老版本的已下载的包文件
    check - 核对以确认系统的依赖关系的完整性
    markauto - 标记指定的软件包为自动安装
    unmarkauto - 标记指定的软件包为手动安装

    ******************* aptitude **********************
      aptitude 是 Debian GNU/Linux 系统中, 非常神奇的的软件包管理器,基于大名鼎鼎的 APT 机制, 整合了 dselect 和 apt-get的所有功能, 并提供的更多特性,特别是在依赖关系处理上。
      aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
      以下是一些常用 aptitude命令,仅供参考。
    命令 作用
    aptitude update 更新可用的包列表
    aptitude upgrade 升级可用的包
    aptitude dist-upgrade 将系统升级到新的发行版
    aptitude install pkgname 安装包
    aptitude remove pkgname 删除包
    aptitude purge pkgname 删除包及其配置文件
    aptitude search string 搜索包
    aptitude show pkgname 显示包的详细信息
    aptitude clean 删除下载的包文件
    aptitude autoclean 仅删除过期的包文件
    *****************************
    安装apt-file包,接着运行sudo apt-file update。这将下载所有可用的软件包以及这些软件包所含的所有文件的列表,这可能是个大 家伙。apt-file有一些有趣的功能,最有用的两个是apt-file search(按文件名搜索)和apt-file list(列出给定的软件包中的所有文件)。你接着要做的是运行 apt-file search 找不到的文件名称xxxx,这会告诉你在哪个Ubuntu包里有缺少的文件。接下来,你只需sudo apt-get install 所需包安装 即可。接着再试试运行./configure,看看行不行。
    **********************************
    apt-p2p,顾名思义,就是用户与用户之间直接进行 deb 软件包的传递。
    它拥有着 P2P 技术的优势:
    # * 即能从用户节点中获取软件包,同时又能从官方源中下载
    # * 使用 apt-p2p 的人越多,软件包的传递效率就越高、速度越快
    # * 低 CPU 和内存资源消耗
    # *先进行哈希校验,之后才进行软件包的传递,最大限度地确保安全、避免下载到损坏的包
    但同样,它也存在着 P2P 的弊端:
    # * 如果使用 apt-p2p 的人不多,速度可能还不及原装的 apt-get。
    # * 尽管机率非常小,但仍可能遭遇到潜在的哈希欺骗,进而引发系统安全隐患
    1、准备依赖环境
    sudo apt-get install python python-apt python-twisted python-twisted-web2
    2、安装 apt-p2p
    sudo apt-get install apt-p2p
    3、修改软件源列表(注:第三方源不用也不必修改)
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    sudo sed -i 's%http://%http://localhost:9977/%g' /etc/apt/sources.list
    4、根据需要配置apt-p2p
    sudo gedit /etc/apt-p2p/apt-p2p.conf
    其中
    “PORT = ”指定 apt-p2p 使用的端口,默认为“9977”。当然,你也可以指定它为“9527”,只是要确保与《/etc/apt/sources.list》中的修改值一致
    “UPLOAD_LIMIT = ”指定最大上传速度,默认为“0”即不限速,建议设置为“10~50”(KB/秒)
    “MIN_DOWNLOAD_PEERS = ”是指定当可用的 prees 节点少于多少时,才开始从官方源下载,建议使用默认值“3”
    “CACHE_DIR = ”是指定 apt-p2p 的软件包缓存目录,建议使用默认值
    “OTHER_DIRS = ”是指定额外的软件包目录。注意:一旦指定,在该目录下的所有文件都会被上传
    “UPLOAD_LIMIT = ”指定是否进行软件包下载数据列表统计并公布。默认为“yes”即进行公布,若你的电脑对保密等级要求特别高,那请设置为“no”
    “DHT-ONLY = ”是否仅只使用分布式散列表提供的资源,建议使用默认值“no”
    5、若是装有防火墙,须将“9967”、“9977”端口开放;若是使用路由器,还需要进行映射设置
    6、重新启动 apt-p2p,以应用新配置
    sudo rm -rf /var/cache/apt-p2p/cache/*
    sudo /etc/init.d/apt-p2p restart
    7、开始更新、升级系统或安装软件包
    sudo apt-get update
    sudo apt-get upgrade
    说明:有的教程说要禁用第三方源,但就鄙人实际使用下来的情况,就算不禁用第三方源也没有什么影响
    检视 apt-p2p 运行情况的方法:
    在浏览器地址栏中输入 http://localhost:9977/,即可察看相关信息
    后悔药----卸载 apt-p2p 的方法:
    sudo apt-get remove --purge apt-p2p
    sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list
    sudo rm -rf /var/cache/apt-p2p/*
    sudo apt-get update

    *************** APT 升级错误以及解决方法 *******************
    # aptitude dist-upgrade
    如果这招无效,可以重复下面的方法至到问题解决:
    # aptitude -f upgrade # 即使遇到错误也继续 upgrade
    ... 或
    # aptitude -f dist-upgrade # 即使遇到错误也继续 dist-upgrade

    一些的确存在问题的升级脚本会引起持续出错。最好的解决方法是检查该软件包的安装脚本 /var/lib/dpkg/info/packagename.{post-,pre-}{install,removal} 然后运行:
    # dpkg --configure -a # 配置所有安装的软件包
    如果脚本报告缺少配置文件,查看一下 /etc 中相关的配置文件。如果配置文件有 .dpkg-new 扩展名(或其它类似的扩展名),去掉(mv)它的扩展名。
    从 unstable/testing 进行升级时可能出现软件包关联问题。可用这个方法智取:
    # aptitude -f install package # 重载坏关联

    *********** gsopcast 源码编译为deb *************
    1)编译安装前必需的软件包
    sudo apt-get install libstdc++5 libgtk2.0-dev libasound2 checkinstall
    另外可能还需要安装automake和autoconf:
    sudo apt-get install automake1.9
    sudo apt-get install autoconf
    2)编译安装下载的gsopcast
    tar jxf gsopcast0.4.0tar.bz2
    cd jxf gsopcast0.4.0
    ./configure
    make
    sudo make install
    3)运行
    可以输入命令 gsopcast,或者在应用程序->影音 | gsopcast 启动它
    4)问题
    首先是没有频道列表,这需要到“配置”页,把“频道地址”改为"http://channel.sopcast.com/gchlxml"或者http: //channel.sopcast.com/gchlxml,然后重启,稍等片刻就有频道列表出现了。这时选中一个频道后双击,点"启动",连接一段时间后,就会开始播放了。
    简单安装方法:
    a、下载gsopcast_0.4.0.1-1-i386.deb
    sudo dpkg -i gsopcast_0.4.0.1-1i386.deb
    b、下载sp-sc,放在/usr/bin下面,否则会一直显示connceting...,但是无法播放。因为没有sp-sc,无法调用mplayer。
    c、应用程序->影音 | gsopcast 启动即可
    附:如何制作.deb包
    1、下载http://gsopcast.googlecode.com/files/gsopcast-0.4.0.tar.bz2
    2、解压 tar zxvf gsopcast-0.4.0.tar.bz2
    3、cd gsopcast-0.4.0
    4、./configure
    5、make
    6、sudo checkinstall 或checkinstall -D make install 就会生成deb包了 用dpkg -i安装即可

    ************* jigdo 升级镜像 **************
    jigdo-file:为下载准备ISO文件(由提供ISO文件的人使用)

    jigdo-lite:下载ISO文件(由下载ISO文件的人使用)

    首先到http://www.debian.org/CD/jigdo-cd/#whichhttp://www.debian.org/CD/jigdo-cd/#search 下载新镜像的xxx.jigdo 和 xxx.template 注意选择stable和testing的区别

    首先挂载原始镜像到某目录然后进行下面的
    1 建一个目录
    mkdir debian && cd debian
    2 将xxx.jigdo 和 xxx.template放进去
    然后开始下载
    jigdo-lite xxx.jigdo
    3 然后会问你 If you already have a previous version of the CD you are
    downloading, jigdo can re-use files on the old CD that are also
    present in the new image, and you do not need to download them
    again. Mount the old CD ROM and enter the path it is mounted under
    (e.g. `/mnt/cdrom').
    Alternatively, just press enter if you want to start downloading
    the remaining files.
    Files to scan:
    *****这里是叫你输入旧版CD挂载后的路径(注意是 mount 了的目录, 而不是那个ISO), 这样已经有的文件就不需要下载了.********
    如果是首次下即没有原始iso的话直接回车下载
    4 The jigdo file refers to files stored on Debian mirrors. Please
    choose a Debian mirror as follows: Either enter a complete URL
    pointing to a mirror (in the form
    `ftp://ftp.debian.org/debian/'), or enter any regular expression
    for searching through the list of mirrors: Try a two-letter
    country code such as `de', or a country name like `United
    States', or a server name like `sunsite'.
    Debian mirror [http://mirrors.163.com/debian]:
    这里需要输入一个镜像源的地址, 要快的(例如我用的 http://mirrors.163.com/debian)一般默认你当前系统配置的源。
    不必担心找不到太新的文件. 如果这个源没找到需要的文件, 就会自动到官方源下载.
    然后就是下载过程.........
    如果一切顺利, jigdo 在最后会提示校检成功. 而 ISO 则已下载到当前目录下.
    关于续传:
    jigdo 会在下载完一定数量的文件后(默认是10个), 自动将文件写到一个 tmp 文件中. 其实那个文件也是一个 ISO. 续传的话只要挂载那个 tmp 文件, 然后在第一步指定扫描目录即可.

    ************** 输入法切换 ******************
    当前用户 切换到scim输入法如下:
    im-switch -s scim #其中scim是你所要切换的输入法的名称。
    这个命令是修改了$HOME/.input.d下面的配置。

    系统里的所有用户 都切换到scim输入法,
    那么此命令就要加上sudo(方法如下)
    sudo im-switch -s scim
    这个命令修改了/etc/X11/xinit/xinput.d/下面的配置文件。

    *********************U盘安装debian ************************
    方法一:支持小于256M的镜像文件
    有一个文件合集 hd-media/boot.img.gz 包含所有的安装程序文件(包括内核) 以及 syslinux 和对应的配置文件。
    需要注意的是,虽然方便,但该方法有一个主要的缺点: 即使 U 盘很大,设备的逻辑尺寸还是限制在 256 MB。如果您要将该 U盘用作其他用途,需要为它重新分区,为其余容量创建一个新的文件系统。次要的缺点是您无法复制完整的 CD 映象到 U 盘,只能使用较小的
    businesscard 或 netinst CD 映象。
    使用该映象只须将它直接解压到 U 盘:
    # zcat boot.img.gz > /dev/sdX
    然后,挂载 U 盘 (mount /dev/sdX /mnt), 现在上面有了 一个 FAT 文件系统 ,复制 Debian netinst 或 businesscard ISO 映象到里面。卸载 U 盘 (umount /mnt) 就完成了。
    ********************************
    方法二:支持大点较完整的镜像文件
    1 #umount /dev/sdx1 && mkdosfs /dev/sdX1 格式化U盘
    在 U 盘上放入一个 boot loader。尽管任何 boot loader (比如 lilo)都应该可以胜任,不过还是使用 syslinux 更方便。主要原因是它可以使用 FAT16 分区,而且只需要编辑一个文本文件就能对其进行配置。任何支持 FAT 文件系统的操作系统都可以用来改变 boot loader 的配置文件。
    为了把 syslinux 放到 U 盘的 FAT16 分区上,请在您的系统中安装 syslinux 和 mtools 软件包,然后执行:
    2 #syslinux /dev/sdX1
    再提醒一次,请确认您使用的是正确的设备名称。启动 syslinux 的时候该分区不能被挂载,因为该过程会向分区的引导扇区写入数据,并且创建包含 boot loader 代码的 ldlinux.sys 文件。
    添加安装程序映像
    3 #挂载分区并复制下面的安装程序映象文件到 U 盘:
    #mount /dev/sdX1 /mnt
    #cp vmlinuz /mnt/ (内核二进制文件)
    #cp initrd.gz /mnt/ (初始化 ramdisk 映象)
    注:您可以选择使用文本界面或者图形安装界面安装程序。后者可以从 gtk 子目录获得即用该目录里面的vmlinuz和initrd.gz代替前面的。假如您需要改文件名,请注意 syslinux 只遵循 DOS (8.3) 命名方式。
    接下来,您需要创建一个 syslinux.cfg 配置文件,里面最少要包含下面两行:
    default vmlinuz
    append initrd=initrd.gz
    对于图形安装程序,您需要添加 video=vesa:ywrap,mtrr vga=788 到第二行尾部。
    如果您使用 hd-media 映象,现在应该复制 Debian ISO 映象(businesscard、netinst 或者完整的 CD 映象;确认适合的一种)到 U 盘上。然后,卸载 U 盘 。
    #umount /mnt
    OK
    警告
    如果您的系统拒绝从 U 盘引导,那么可能是因为它含有无效的主引导扇区记录(MBR)。您可以使用 install-mbr 命令来修复这个问题,该命令来自 mbr 软件包:
    # install-mbr /dev/sdX
    或使用lilo sudo apt-get install lilo,然后键入lilo -M /dev/sdx(用你的U盘盘符代替x)。
    *************************************
    三:在WIndows下如何制作启动U 盘
    1.格式化u盘
    在windows下把u盘格式化为fat(2G以下)或fat32(2G以上)格式(强烈推荐使用hp优盘格式化工具)
    2.下载并使用syslinux
    在这里下载http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.73.tar.gz
    解压后,在win32目录里面使用以下命令来“让u盘可以变成bootable”
    假设解压到D:盘 。在开始菜单--运行 里输入“cmd”按 回车
    先用“D:”命令进入D盘;再用cd命令打开到win32目录。
    再命令:syslinux.exe -m -a j: (j:为u盘的盘符);即可在优盘中创建一个可启动的文件(是隐藏的)。
    3.在u盘中建立此文件syslinux.cfg(用记事本编辑) ,并在里面加入
    default vmlinuz
    append initrd=initrd.gz

    ************* gnome 按钮位置 ****************
    **** 按钮
    1、打开终端,输入gconf-editor,打开配置编辑器。
    2、依次展开app-- metacity-- general
    3、双击button_layout 将对应的值修改为menu:minimize,maximize,close,就可以将关闭按钮移动到右边了,如果想修改三个按钮的顺序,则将三个单词的位置进行调整即可。

    1、安装gnome-tweak-tool 和 gconf-editor。
    2、按住Alt+F2输入gconf-editor,然后在 /desktop/gnome/shell/windows/button_layout 添加:minimize(最小化),maximize(最大化),close(关闭),根据自己的需要添加,然后点确定保存。
    3、再次按住Alt+F2,输入r,重启gnome-shell

    KDE里面建立鹦鹉螺的连接解决不能挂载NTFS nautilus --no-desktop

    **** 面板恢复
    gconftool --recursive-unset /apps/panel

    rm -rf ~/.gconf/apps/panel

    pkill gnome-panel

    或:
    gconftool --recursive-unset /apps/panel && rm -rf ~/.gconf/apps/panel && pkill gnome-panel

    **** 注销桌面环境
    gnome-session-save --kill --silent

    **** 设置终端快捷键
    按住alt+F2,输入 gconf-editor
    apps-->metacity-->keybinding_commands
    选择一个 command (command_1~command_12),添加值/usr/bin/gnome-terminal
    在 metacity-->global_keybindings 目录,找到前面我们已经赋值的command_1(为run_command_1),编辑其值为我们想设定的快捷键,比如T(注意格式)即表示快捷键T打开终端

    **************** 编译安装源码包 ****************
    编译安装软件的条件;
    作为预备,安装apt-file包,接着运行sudo apt-file update。这将下载所有可用的软件包以及这些软件包所含的所有文件的列表,这可能是个大 家伙。apt-file有一些有趣的功能,最有用的两个是apt-file search(按文件名搜索)和apt-file list(列出给定的软件包中的所有文件)。你接着要做的是运行 apt-file search 找不到的文件名称xxxx,这会告诉你在哪个Ubuntu包里有缺少的文件。接下来,你只需sudo apt-get install 所需包安装 即可。接着再试试运行./configure,看看行不行。
    首先我们在Linux系统中至少得把开发工具安装上,比如 gcc ;perl;python;glibc;gtk;make ;automake 等开发工具或基础包;还要安装一些相应的开发包,一般是文件名包括dev的,比如kernel-devel;还有一些开发库,比如以lib开头的;如果您在编译软件时,有时提示缺少什么东西之类的,大多少的是这些开发工具和开发库等;从光盘中找出安装就是了;有时光盘没有提供,请用google搜索相应的软件包,有时可能也会用到源码包编译安装所依赖的包;有时本来系统中已经安装了所依赖的包,但系统提示找不到应该怎么办?这时需要我们设置一下PKG_CONFIG_PATH的环境变量就行了; #export PKG_CONFIG_PATH=/usr/lib/pkgconfig

    #export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    然后我们再来运行编译的./configure ;make ;make install ,尝试着来吧;以java开发的工具开发的程序,要用到 jre或者jdk ;jdk已经包括jre了,所以如果我们只是要求有一个java程序运行的环境,只需要安装jre就行了;安装好jre,配置一下java的环境变量就可以用了。如果是图形界面的程序,点点鼠标就OK了;请参考:《JRE 安装和配置,以适合JAVA程序运行所具备的环境》 用perl 开发的程序,是需要perl环境的,所以必须得把perl的包安装上,python 也同理;
    3)编译安装软件的方法;
    大多以tar.gz 和tar.bz2打包软件,大多是通过 ./configure ;make ;make install 来安装的;有的软件是直接make;make install ;我们可以通过./configure --help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,如果没有的就不用./configure ;直接make;make install 就行了; ./configure 比较重要的一个参数是 --prefix ,用--prefix 参数,我们可以指定软件安装目录;当我们不需要这个软件时,直接删除软件的目录就行了;比如我们可以指定fcitx 安装到 /opt/fcitx 目录中;
    [root@localhost fcitx]#./configure --prefix=/opt/fcitx
    如果我们不需要fcitx 时,可以直接删除 /opt/fcitx 目录;所以我们举这个例子中,fcitx如果定制安装到 /opt/fcitx目录中,完整的安装方法应该是:
    [root@localhost fcitx]# tar jxvf fcitx-3.2-050827.tar.bz2
    [root@localhost fcitx]#cd fcitx
    [root@localhost fcitx]# ./configure --prefix=/opt/fcitx
    [root@localhost fcitx]# make
    [root@localhost fcitx]# make install
    调用fcitx ,应该是
    [beinan@localhost ~]#/opt/fcitx/bin/fcitx
    如果您想要让fcitx 只要执行fcitx ,就能调用,请配置环境变量,或者在/usr/bin 中做一个fcitx 的链接;
    [root@localhost beinan]# ln -s /opt/fcitx/bin/fcitx /usr/bin/fcitx
    一般的情况下都有说,但大多软件没有提供源码包的卸载方法;我们可以找到软件的安装点删除。主要看你把它安装在哪了。设置环境变量PATH,请参见:《在Fedora Core 中,有些常用命令怎么没有?解决办法设置PATH》 所以您的PATH可以设置成这样的;
    export PATH=".:/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/X11R6/bin:/sbin:/opt/fcitx/bin"
    当然这只是举个例子,fcitx 可以进入桌面自动运行的,请参看 http://www.fcitx.org 官方站上的安装说明;举个例子只是让大家好理解一点;再举一个例子,比如我想安装mlterm ;并指定安装目录为/opt/mlterm中; http://mlterm.sourceforge.net
    #./configure --prefix=/opt/mlterm
    #make
    #make install
    把源码包安装的软件,都指定安装在 /opt目录中,这样不就知道了软件安装在哪里了;也方便卸载;
    3.其它类型软件;
    1)基于perl 和python 的程序的安装;
    ***************************
    一般情况下,用 #perl file.pl安装;比如:VMware 的Linux版本的安装;
    [root@localhost vmware-distrib]# perl vmware-install.pl
    基于python 开发,也得用 python file.py 来安装一般软件包都有README和INSTALL 或者 DOC 文档,看文档安装;**************************************************
    2)有些安装程序是脚本型的调用;要用 #sh 文件名
    比如NVdia驱动的安装就是这样的;
    [beinan@localhost ~]# sh NFORCE-Linux-x86-1.0-0306-pkg1.run
    当然也能通过 chmod 755 NFORCE-Linux-x86-1.0-0306-pkg1.run ,然后 ./NFORCE-Linux-x86-1.0-0306-pkg1.run 来安装;也有一些是以file.bin 文件
    [beinan@localhost ~]# chmod 755 file.bin
    [beinan@localhost ~]# ./file.bin
    大抵如此。。。。。。。。后记: 源码包及特殊格式的软件安装就写这么多,写的再多也是写不完。我们主要还是以软件的安装文档为准;安装软时,如果只是简单的应用,如果有rpm包,尽可能的用rpm包;主要是方便和易于管理
    ************************** 排它锁 ********************************
    已有另外的包管理程序(例如:apt-get 或 aptitude)在运行,请先关掉它。
    方法一:
    ps -aux
    找到最后一列以apt-get 开头的进程 kill
    方法二:
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    rm /var/cache/apt/archives/lock ; rm /var/lib/dpkg/lock
    用sudo apt-get update sudo apt-get dist-upgrade 来升级

    *************** debian ubuntu 软件快速安装命令合集 ***************
    1 sudo apt-get update
    sudo apt-get dist-upgrade

    2 sudo apt-get install linux-headers-`uname -r`
    sudo apt-get install g++ gcc make automake autoconf automake1.10 automake1.4 automake1.7 pmake cmake automake1.9 python dpkg-dev libc6-dev gfortran
    sudo apt-get install gpc dkms dh-make debconf debhelper cdbs fdupes xutils pbuilder file
    sudo apt-get install ia32-libs ia32-libs-gtk 或 sudo apt-get install ia32-libs* //oneiric不能全部安,有冲突
    sudo apt-get install build-essential kernel-package libncurses5-dev
    sudo apt-get install libhtml-template-perl libparse-recdescent-perl
    sudo apt-get install libgtk2.0-dev libasound2 checkinstall
    sudo apt-get install gnome-devel
    sudo apt-get install qt-creator
    sudo apt-get install language-pack-kde-zh language-pack-kde-zh-base


    3 sudo apt-get install unrar-free rar unrar p7zip p7zip-full cabextract
    sudo apt-get install alien nautilus-open-terminal //xfce桌面自带右键打开终端
    sudo apt-get install mplayer mencoder gnome-mplayer gecko-mediaplayer smplayer libqt4-core libqt4-dbus libqt4-gui libqt4-network libqt4-webkit libqt4-xml libfuse2
    sudo apt-get install vlc totem totem-gstreamer gstreamer0.10-alsa gstreamer0.10-pulseaudio gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-ugly gstreamer0.10-plugins-base gstreamer0.10-plugins-bad gstreamer0.10-plugins-good gstreamer0.10-x264 winff //ubuntu的xfce要另外安totem
    关于mplayer mencoder debian先安装一次在加入媒体源过后在行升级安装以支持更多的格式
    **** debian : sudo apt-get install bleachbit kdenlive uget conky avidemux screen audacious goobox dasher desktopnova ekiga isomaster gparted gwenview marble tuxpaint cairo-clock pitivi xchm sound-juicer apt-spy jigdo-file jigit k3b zsync aria2 syslinux mtools mbr iptux deluge lzma qbittorrent qbittorrent-nox rtorrent rtgui audacity openshot gpaint xournal darktable mypaint git gufw cheese ethtool sysstat iptraf iotop testdisk wondershaper krename xfsprogs unetbootin gtk-recordmydesktop expect transmission-daemon amule amule-utils amule-utils-gui amule-common amule-daemon vuze amsn aptoncd amarok bangarang chromium-browser pidgin screenlets
    关于ibus:
    **** debian : sudo apt-get install ibus ibus-table ibus-pinyin-db-open-phrase ibus-gtk ibus-pinyin python-ibus ibus-table-wubi pinyin-database libibus2 //ubuntu的xfce要在此安五笔输入

    **** ubuntu : sudo apt-get install bleachbit kdenlive uget conky avidemux screen gwget gimp audacious goobox chromium-browser dasher gtk-recordmydesktop ekiga isomaster gparted gwenview marble tuxpaint cairo-clock xpdf xchm sound-juicer jigdo-file jigit k3b zsync aria2 syslinux mtools mbr iptux deluge lzma qbittorrent qbittorrent-nox rtorrent rtgui audacity openshot gpaint xournal darktable mypaint gmountiso git-core gufw cheese ethtool sysstat iptraf iotop testdisk wondershaper krename xfsprogs x264 expect drapes unetbootin transmission-daemon amarok amule amule-utils amule-utils-gui amule-common amule-daemon vuze amsn aptoncd pidgin bangarang screenlets
    sudo apt-get install libasound-dev 安装gsopcast时需要这个
    **** ubuntu : sudo apt-get install scim scim-pinyin scim-chinese scim-tables-zh scim-python
    sudo apt-get install libreoffice gedit //ubuntu的xfce需要安libreoffice
    sudo apt-get install -d lm-sensors sensors-applet xsensors
    sudo apt-get install -d samba system-config-samba nfs-kernel-server
    sudo apt-get install smartmontools //硬盘健康检查工具
    sudo apt-get install compizconfig-settings-manager fusion-icon compiz-fusion-plugins-main compiz-fusion-plugins-extra compiz-fusion-plugins-unsupported cairo-dock emerald
    sudo apt-get install wine //ubuntu加ppa后安1.3版
    sudo apt-get install virtualbox-ose //可从官方下载对应最新版本独立安装
    sudo apt-get install seahorse seahorse-plugins //用gnupg加解密 kde是kgpg
    sudo apt-get install ecryptfs-utils cryptsetup lvm2 system-config-lvm mdadm //ecryptfs企业级加密 和cryptsetup可创建加密(U)盘,lvm2和crypt-luks配合自动挂载的加密分区,mdadm软RAID管理工具
    sudo apt-get install fcitx fcitx-config-gtk fcitx-sunpinyin fcitx-table-all fcitx-tools
    sudo apt-get install rcconf //可以配置开机不启动X
    sudo apt-get install libelfg0 //编译ati显卡驱动deb包需要的依赖
    sudo apt-get install gdisk palimpsest //GPT分区工具,用parted也可以滴
    sudo apt-get install apt-mirror //建本地源工具,类似debmirror
    sudo apt-get install apt-file //方便文件和依赖的查询
    sudo apt-get install clamav //安装大部分系统默认带的杀软clamav
    sudo apt-get install dselect aptitude-gtk //aptitude-gtk在debian6中,会自动安装aptitude,ubuntum10.4未包含,oneiric有aptitude-gtk了,dselect为共有升级程序.
    sudo apt-get install gnome-session-fallback //从gnome3的gnome-shell安装类似gnome2的经典桌面环境,据说gnome-panel也可以
    sudo apt-get install partimage //系统备份恢复软件,方便做U盘系统
    sudo apt-get install wallch desktopnova //ubuntu新的自动换壁纸软包,原本debian中的desktopnova也有了
    sudo apt-get install mldonkey-server ocaml //超级电驴mldonkey及编译mldonkey源码所需的caml语言的实现ocaml
    sudo apt-get install linux-firmware-nonfree linux-firmware linux-wlan-ng linux-wlan-ng-firmware //ubuntu固件包,如果硬件能正常用就不需要再安了
    sudo apt-get install firmware-linux firmware-linux-free firmware-linux-nonfree linux-wlan-ng linux-wlan-ng-firmware //debian的固件包
    sudo apt-get install kvm bridge-utils uml-utilities rdesktop ubuntu-virt-server kvm-pxe virt-manager python-vm-builder //kvm虚拟机
    sudo apt-get install memtest86+ //内存测试工具
    sudo apt-get install xserver-xorg-video-qxl spice-client //可以使用spice的半虚拟化图形驱动和连接
    sudo apt-get install lunar-applet //一个农历时间软件
    sudo apt-get install sysv-rc-conf //系统服务配置
    ubuntu: sudo dpkg -r indicator-messages
    **** sudo apt-get install wicd 独立于network-manager的网络连接管理器(Ubuntu的apt系统中不能共存)对无线支持较好
    **** sudo apt-get install xfce4 xfce4-goodies lxde //安装XFCE4或LXDE桌面环境
    **** debian: apt-get install xbmc (加媒体源后)
    #加媒体源或PPA后:
    #debian: apt-get install xbmc w64codecs x264
    #ubuntu: sudo apt-get install sopcast gst-plugins-sopcast totem-sopcast ppstream 0ad xbmc umplayer pidgin libqq-pidgin
    #ubuntu--- sudo apt-get install wine1.3 版本1.3
    **** sudo apt-get install debmirror apache2 apache2-utils (自己建软件源要用)
    **************************************************
    kde:
    apt-get install x-window-system-core kdebase kde-i18n-zhcn ttf-wqy-zenhei gtk2-engines ark
    kde:(ppa-backports):
    apt-get install kdebase kde-l10n-zhcn kmix ark
    完整的kde环境:
    sudo apt-get install kubuntu-desktop
    kde鼠标:sudo update-alternatives --config x-cursor-theme
    kdm可以不安装 由gdm3来管理两个X窗口 ***安两个管理器需要另行设置***
    默认登录管理器切换方法:
    sudo dpkg-reconfigure gdm
    sudo dpkg-reconfigure kdm
    ***************** 跨版本升级ubuntu *****************
    sudo update-manager -d 启动图形界面更新管理器(可用于寻找高版本的)
    sudo do-release-upgrade -d 直接在命令行中升级
    ************* 预安装环境选择 **************
    sudo tasksel
    ********* 重启ibus ***********
    ibus-daemon -d -x -r
    ************** 根据内存使用量自动重启某项服务的脚本 ****************
    #!/bin/sh
    #允许最大占用内存的百分比
    ram_max=10
    #服务程序所守候的端口
    port=4662;4672
    #通过守候端口获取服务程序的pid
    pid_ram=` netstat -nlp |grep $port|awk '{print $7}'|awk -F / '{print $1}' `
    #通过服务程序的pid获取当前占用的内存百分比
    ram=` ps -aux |grep -m1 $pid_ram|awk '{print $4}'|awk -F . '{print $1}' `
    #调试程序用
    #echo $port
    #echo $pid_ram
    #echo $ram
    #echo $ram_max
    #如果所占用的内存使用率大于所定义的值,则重启该服务程序
    if expr $ram \>= $ram_max > /dev/null
    then
    #所要执行的动作
    # echo 2
    echo "4662 amule rebooted" >>/home/kk/autoreboot.log
    echo `date` >>/home/kk/autoreboot.log
    kill -9 $pid_ram
    #调试程序用
    #else
    # echo 1
    fi
    ********************** crontab设置自动运行 ************************
    at 与 crontab的区别在于at 按计划时间执行一次命令操作;crontab按计划时间重复执行命令操作。
    选择默认编辑器: select-editor
    /etc/cron.allow /etc/cron.deny 中设定用户名 每行一个不带空格和符号
    编辑/etc/crontab
    #crontab -e
    SHELL=/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO="" (输出到空就不写这行了)
    #* * * * *
    #分钟 小时 每月的几日 月 每周的几日
    #0-59 0-23 1-31 1-12 0-7(0和7都代表周日)
    * * * * * command (例子每十秒运行一次)
    * * * * * sleep 10 && command
    * * * * * sleep 20 && command
    * * * * * sleep 30 && command
    * * * * * sleep 40 && command
    * * * * * sleep 50 && command
    *:10 * * * * command
    */5 * * * * source ~/.bashrc &&
    0,5,10,15,..... * * * * source ~/.bashrc &&
    时间(秒):0-59的任意数
    第一排的command包含sleep---mand这一段
    我的crontab设置内容:
    SHELL=/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    # m h dom mon dow command
    #cp kamule to tmpfs
    10 8 * * * source ~/.bashrc && cp /home/kk/tmp/kamule /home/kk/ktmp

    #

    #sh kamule
    * * * * * source ~/.bashrc sleep 10 && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1
    * * * * * source ~/.bashrc sleep 20 && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1
    * * * * * source ~/.bashrc sleep 30 && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1
    * * * * * source ~/.bashrc sleep 40 && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1
    * * * * * source ~/.bashrc sleep 50 && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1
    或:
    *:10 * * * * source ~/.bashrc && cd /home/kk/ktmp && bash kamule >>/dev/null 2>&1

    * 代表取值范围内的数字
    / 代表“每”
    - 代表从某个数到某个数
    , 分开几个散离的数字

    ************ 解决crontab不执行的办法 *************

    crontab -u root /var/spool/cron/root

    一招必杀:前提是你用bash
    在脚本最前面加上一句:

    source ~/.bash_profile

    这样运行环境就一摸一样了。加上这句后,直接执行能成功的脚本放在crontab里都能执行。
    所有的crontab问题只有两种可能,
    1,环境
    2,路径
    而第二种问题往往又是第一种问题引起的,所以加上.bash_profile里的环境后99%的问题都一招通杀。

    .bash_profile会读取.bashrc
    .bashrc 会读取 /etc/bashrc
    /etc/bashrc 会读取 /etc/profile

    一个linux所有的系统用户,所有使用bash的环境变量,都逃不出以上几个文件。

    终极推荐解决方案:

    * * * * * source ~/.bashrc && command >>/dev/null 2>&1

    ###### >>/dev/null 2>&1 更改邮件地址为空使其不发到/var/spool/mail #######

    要重新启动cron进程:#/etc/init.d/cron restart观察运行结果

    ****** 1>/dev/null 2>&1 的含义 ******
    /dev/null 代表空设备文件
    > 代表重定向到哪里,例如:echo "123" > /home/123.txt
    1 表示stdout_fileno标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
    2 表示stderr_fileno标准错误
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
    command > file 2>&1
    command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
    command 2>&1 >file
    2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

    ******** at *********
    at [-V] [-q x] [-f file] [-m] time
    在设置完任务后,按组合键 Ctrl+D 结束 at> 命令提示

    at now + 2minutes //两分钟后执行

    at -l //查看系统当前用户的计划任务 at -l 等同于 atq

    at -m // m参数表示即使计划任务不输出结果,也要email给使用者

    at -m 9:10 am 11/18/2011 //指定时间执行

    at 5pm + 2 days //设置2天后下午5点执行计划任务

    atrm 5 //删除编号为5的用户计划任务

    at命令执行权限控制在 /etc/at.allow 和 /etc/at.deny 两个权限策略配置文件中,只有写在/etc/at.allow 文件中的用户才能使用at,其他用户则不能使用(即使没有写在at.deny当中);如果系统中没有/etc/at.allow文件,那么系统寻找/etc/at.deny文件,写在这个文件的用户不能使用at。因此,可以看出at.allow的控制优先级高于at.deny

    ****************** rsync同步 **********************
    rsync有六种不同的工作模式:(SRC源;DEST目的地;冒号“:”在主机和目录之间;冒号的个数::=rsync协议,:=ssh协议;还有一个选是 rsh ,可以使用 -rsh=rsh 来指定。)
    1.拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
    rsync [OPTION]... SRC [SRC]... DEST

    通过远程shell访问:
    2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
    推送: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
    3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
    抓取: rsync [OPTION]... [USER@]HOST:SRC DEST

    通过rsync守护进程的访问:
    4.从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
    抓取: rsync [OPTION]... [USER@]HOST::SRC [DEST]
    rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    5.从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
    推送: rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    6.列出远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
    rsync [USER@]HOST[:PORT]/SRC::

    **** 适合SRC比DEST大多新的情况
    用法:

    1. 在使用rsync传输文件时,需要指定一个源和一个目的,其中一个可能是远程机器的资源信息。例如:
    rsync *.c A:B/
    表示将传输当前目录下所有以.c结尾的文件到机器 A 的 B 目录下。如果任何文件已经存在于远程系统,则会调用远程更新协议来实现仅仅传输那些更新过的文件。

    2. rsync -avz A:B/C /D/E
    该命令则递归地传输机器 A 上的 B/C目录 到本地 /D/E 目录中。

    3. rsync -avz A:B/C/ /D/E
    该命令则递归地传输机器 A 上的 B/C 目录下的所有内容到本地 /D/E 目录中。文件以归档模式进行传输,以确保符号链结、属性、权限、属主等信息在传输中都被保存。此外,可以使用压缩技术来加快数据传输:
    ***** 路径信息以"/"结尾时表示拷贝该目录下的文件,无"/"结尾表示拷贝该目录。当配合使用--delete选项时这两种情况的区别将会表现出来。

    4. 也可以以本地模式来使用rsync,如果SRC和DST路径中都没有任何":"符号则表示该命令运行在本地模式,等同于cp命令。

    5. rsync debian.ustc.edu.cn::
    这种模式则将会列出 debian.ustc.edu.cn 可以访问的所有模块信息。

    选项说明[OPTION]:
    -v, --verbose 详细模式输出
    -q, --quiet 精简输出模式
    -c, --checksum 打开校验开关,强制对文件传输进行校验
    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -r, --recursive 对子目录以递归模式处理
    -R, --relative 使用相对路径信
    例:
    rsync A/B/C remote:/D/
    则在/D目录下创建C文件,而如果使用-R参数:
    rsync -R A/B/C remote:/tmp/
    则会创建文件/tmp/A/B/C 就是会保持完全路径信息.
    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    --backup-dir 将备份文件(如~filename)存放在在目录下。
    -suffix=SUFFIX 定义备份文件前缀
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    -l, --links 保留软链结
    -L, --copy-links 想对待常规文件一样处理软链结
    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
    --safe-links 忽略指向SRC路径目录树以外的链结
    -H, --hard-links 保留硬链结
    -p, --perms 保持文件权限
    -o, --owner 保持文件属主信息
    -g, --group 保持文件属组信息
    -D, --devices 保持设备文件信息
    -t, --times 保持文件时间信息
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
    -n, --dry-run 现实哪些文件将被传输
    -W, --whole-file 拷贝文件,不进行增量检测
    -x, --one-file-system 不要跨越文件系统边界
    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
    -e, --rsh=COMMAND 指定替代rsh的shell程序
    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
    --existing 仅仅更新那些已经存在于DEST的文件,而不备份那些新创建的文件
    --delete 删除那些DEST中有而SRC没有的文件(删除目的目录比原目录多出来的文件,以SRC为标准保持DEST和SRC一致)
    --delete-excluded 同样删除接收端那些被该选项指定排除的文件
    --delete-after 传输结束以后再删除
    --ignore-errors 及时出现IO错误也进行删除
    --max-delete=NUM 最多删除NUM个文件
    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
    --force 强制删除目录,即使不为空
    --numeric-ids 不将数字的用户和组ID匹配为用户名和组名
    --timeout=TIME IP超时时间,单位为秒
    -I, --ignore-times 不跳过那些有同样的时间和长度的文件
    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
    -T --temp-dir=DIR 在DIR中创建临时文件
    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
    -P 等同于 --partial
    --progress 显示备份过程
    -z, --compress 对备份的文件在传输时进行压缩处理
    --exclude=PATTERN 指定排除不需要传输的文件模式
    --include=PATTERN 指定不排除而需要传输的文件模式
    --exclude-from=FILE 排除FILE中指定模式的文件
    --include-from=FILE 不排除FILE指定模式匹配的文件
    --version 打印版本信息
    --address 绑定到特定的地址
    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
    --port=PORT 指定其他的rsync服务端口
    --blocking-io 对远程shell使用阻塞IO
    -stats 给出某些文件的传输状态
    --progress 在传输时现实传输过程
    --log-format=formAT 指定日志文件格式
    --password-file=FILE 从FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes per second
    -h, --help 显示帮助信息
    ********** 温度监控 **********
    sudo apt-get install lm-sensors sensors-applet

    sudo sensors-detect //设置是否扫描硬件选yes

    或用以下命令检测传感器
    sudo sh -c "yes|sensors-detect"

    在面板上右键,添加到面板,选择 hardware sensors monitor
    ***************expect终端自动运行命令_自动切换到root***************
    #首先确保安装了expect
    #!/usr/bin/expect //使用expec运行环境
    spawn su //切换到root,若使用普通用户可用spawn bash
    set timeout 2 //设置超时,否则默认5秒
    expect "Password:" //expect条件
    send "kiss\r" //发送root密码,并以\r模拟enter回车,非切换到root可不要这行
    set timeout 2 //设置超时,否则默认5秒
    send "\n" //条件未满足则退出,加这行后若条件满足会出现login两次的情况,不加也可则login一次
    expect "]#" //等待#符号出现,若非root改“*$“,即等待login完成
    send "sensors\r" //发送执行的目的命令,\r模拟enter回车
    expect eof //expect执行
    sleep 10 //等待10秒以防终端关闭,方便查看结果
    exit //退出
    #若要让其自动运行可做启动命令xfce4-terminal -x /Path/commond

    *************** GRUB4DOS 制作LINUX的U盘安装盘 *****************
    LINUX:
    fat32格式化,或ubuntu支持NTFS
    法一:grub4dos,写入mbr:假设bootlace.com在 /home, u盘为sdb:
    $sudo /home/bootlace.com --time-out=0 /dev/sdb
    并复制grldr到u盘

    法二:grub4dos解压缩,找到:grub.exe、grldr、menu.list,复制到U盘的根目录中

    法一二结合更佳,把64位ubuntu镜像, 改名为u64.iso或别的名字,复制到u盘根目录

    创建名为u64的文件夹,提取vmlinuz和initrd.lz(ubuntu的在casper这个目录中,debian的在install.amd目录中是initrd.gz)到其中。

    修改前面复制到根目录的 menu.lst 内容(根据实际修改):

    timeout 10
    default 0

    title load u64.iso
    kernel /u64/vmlinuz boot=casper iso-scan/filename=/u64.iso ro
    initrd /u64/initrd.lz

    #title load win7pe.iso
    #map /win7pe.iso (0xff) || map --mem /win7pe.iso (0xff)
    #map --hook
    #chainloader (0xff)

    title load grub2-menu
    find --set-root /boot/grub/core.img
    kernel /boot/grub/core.img

    title reboot
    reboot

    title halt
    halt


    win7:

    挂win7镜像: sudo mount -t iso9660 -o loop ~/win7.iso /mnt
    创建cddir目录: mkdir cddir
    创建sources目录: mkdir ~/cddir/sources
    从/mnt中复制boot bootmgr到cddir, 把/mnt/sources/boot.win复制到~/cddir/sources, 复制grldr到cddir
    创建menu.lst到cddir, 内容:
    timeout 0
    default 0

    title load bootmgr
    chianloader /bootmgr

    创建win7预安装环境自启动iso: sudo mkisofs -RJ -b grldr -no-emul-boot -boot-load-size 4 -o win7pe.iso cddir/
    把在/home目录的win7pe.iso搬到u盘, 在u盘创建win7目录, 把/mnt的内容复制到win7目录, 之后可以用杀软扫描一下, 除掉可能的病毒
    使用: 启动win7pe后入命令行恢复环境, 找出u盘盘符, 如H: H\:>win7\sources\setup.exe, 按提示安装win7即可。
    (用win7pe.iso是为了u盘根目录简洁, 也可以直接用boot bootmgr sources/boot.win, 不创建iso)

    ****** grub_grub2修复模式加密_chroot_grub2_uefi_bios******
    1.进入GRUB的命令行模式 grub>
    如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现grub> 提示符
    2.获取GRUB帮助
    grub> help
    3.cat的用法
    grub>ls 出来 (hd0,msdos5) 等分区标识
    grub> cat ( 按tab 键会出来sd0或sd1之类的;
    grub> cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的
    例:
    grub> cat (hd0,6)/etc/fstab
    4. root (hd[0-n,y) 指令来指定/boot所在的分区
    grub> root (hd0,6)
    如果发现不对,可以重新来过;没有什么大不了的
    5. kernel 指令(grub2已由linux代替insmod /boot/grub/linux.mod),用来指定/所在的分区,或可同时指定内核所在。
    5.1
    如果只有根/分区,应该是下面的一种格式;//相当于确认/boot在后面指定的/中
    kernel /boot/vmlinuz ro root=/dev/sd[a-z]X
    5.2
    如果/boot单独分区,应该是;//相当于确认/boot在前面已指定的分区而不在后面指定的/中
    kernel /vmlinuz ro root=/dev/sd[a-z]X
    6.initrd 命令行来指定initrd文件
    6.1
    如果只有根/分区
    grub> initrd /boot/initrd
    6.2
    grub> initrd /initrd
    7.boot 引导系统
    grub>boot 进入后 update-grub 即可修复
    ##(grub2无效)进入后或install-grub 或 grub-install /dev/sda 或在引导前setup (sd0)
    ##grub用0来表示第一个硬盘,1表示第二个硬盘...分区亦然#grub2的以1来表示第一个分区
    ##新的分区用UUID来表示用 root=UUID=UUID数字或字母

    #### 单用户模式
    e
    改ro quiet 为rw single init=/bin/bash
    ctrl+x

    **************** grub2修复模式加密 ***********************
    $ sudo /boot/grub/grub.cfg //修改grub2配置文件加入"例子"内容

    1. 明文:
    $ sudo /etc/grub.d/00_header //在末尾添加如下内容,user1是指定登陆的用户名,这样的话,update-grub2升级后用 grub-mkconfig 生成的配置文件中就会自动包含开机密码,而不必每次都修改grub.cfg文件了。

    cat << EOF
    set superusers="user1"
    password user1 Password_Of_User1
    EOF

    2. 加密的:
    $ grub-mkpasswd-pbkdf2 //版本1.98后,GRUB2可以设定加密的密码。先用生成加密的密码(一种基于pbkdfv2算法的加密工具)。

    $ sudo gedit /etc/grub.d/00_header //末尾追加,user1是指定登陆的用户名

    cat << EOF
    set superusers="user1"
    password_pbkdf2 user1 EncryptedPassword_Of_User1
    EOF

    mine:
    cat << EOF
    set superusers="kk"
    password_pbkdf2 kk grub.pbkdf2.sha512.10000.36F97970A834BA48200575B520BBE4085656A9C10530E45D3A32049E3B8A4CFD60FD92D853620F29E56346FD5DD099393285228872B3A84CDA07142F61DB6242.53AF0CD03157A3E743DEEA012D1FEF62B89BB83A2B219454C0568C26A8E5BB27D68DC7A65EDEF12321D62D30CE40C46BCBEC23C73777FD5CB3B1602E5237DED7

    EOF

    例子:然后 /boot/gurb/grub.cfg 里面增加的内容
    set superusers="kk"
    password_pbkdf2 kk grub.pbkdf2.sha512.10000.36F97970A834BA48200575B520BBE4085656A9C10530E45D3A32049E3B8A4CFD60FD92D853620F29E56346FD5DD099393285228872B3A84CDA07142F61DB6242.53AF0CD03157A3E743DEEA012D1FEF62B89BB83A2B219454C0568C26A8E5BB27D68DC7A65EDEF12321D62D30CE40C46BCBEC23C73777FD5CB3B1602E5237DED7

    ***** 或者禁止生成修复模式
    sudo gedit /etc/defaults/grub
    取消 GRUB_DISABLE_LINUX_RECOVERY="true" 的#注释

    ***** expect 自动切换到root执行任务的脚本。
    #!/usr/bin/expect
    spawn su-
    expect "Password:"
    send "kiss\r"
    expect "*#*"
    send "nohup /home/kk/ktmp/pon_repppoe > /dev/null 2>1& \r"
    expect eof
    exit


    **** chroot
    在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

    1. 增加了系统的安全性,限制了用户的权力;
    在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。
    2. 建立一个与原系统隔离的系统目录结构,方便用户的开发;
    使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。
    3. 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。
    chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

    **** grub2,uefi,bios,chroot综合运用
    **** UEFI中安装grub2使用chroot的实例:(Arch)
    GRUB 和 GRUB2 的内置命令有所不同(例如 "find" 已经变成 "search")
    GRUB2 已经模块化,不再需要"stage 1.5"。所以,启动引导器可以变得很小 -- 模块按需从硬盘导入以扩展功能。(例如LVM 或 RAID 支持)。
    GRUB 和 GRUB2 的分区命名有变化。分区从 1开始编号,并以分区类型开始,原来是从 0 开始编号。注意:磁盘还是从 0 编号。例如,/dev/sda1应该是 (hd0,msdos1) (用于MBR) 或 (hd0,gpt1) (用于 GPT)。

    1. 创建并挂载 UEFI 系统分区
    Linux 中创建 UEFI 系统分区。创建后将 UEFI 系统分区挂载到 /boot/efi。这个分区应该是 FAT32 格式,至少 200 MiB 大小。如果已经在其它地方挂载了这个分区,用挂载点替换掉下面的 /boot/efi:

    # mkdir -p /boot/efi
    # mount -t vfat /boot/efi

    创建 /efi 目录:

    # mkdir -p /boot/efi/efi

    2. 安装最后,跳过Install Bootloader(安装启动引导器)这步并退出安装程序,如果已经安装则按照第四部删除之并安装grub2。
    # modprobe dm-mod //装入 dm-mod 模块,不能推迟到 chroot 之后。如果在 chroot 环境中使用的内核版本比安装设备新,modprobe 会失败

    3. 从安装程序的 shell 中 chroot 到新安装的系统:

    # mount -o bind /dev /mnt/dev
    # mount -vt devpts devpts /mnt/dev/pts
    # mount -vt tmpfs shm /mnt/dev/shm
    # mount -t proc /proc /mnt/proc/
    # mount -t sysfs /sys /mnt/sys/
    # chroot /mnt bash
    # xhost + //主机开启X转发
    # xhost +localhost //或127.0.0.1
    # xhost - //主机关闭X转发
    # export DISPLAY=127.0.0.1:0.0
    # echo $DISPLAY
    # echo "export DISPLAY=:0.0" > /etc/profile.d/gui_support.sh //chroot环境的X支持

    4. 在已有BIOS启动的系统中安装grub2
    4.1 BIOS 系统,备份之前的数据
    grub 安装应该很顺利,但是极个别时候会导致系统无法启动。所以强烈建议安装 grub2-bios 前备份数据。

    # cp -a /boot/grub /path/to/backup/ //复制 grub 模块和数据
    # dd if=/dev/sdX of=/path/to/backup/mbr-boot-code bs=440 count=1 //备份 MBR 和 GRUB-Legacy stage 1.5
    # rm -rf /boot/grub //现在可以删除 /boot/grub 了:

    *** 如果后面的指令出了问题,可以通过如下方式恢复:
    # mv /boot/grub /boot/grub.nonfunctional //删除无法工作的 grub-legacy 或 grub2 文件
    # cp -a /path/to/backup/grub /boot/ //将备份的 grub 复制到 /boot
    # dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=440 count=1 //将 MBR 和它后面的 62 簇 sda 数据替换为备份数据(危险!)

    4.2 先安装好grub2再装入磁盘检查模块这个很重要,为grub2-bios安装到硬盘做准备
    # pacman -S grub2-bios //安装 GRUB2(会替换掉 grub),安装 1.99~rc1-3-x86_64 在一些系统上花了很长时间,因为安装中调用的脚步grub-mkconfig,没有使用 --no-floppy选项,会不断检测软驱)。仅安装软件不会更新 /boot/grub/core.img 文件和 /boot/grub 中的 grub 模块。需要用下面的 grub_bios-install 手动更新它们。
    # modprobe dm-mod //重要,重新装入 device-mapper 内核模块,有了这个模块 grub-probe 才能更好的检测磁盘和分区:

    4.3 Run grub-install
    # grub-install --boot-directory=/boot --no-floppy --recheck --debug /dev/sda
    # cp /usr/share/grub/{unicode.pf2,ascii.pf2} /boot/grub/

    附加说明:若只是生成 core.img 文件而不将 grub2 安装到 MBR,加上--grub-setup=/bin/true 参数到 grub2_bios-install:

    # grub-install --grub-setup=/bin/true --boot-directory=/boot --no-floppy --recheck /dev/sda

    这样就可以从 grub-legacy 像多内核启动一样载入 grub2 的 core.img。 --no-floppy参数加上之后就不会查找软驱,可大大减少该安装所需时间

    4.4 执行“生成GRUB2配置文件”步骤。
    # GRUB_PREFIX="/boot/grub" grub-mkconfig -o /boot/grub/grub.cfg
    如果失败,用下面脚本将/boot/grub/menu.lst 转换为 /boot/grub/grub.cfg:
    # grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg

    4.5 如果忘记创建/boot/grub/grub.cfg配置文件就重启,进入 GRUB2命令后执行:

    sh:grub> insmod legacycfg
    sh:grub> legacy_configfile ${prefix}/menu.lst

    启动后可以重新修改 /boot/grub/grub.cfg 配置文件。

    如果想生成新的GRUB2配置文件,请执行:

    # grub-mkconfig -o /boot/grub/grub.cfg

    Note: 仅在 BIOS 系统工作,UEFI 系统不能这么做。

    ****mlondkey、sancho****
    安装:
    一(发行版源):sudo apt-get install mldonkey-server //安装时不选自动运行以免下载到/var/lib/mldonkey下
    二(官方完整包):http://mldonkey.sourceforge.net/Main_Page 下载glibc版解压即用
    三(源码包):http://mldonkey.sourceforge.net/Main_Page 下载源码包
    sudo apt-get install build-essential checkinstall
    sudo apt-get build-dep mldonkey-server //新版没有了,会在./configure阶段检查并下载安装依赖
    ./configure //会提示先要下载ocaml编译安装[Objective Caml(OCaml)是Caml编程语言的主要实现,mldonkey使用了该语言] http://caml.inria.fr/download.en.htmlhttp://caml.inria.fr/pub/distrib/ocaml-3.12/ 或安装发行版源里面的ocaml
    make //ocaml安装过后才能make
    sudo checkinstall -D //生成deb包然后dpkg -i xxx.deb安装

    ******** 该段步骤用于提高软件安全性,只不过我觉得有点
    *** adduser --system --group --home /home/yourusername/.mldonkey mldonkey //为mldonkey创建一个受限制的用户和组--mldonkey然后再运行mlnet,如果先前安过可能有这个组
    *** sudo chown -R yourname /home/yourname/.mldonkey //如果不能运行mlnet才改变其目录宿主,因为默认是以刚才创建的mldonkey用户运行的
    mlnet //运行一次以生成配置文件
    cat /home/yourname/.mldonkey/downloads.ini | grep -n run_as_user
    gedit /home/yourname/.mldonkey/downloads.ini //根据上面返回的行修改这里的run_as_user=“mldonkey”和run_as_useruid=mldonkey的UID,就可以通过sudo来以mldonkey用户来运行MLDonkey
    sudo mlnet
    多余了***************



    sancho 下载 http://sancho.awardspace.com/ sudo sh sancho-0.9.4-59-linux-gtk.sh 选择目录即可
    中文支持: Preferences -sancho: main-(*) Use locale file: 选择zh-CN,重启
    core启动 mlnet web连接 http://localhost:4080/

    mldonkey导入amule临时文件 import_temp /home/用户名/.aMule/Temp

    ******************
    下载目录修改
    修改下载目录和temp目录: 默认目录分别为 ~/.mldonkey/incoming/files (BT则为~/.mldonkey/incoming/directories) 和 ~/.mldonkey/temp
    修改 ~/.mldonkey/downloads.ini,找到“SECTION : Paths”,然后修改第一段和后两段的路径,注意这里是相对路径即默认目录,改成需要的绝对路径。下载目录和temp目录最好放在同一个硬盘分区,否则下载完成转移临时文件时会疯狂读写硬盘。
    temp_directory = "/home/v/.mldonkey/temp"
    和这个地方:
    { dirname = "/home/v/.mldonkey/incoming/files"
    strategy = incoming_files
    priority = 0
    };
    { dirname = "/home/v/.mldonkey/incoming/directories"
    strategy = incoming_directories
    priority = 0
    };]

    或者通过建立软链接来更改下载目录也可以(一定要用绝对路径)。
    比如我把下载目录和临时目录都移到/home/v/.mldonkey/下,则把~/.mldonkey/下的incoming和temp目录都剪切到/home/v/.mldonkey/下,然后建立软链接(incoming中的files是电驴目录,directories是BT目录):
    $ ln -s ~/home/v/.mldonkey/incoming ~/.mldonkey/
    $ ln -s ~/home/v/.mldonkey/temp ~/.mldonkey/

    删除~/.mldonkey/web_infos下的level1.gz,并且要修改download.ini的web_infos将“guarding.p2p”, 96, “http://www.bluetack.co.uk/config/level1.gz” 的地址删除。

    *******************
    共享目录,修改地址即可
    shared_directories = [
    { dirname = shared
    strategy = all_files
    priority = 0
    };
    { dirname = "/home/v/.mldonkey/incoming/files"
    strategy = incoming_files
    priority = 0
    };
    { dirname = "/home/v/.mldonkey/incoming/directories"
    strategy = incoming_directories
    priority = 0
    };]
    *******************
    服务器和KAD节点:
    在WEB最上方"DL"和"imput"中间的命令输入栏里输入:
    rem all //清空server list
    点击"servers"标签里的"import server.met" 输入 http://ed2k.im/server.met
    或: servers "~/youdir_path/server.met" //回车导入服务器列表
    或修改 downloads.ini 找到web_infos,把server.met换成你要的服务器,比如 http://ed2k.im/server.methttp://www.emule.org.cn/server.met(verycd) 或 http://gruk.org/server.met.gz
    然后下载kad node列表 http://upd.emule-security.org/nodes.dathttp://ed2k.im/nodes.dathttp://emule-inside.net/nodes.dat 到本地,然后在输入栏里输入:
    ov_load "~/yourdir_path/contact.dat" 回车
    kad_load "~/yourdir_path/nodes.dat" 回车

    ********************
    mldonkey配置:
    options //这里面是mldonkey的设置选项。为了方便,大家可以点ALL (显示所有选项)然后按CRTL + F 搜索下列选项进行设置
    client_name //修改用户名
    ED2K-connect_only_preferred_server //此选项为只连接优先选定的服务器 默认false 想使用就设置成ture 理论上这样就避免了连接资源量小和无用的服务器但是如果你不懂怎样判断服务的好坏就不要动它。(我没有设置感觉对速度没太大的影像)如何设置优先级服务器下文有说明
    ED2K-force_client_high_id //选择true它表示强制客户端为高ID
    ED2K-force_high_id 选择 true //它表示强制自己为高ID <当高ID可用的时候>
    如果是内网低ID用户的就不要选了,否则很难连上服务器,也可以自己试试,不行就取消。
    ED2K-good_client_rank //它表示需要维持连接的客户端长度,默认500,第500以外的客户端将断开,等待下一次访问
    ED2k-keep_best_server //保持使用最好的服务器
    ED2K-max_connected_servers :20 //同时连接服务器的最大数(一般最后只会稳定在三四个)。
    ED2K-port : //一般情况默认即可,但有些宽带运营商会封掉 eMule默认使用的4662端口,还有些路由器需要端口映射,那么就需要修改这个了。
    ED2K-port //设置端口
    ED2K-update_server_list_client //从连接到的客户端里更新服务器列表,建议关闭,否则会出现一些垃圾服务器
    ED2K-update_server_list_server //从连接的服务器里更新服务器列表,建议关闭,否则会出现一些垃圾服务器
    ED2K-update_server_list_server_met //从服务器列表文件更新服务器,必须打开
    enable_kademlia true //使用kda网络
    enable_overnet true //使用overnet网络
    hdd_temp_minfree //临时目录最小可用空间,默认大小设置为50M
    hdd_temp_stop_core //如果临时目录的可用空间少于上面设置的指定值,程序就会自动停止
    max_hard_download_rate //下载速度 按你的带宽修改,单位是KB/s
    max_hard_upload_rate //上传速度 同样按你带宽修改
    max_indirect_connections //非直接连接 这个范围是30-70,如果你想要更多的连接,可以修改高一点
    max_opened_connections //最大开放连接数 默认是200 这个最大可以到924 设置同上这里还有max_hard_download_rate2 max_hard_upload_rate2 和max_opened_connections_2这是一套缓速模式你可以设置一组较小的数值 通过Transfer页面下面的Bandwidth Toggle转换。可以在上网时转换成缓速模式 避免影响上网速度
    share_scan_interval //共享目录的检查时间,单位分钟,默认是120分钟,0是不检查共享目录
    temp_directory //缓存路径,可以修改成你想要的路径

    ***缓存设置(windows的注意,linux请忽略)
    缓存设置 Options - Settings - Delays
    buffer_writes:是否打开缓存写入,建议打开
    buffer_writes_delay:写入缓存时的延迟时间,单位为秒,建议30.或者更高
    buffer_writes_threshold:缓存到了指定值时强制写入,单位为KB,默认1024KB
    client_buffer_size //表示缓存的总大小,单位字节,默认值是500000,即50MB,内存是不很吃紧的建议设大点

    sancho的设置:
    sancho:主要-可选的可执行core 那里填上你的mlnet路径。这样可以在启动sancho时一并启动CORE。(不建议把退出sancho时退出core选上 ,这样平时就可关掉图形界面节省资源 ,用wed界面 监视进度;我不设,这样可单独运行core避免重复启动core)

    *****************
    左边黄框内的"R,P,C"分别代表: Resume (继续), Pause (中止), Clear (删除下载), 右边的黄框Resume All (全部继续), Pause All (全部中止), Clear All (全部删除). 选择操作后,再点击右面黄框最后的"Submit Changes"就会使改变生效. 请注意不要误操作.

    *****************
    备份一些主要的配置文件:
    ~/.mldonkey/downloads.ini //基本的设置( 这个是for edonkey和其他协议的)
    ~/.mldonkey/servers.ini //服务器列表文件
    ~/.mldonkey/files.ini //当前下载的文件列表及其 md4-hash
    ~/.mldonkey/shared_files_new.ini //存储共享的文件列表及其 md4-hash
    ~/.mldonkey/friends.ini //好友列表
    ~/.mldonkey/statistics.ini 存储上传下载的统计信息
    另外其他的网络协议都有其单独的配置文件,一般都放在~/.mldonkey目录下
    如果软件要升级或迁移,建议备份downloads.ini、file_sources.ini、files.ini、shared_files_new.ini、donkey.ini、stats.ini和nodes.dat

    ********** 几个常用的命令 ************
    正确关闭core 在DL Input中或控制台输入kill 即保存和退出core
    dllink 下载以ed2k、sig2dat、BT种子等链接形式给出的文件,比如ed2k打头的ed2k文件hash
    dllinks 下载指定文件中的所有url(允许有空行)
    dd 下载一个已知大小和md4-hash码的文件
    http 从一个http/ftp/ssh url下载文件(注:FTP尤其是SSH仍处于实验阶段)
    mirror 给指定编号下载任务添加源(镜像),其中file_num由vd得到(这是迅雷的强项)
    merge 这是条强大的命令。这条命令将不同协议(ed2k/BT/HTTP/FTP等)但文件相同的下载任务链接到一起(可以说是mirror的升级版),其中 file1是主文件,不能取消链接(注:这条命令仍处于实验阶段)
    force_download : 强制重新下载一个已经下载的文件。用法是,先用d/dd/dlink等命令下载文件,mldonkey会提示该文件已经下载,此时键入此命令
    vd [] 不加参数将会列出所有处于下载队列中的下载任务信息,加上参数num则列出指定编号的下载任务
    pause 暂停指定编号下载任务,all暂停所有任务,编号由vd获得
    resume 恢复指定编号下载任务,用法同pause
    commit 将完成下载的文件从download文件夹移动到income文件夹,文件夹的具体位置在download.ini中设置
    startbt 开始一个BT下载任务
    stop_all_bt 停止所有BT下载
    rm_old_torrents 移除所有旧的BT种子文件
    tracker [...] 给指定编号的BT热任务添加tracker服务器
    priority [...] 改变下载任务的优先级
    rename “” 重命名一个已经完成下载的文件
    kill 保存配置文件并关闭mldonkey客户端
    alias 自定义命令,如: “alias ca cancel all”,使得 “ca” 等于”cancel all”
    unalias 删除由alias设置的自定义命令,如 : “unalias ca”
    import 从指定目录导入edonkey官方客户端的下载任务
    import_temp 从eDonkey / eMule / lMule临时文件目录导入未完成的下载,
    port 改变ed2k端口,默认是4662,改变在重启core后生效
    reset_md4 重置客户端的md4 hash(估计是被ban了才会用)
    ov_boot 添加一个overnet结点
    ov_boots 列出所有overnet结点
    ov_stats 显示Overnet网络状态
    kad_boot 添加一个kad结点
    kad_boots 列出kad网络结点信息
    kad_stats 显示kad网络状态
    scan_temp 列出临时目录下的文件
    recover_bytes [ ...] 尝试修复指定的部分下载的文件(字节级别),未完成部分用非零字节填充(最好用verify_chunks进行校验),file_num由vd得到,见选项max_recover_gap。
    recover_temp 从指定目录恢复未完成的下载。这个命令的作用是恢复那些文件信息丢失(files.ini)但是下载数据还在的下载任务,重建文件信息。并且只能恢复文件中已经完成的块(chunck)。
    verify_chunks 按块(chunk)检查文件的正确性,num由vd获得
    portinfo 列出mldonkey的端口使用情况
    servers : 从一个server.met文件中添加服务器
    vm 列出已连接服务器
    vma 列出所有已知服务器
    n [<端口>] 添加服务器
    c [] 连接到更多服务器(或者连接到号服务器)
    x 断开与号服务器的连接
    id 列出本机在已连接服务器上的id
    preferred true/false ip 设置/取消 首选服务器
    bs [ ...] 将所给ip加入服务器黑名单
    bp [ ...] 将所给端口加入端口黑名单
    rem [ ...] 从服务器列表移除指定服务器 ( all 清空服务器列表,即所有服务器 )
    remove_old_servers 移除几天没有连接上的服务器

    ************ kvm *************
    安装:
    首先检查Bios中是否已经打开VT-x(intel)或者SVM(AMD)支持。
    egrep ^flags.*(vmx|svm)* /proc/cpuinfo 或 egrep ^flags.*(vmx)* /proc/cpuinfo
    1. 安装kvm和virt软件包
    $sudo apt-get install kvm ubuntu-virt-server kvm-pxe bridge-utils uml-utilities (bridge-utils用来做桥接,uml-utilities用来虚拟网卡)
    $sudo apt-get install virt-manager qtemu qemu-launcher (3种图形化管理工具,后面两种不好用)
    $sudo apt-get install python-vm-builder (创建基于Ubuntu的虚拟机的脚本,可选)
    $sudo apt-get install xserver-xorg-video-qxl spice-client (可以使用spice的半虚拟化图形驱动和连接)

    2. 配置kvm
    加载相关内核模块:
    $sudo modprobe kvm
    $sudo modprobe kvm-amd ( or kvm-intel )
    验证加载成功:
    $lsmod | grep kvm
    kvm_amd 57664 0
    kvm 352726 1 kvm_amd


    3. 确认开启libvirtd后台服务
    $sudo service libvirt-bin status
    libvirt-bin start/running, process 2612

    4.添加用户权限(加入用户组)
    $sudo useradd libvirtd
    $sudo useradd kvm
    $sudo useradd disk //允许使用物理硬盘可选择
    $sudo useradd uml-net

    一.创建一个操作系统镜像
    $ qemu-img create -f qcow2(或raw默认) G

    二.在镜像中,安装一个操作系统
    kvm后续版本使用qemu-system-x86_64 或 kvm 命令代替了qemu-kvm

    桥接安装: qemu-system-x86_64 -smp 4 -m 768 -drive file=/home/kk/kvm/xp.img,cache=writeback -boot d -cdrom /home/kk/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso -vga std -soundhw es1370 -usb -usbdevice tablet -net nic,vlan=0,macaddr=08-00-27-33-52-B7 -net tap,vlan=0,ifname=tap0,script=no -localtime


    内网: qemu-system-x86_64 -smp 4 -m 768 -drive file=/home/kk/kvm/xp.img,cache=writeback -boot d -cdrom /home/kk/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso -net nic,model=virtio,macaddr=08-00-27-33-52-B7 -net user -localtime -vga std -soundhw es1370 -usb -usbdevice tablet

    三.运行系统 (内网)
    qemu-system-x86_64 -smp 4 -m 1024 -drive file=/home/kk/kvm/xp2.img,cache=writeback,if=virtio,boot=on -boot c -vga std -net nic,model=virtio,macaddr=08-00-27-33-52-B7 -net user -localtime -soundhw es1370 -usb -usbdevice tablet -daemonize

    使用spice:
    spice的半虚拟化客机图形驱动下载地址:http://spice-space.org/download.html 下载windows客机驱动

    kvm -smp 4 -m 1516 -drive file=/home/kk/kvm/xp2.img,cache=writeback,if=virtio -boot c -vga qxl --full-screen -net nic,model=virtio,macaddr=08-00-27-33-52-B7 -net user -localtime -soundhw ac97 -usb -usbdevice tablet -spice port=3636,disable-ticketing

    /usr/bin/spicec -h localhost -p 3636

    *******半虚拟化客机驱动下载地址:
    http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers //磁盘
    http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ //磁盘
    http://www.linux-kvm.com/sites/default/files/vmwarevga64-kvm.iso //vmware
    http://www.linux-kvm.com/sites/default/files/vmwarevga32-kvm.iso //vmware
    http://fr.sourceforge.jp/projects/sfnet_kvm/releases/ //网络
    http://sourceforge.net/projects/kvm/files/ //网络
    http://spice-space.org/download.html //客机qxl视频驱动

    *************************
    qemu-system-x86_64一些参数:
    善用帮助 kvm --help kvm-img --help
    -m 1024 //设置虚拟系统内存1024MB,缺省内存为128M
    -localtime //使虚拟系统与宿主系统时间一致,最好用在网络启动后获得时间
    -no-acpi //不使用acpi,原因支持不太好,安win7最好不用
    -clock rtc //使用主机时钟,经实验大多不能用
    -M pc //虚拟系统类型为pc
    -drive file=/PATCH/xp.img //指定镜像
    cache=writeback //缓存设置,据说用在virtio之前会更好。writethrough(不使用缓存直接写),writeback(回写),none(无,不设置)
    -hda/-hdb/-hdd/-hdc “文件名” //使用“文件名”作为硬盘0/1/2/3镜像
    -fda/-fdb “文件名” //使用“文件名”作为软驱磁盘0/1镜像
    -smp 4 // 4个CPU
    -drive file=WindowsXP_x86.img,cache=writeback,boot=on //硬盘选项,虚拟磁盘是Windows7_x86.img,cache方式为writeback,可引导型磁盘。
    -net tap[,vlan=n][,fd=h][,ifname=name][,script=file] //将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄.例如:
    -net nic,macaddr= f8:6d:08:08:f5:5k //创建网卡选项,手工指定mac地址
    -net nic[,vlan=n][,macaddr=addr] //创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果没有指定-net选项,则会创建一个单一的NIC.
    -net user[,vlan=n] //使用用户模式网络堆栈,这样就不需要管理员权限来运行.如果没有指定-net选项,这将是默认的情况.
    举例: -net nic,vlan=0,macaddr= f8:6d:08:08:f5:5k -net tap,vlan=0,ifname=tap0,script=no
    -cdrom // WindowsXP.iso 光驱,使用物理光驱为/dev/cdrom
    -boot d // 启动顺序。d代表光驱。
    -boot c //从硬盘启动
    -name kvm-win7,process=kvm-winXP //为虚拟机取名,便于识别
    -vnc 127.0.0.1:0 //打开vnc远程支持
    -vnc :2 //这里是通过vnc连接控制窗口,这里是在5902端口。client可用IP:2连接。
    -usb //允许使用usb设备
    -usbdevice tablet //启用usb设备中的tablet功能。开启该功能可使虚拟机内外的鼠标同步
    -vga std //使用vga视频驱动,cirrus vmware std none
    -daemonize //表示kvm以后台运行
    -redir tcp:3389::3389 //将虚拟机的3389端口映射为宿主机的3389端口上,这样rdesktop本机就可以进行远程桌面访问了
    -full-screen //以全屏方式启动

    ***另外,在安装了磁盘和网卡的半虚拟化驱动后,可以在-drive中加入if=virtio使用磁盘半虚拟化,在-net nic中加入model=virtio使用网卡半虚拟化驱动。

    *** VM视频驱动下载 http://www.linux-kvm.com/sites/default/files/vmwarevga64-kvm.iso
    http://www.linux-kvm.com/sites/default/files/vmwarevga32-kvm.iso
    *** qemu -soundhw ? 查询声音支持 -soundhw es1370
    *** kvm -clock ? //查询时钟类型 有dynticks;hpet;rtc;unix
    *** KVM 的 XP 虚拟机鼠标会有漂移问题 添加 -usbdevice tablet
    *** 共享 主机设置好samba,客机XP中网上邻居直接可视
    *** 无敌模式 -snapshot 意思是不更改镜像文件,启动后的所有改动均不会往镜像文件上写。临时文件存放在内存中了,具体是cached,可以通过按下Ctrl-a s来强制写回磁盘镜像文件

    *** 高速网络(需要virtio驱动) -net nic,model=virtio -net user
    虚拟网络模块 网络传输速度(ssh) 客户机操作系统 网络状态
    rtl8029 200-300KB/s SLES10SP2 (kernel 2.6.16-60) 不稳定
    e1000 4.8-5.4MB/s SLES10SP2 (kernel 2.6.16-60) 稳定
    virtio 10.6-11.1MB/s SLES11 (kernel 2.6.27-19) 稳定
    驱动下载地址:http://sourceforge.net/projects/kvm/files/
    名字是 kvm-driver-disc 的 NETKVM-20081229.iso
    具体可能有变化,使用命令:
    kvm -m 1024 -drive file=xp.img -cdrom /home/PATCH/NETKVM-20081229.iso -enable-kvm -net nic,model=virtio -net user
    其中:-cdrom是加载光驱的意思。网络默认设置是 (-net nic -net user) 这里由于要指定virtio模块所以要把命令加上。然后自动安装驱动就行了。听说速度接近真实网卡----明显是为打造虚拟服务器配置的。以后在启动虚拟机命令后面加上-net nic,model=virtio -net user就可以了。

    *** 高速IO虚拟 VirtIO paravirtual 是 Linux 虚拟机平台上统一的虚拟 IO 接口驱动,让客户机像在真实环境中一样运行。
    下载地址:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers //viostor是磁盘的虚拟驱动。把-hda xxx.img 替换为 -drive file=/home/PATCH/virt/xp.img,if=virtio,boot=on 意思是使用virtio磁盘系统,并作为启动盘(默认是boot=off,作为附加的第二硬盘)。第一次使用的时候记得挂载viostorXXXX.img。
    注:安装时用qemu-img create -f qcow2 来创建第二块硬盘,并做从盘挂载:-drive file=/home/PATCH/xp2.img,if=virtio,boot=off,进入系统后完成virtio磁盘scsi驱动安装后即可。

    *** 使用金手指“母镜像”功能
    要求,镜像格式为 qcow2 。作用:在“母镜像”的基础上,建立一个新的镜像。虚拟机操作这个新镜像时不会对“母镜像”
    进行任何更改(只读“母镜像”),新镜像只保存由于操作产生的与“母镜像”的数据差异(大小很小)。
    由此实现超越“快照”“还原点”的金手指功能(数量没有限制)。
    命令(先cd 到你要保存镜像的位置):
    $ kvm-img create -b xp.img -f qcow2 xp.test
    其中xp.img是“母镜像”(参数 -b xxx),xp.test是新镜像----只能用 qcow2 格式。
    新镜像的使用:正常使用即可。

    *** 镜像格式转换,镜像信息查询
    能转换的格式有:raw,qcow2,qcow,cow,vmdk,cloop
    如果你记不清你创建的镜像是什么格式的,可以使用命令(先cd 到你要保存镜像的位置):
    kvm-img info xxx.img
    关于格式的优缺点,请参看高级篇
    转换命令(先cd 到你要保存镜像的位置):
    *** kvm-img convert -f raw -O qcow2 xp.img xp.qco
    转换并压缩镜像:
    kvm-img convert -c /path/srcyouxp.img -O qcow2 /path/outyouxp.img
    注意:-O是字母o的大写。
    这条命令举例的意思是:把名为xp.img格式为raw的镜像转换成新镜像xp.qco格式为qcow2
    其它格式"vmdk"是 VMware 3 / 4 兼容镜像格式。
    fmt 指镜像格式;一般单位使用 G M b
    "raw" Raw disk image format (默认).该格式精简,易被多种虚拟机接受。如果你的系统支持 holes (如 linux 的 ext2 ext3 ext4? windows 的 NTFS),那么它将有效节约空间(比如你创建的磁盘是2G,虚拟系统只使用了800M,那么它实际也只占用800M的空间)。使用命令“kvm-img info 镜像文件名”,将显示实际使用的大小。linux用户还可以使用“ls -ls”命令直接查看。
    "qcow2" QEMU 镜像格式, 使用最多的格式. 创建的镜像比较小(用多少就占多少),对于系统文件不支持 holes 的(比如windows系统下使用qemu)很有帮助。可进行AES加密,zlib基本压缩,并支持多种VM的快照(snapshots)。安装vista或win7最好用qcow2。
    "qcow" 古老的 QEMU 镜像格式.
    "cow" 不能运行win32
    "vmdk" VMware 3 / 4 兼容镜像格式

    ***主机挂载raw和qcow2镜像,raw扩容
    1.挂载qcow2
    sudo modprobe nbd max_part=n //加载nbd特殊设备模块,n=?自定
    sudo qemu-nbd --connect=/dev/nbd0 xxx.img //转换镜像为nbd设备,可用参数-c简化
    sudo mount /dev/nbd0p1 /挂载点 //以nbd设备挂载,这里多个p1目录深度
    sudo umount /挂载点 //卸载
    sudo qemu-nbd --disconnect /dev/nbd0 //卸载nbd设备
    sudo modprobe -r nbd //移除nbd模块

    2.挂载raw
    sfdisk -l -uS xx.img //查看镜像或分区表,实际偏移的字节数等于512×柱面的偏移数(即起始位置的数字),然后直接mount即可sudo mount -o loop,offset=乘出来的值 挂载对象 挂载点

    3.镜像扩容
    $ qemu-img convert -O raw image.qcow2 image.img
    $ dd if=/dev/zero of=image.img bs=1G count=0 seek=[NUMBER_OF_GB]
    $ qemu-img convert -O qcow2 -o cluster_size=64K image.img imageplus.qcow2
    $ qemu-kvm -hda imageplus.qcow2 -m 512 -cdrom
    -boot d -vga std
    $ fdisk /dev/sda [delete the partition, create new one occupying whole disk]
    $ e2fsck -f /dev/sda1
    $ resize2fs /dev/sda1


    *** 更换光盘及ISO
    按 ctrl+art+2 进入qemu-shell
    info block //得到光驱信息 ide1-cd0
    eject ide1-cd0 //弹出光驱
    change ide1-cd0 /home/PATH/xxx.iso //更换光盘镜像
    按 ctrl+art+1 返回系统可看到更换后的光盘

    *** 客机使用主机 usb 设备
    主机中lsusb或客机中ctrl+art+2进入kvm命令界面(qemu)info usbhost返回如下:
    Bus 002 Device 010: ID 05e3:0723 Genesys Logic, Inc.
    即该usb设备的vid是05e3;pid是0723;bus号即是:2.10
    可以用usb_add host:05e3:0723 或 usb_add host:2.10 来加载usb设备
    usb_del卸载设备;info usb来查看已有哪些被加载;ctrl+art+1返回虚拟桌面
    挂载USB需要sudo;否则出现Permission denied无权限提示,所以当需要使用USB设备时加入sudo kvm......

    快捷键:
    Ctrl-Alt-f 全屏
    Ctrl-Alt-n 切换虚拟终端'n'.标准的终端映射如下: * n=1 : 目标系统显示 * n=2 : 临视器 * n=3 : 串口
    Ctrl-Alt 抓取鼠标和键盘
    在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动.
    在模拟时,如果我们使用`-nographic'选项,我们可以使用Ctrl-a h来得到终端命令:
    Ctrl-a h 打印帮助信息
    Ctrl-a x 退出模拟
    Ctrl-a s 将磁盘信息保存入文件(如果为-snapshot)
    Ctrl-a b 发出中断
    Ctrl-a c 在控制台与监视器进行切换
    Ctrl-a Ctrl-a 发送Ctrl-a
    sendkey ctrl-alt-f2 在qemu-shell中发送 ctrl+alt+f2


    ********** 桥接带IP转发的宿主机网络配置 ************

    在主机上创建一个网络桥
    1.安装bridge-utils
    sudo apt-get install bridge-utils uml-utilities (bridge-utils用来做桥接,uml-utilities用来虚拟网卡)

    2.我们将改变网络设置,先停止网络 invoke-rc.d stop

    sudo /etc/init.d/networking stop

    3. sudo gedit /etc/network/interfaces 可以直接用下面的替换。

    ****adsl用pppoeconf拨号配置
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual #可以为dhcp,指定ip亦可,这里使用默认配置

    auto tap0
    iface tap0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user kk

    auto br0
    iface br0 inet static #这里也可以使用dhcp分配
    bridge_ports eth0 tap0 #多tap这里要逐个加上
    address 192.168.1.6
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    auto dsl-provider
    iface dsl-provider inet ppp
    pre-up /sbin/ifconfig br0 up # line maintained by pppoeconf ##注意这行不再是eth0而是br0,和直接用pppoeconf连adsl是不同的
    provider dsl-provider

    ****局网内KVM桥接配置,不必安装pppoeconf和network-manager
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual

    auto tap0
    iface tap0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user kk


    auto br0
    iface br0 inet dhcp //dhcp模式
    bridge_ports eth0 tap0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    auto br0
    iface br0 inet static //静态IP模式
    address 192.168.0.10
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    bridge_ports eth0 //若要桥接多个网卡,这里加上
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0


    注1:tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。
    注2:虚拟机中转发的IP设为br0的网关IP即可。
    注3:如果用户未加入uml-net组,则会遇到could not open /dev/net/tun: no virtual network emulation这是无/dev/net/tun读写权限造成的,如无tun.ko则编译内核。make menuconfig选择network device support->universal TUN/TAP device driver support;dummy network driver support;bonding driver support(同时设为M);若ls /dev/net/tun有返回信息则 sudo chmod o+rw(或0666) /dev/net/tun。 另外主机中再分配一个有线连接来实现转发的接收 sudo ifconfig eth0:1 192.168.1.8 broadcast 192.168.1.255 netmask 255.255.255.0即可。
    注4:客机中要设转发IP为br0指定的网关,最好指定一个DNS如8.8.8.8。

    *********************************

    4.启动tap和br0
    sudo /sbin/ifup tap0
    sudo /sbin/ifup br0
    如果没有eth0和lo的话需要重启网络
    sudo /etc/init.d/networking restart

    如果同时运行多个GUEST OS ,则网络设置要改一下,在/etc/network/interfaces 里加几个tap界面就行了,每个GUEST OS单独使用一个TAP,MAC也要改.

    sudo ifconfig br0 down ; sudo ifconfig eth0 down ; sudo ifconfig lo down ; sudo ifconfig tap0 down ; sudo ifconfig virbr0 down

    ***************** 换回主机直接连adsl的方案,kvm转为net *************
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual
    pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf

    auto dsl-provider
    iface dsl-provider inet ppp
    provider dsl-provider


    5.使用(安装virtio驱动并使用金手指)

    qemu-system-x86_64 -smp 4 -m 768 -drive file=/home/kk/kvm/xp2.img,cache=writeback,if=virtio,boot=on -boot c -vga std -soundhw es1370 -usb -usbdevice tablet -net nic,model=virtio,vlan=0,macaddr=08-00-27-33-52-B7 -net tap,vlan=0,ifname=tap0,script=no -redir tcp:3389::3389 -localtime -daemonize

    *********************** 远程连接rdesktop *********************
    *** rdesktop IP或localhost -u 客机用户名 -p 密码 -g 1024x768 -z -D -N -k en-us -r clipboard:PRIMARYCLIPBOARD -r sound:local
    *** IP是客机里内网转发的IP,或远程主机IP。
    ***(图形界面 tsclient 终端服务客户端Terminal Server Client)
    -r disk:G=/home/zhb,在windows中建立网络磁盘G,映射到linux系统的 /home/zhb
    -r clipboard:PRIMARYCLIPBOARD 远程共享复制粘贴
    -r sound:local //本地播放远程声音
    -z 压缩
    -a 16 色深
    -g 1024x768+X+Y //workarea 使用可用屏幕(去除掉顶上的面板和下面的任务栏部分)+X+Y(X,Y为具体数字即X轴Y轴偏移量)
    -u 远程用户
    -p 远程用户密码
    -k en-us 键盘
    -f 全屏
    -D 不显示窗口的装饰,也就是标题栏
    -K 保持窗口管理器的按键组合绑定
    -x lan|modem 用来决定网络带宽
    -N 同步开启小键盘
    -x 0x80 用于win7字体平滑功能

    退出全屏:ctrl+art+enter

    xp:需要打开的远程服务:Server,Terminal Services, Telnet, NT LM Security Support Provider

    ********************************** GUIKVM *************************************************
    1. 首先检查Bios中是否已经打开VT-x(intel)或者SVM(AMD)支持。
    egrep ^flags.*(vmx|svm)* /proc/cpuinfo 或 egrep ^flags.*(vmx)* /proc/cpuinfo

    2. 检查kernel版本,确认不是运行在Xen下(kvm与Xen不兼容)
    $uname -a
    Linux XXXXXX-ThinkCentre-M58p 2.6.38-11-generic #48-Ubuntu SMP Fri Jul 29 19:05:14 UTC 2011 i686 i686 i386 GNU/Linux

    3. 安装kvm和virt软件包
    $sudo apt-get install kvm ubuntu-virt-server kvm-pxe bridge-utils uml-utilities (bridge-utils用来做桥接,uml-utilities用来虚拟网卡)
    $sudo apt-get install virt-manager qtemu qemu-launcher (3种图形化管理工具,后面两种不好用)
    $sudo apt-get install python-vm-builder (创建基于Ubuntu的虚拟机的脚本,可选)

    4. 配置kvm
    加载相关内核模块:
    $sudo modprobe kvm
    $sudo modprobe kvm-amd ( or kvm-intel )
    验证加载成功:
    $lsmod | grep kvm
    kvm_intel 47162 0
    kvm 317577 1 kvm_intel

    5. 确认开启libvirtd后台服务
    $sudo service libvirt-bin status
    libvirt-bin start/running, process 2612

    6. 配置网络
    在libvirt软件包安装完成之后,会默认配置一个虚拟的网络桥接设备virbr0。它提供了一个虚拟网络供guest使用(通过NAT转发,提供从guest到外部网络-outbound的通讯)。其默认ip地址为192.168.122.x。
    $ifconfig virbr0
    virbr0 Link encap: ethernet XXXXXXX
    inet address: 192.168.122.1 XXXXXX
    如果要获得完整的网络访问(inbound/outbound),进行如下配置(可选):
    $sudo apt-get install bridge-utils uml-utilities
    $sudo vi /etc/network/interface:
    Shell代码
    auto lo
    iface loinet loopback

    #添加以下部分
    auto eth0
    iface eth0 inet dhcp

    auto br0
    iface br0 inet dhcp
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

    $sudo /etc/init.d/networking restart
    检查网络配置
    $ifconfig
    可以同时看到br0和eth0
    $sudo reboot (重新启动,否则可能会遇到“open /dev/kvm: Permission denied ”类似错误)

    7. 添加用户权限(加入用户组)
    $sudo useradd libvirtd
    $sudo useradd kvm
    $sudo useradd disk //允许使用物理硬盘可选择
    $sudo useradd uml-net

    8. 用virt-manager创建kvm guest
    启动virt-manager
    $virt-manager

    ************************** 与vbox的冲突(安装独立vbox包可以正常用,未测试同时用) ************************************

    当你安装了 virtual box 然后又安装kvm,那么当你再次打开开virtual box 的时候,vmbox就会报错.

    1.查看相关正在运行的mod

    lsmod | grep kvm

    2.停止模块运行

    如果你的cpu是AMD:sudo rmmod kvm-amd

    如果是Intel:sudo rmmod kvm

    3.卸载模块

    如果你的cpu是AMD:sudo modprobe -r kvm-amd

    如果你的cpu是Intel:sudo modprobe -r kvm-intel

    sudo modprobe -r kvm

    4.完全卸载
    sudo aptitude purge kvm qemu-kvm
    sudo apt-get remove kvm qemu-kvm

    ******** virtualbox *********
    *********** vbox组网方式 ************
    VirtualBox是一款SUN出品的非常优秀的虚拟机程序,版本也非常齐全,你可以在官网上找到适合各种操作系统平台的版本。
    这里我先给大家大致讲解下VBox的网络配置及应用。
    VirtualBox的提供了四种网络接入模式,它们分别是:
    1、NAT    网络地址转换模式(NAT,Network Address Translation)
    2、Bridged Adapter    桥接模式
    3、Internal    内部网络模式
    4、Host-only Adapter  主机模式
    下面我们分别对这四种网络模式进行分析解释:

    第一种 NAT模式
    解释:
    NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。
    虚拟机与主机关系:
    只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
    虚拟机与网络中其他主机的关系:
    只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
    虚拟机与虚拟机之间的关系:
    相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
    IP:10.0.2.15
    网关:10.0.2.2
    DNS:10.0.2.3
    一台虚拟机的多个网卡可以被设定使用 NAT, 第一个网卡连接了到专用网 10.0.2.0,第二个网卡连接到专用网络 10.0.3.0,等等。默认得到的客户端ip(IP Address)是10.0.2.15,网关(Gateway)是10.0.2.2,域名服务器(DNS)是10.0.2.3,可以手动参考这个进行修 改。
    NAT方案优缺点:
    笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后(最后有说明),主机可以访问虚拟机上的服务(如数据库)。
    笔记本没插网线时: 主机的“本地连接”有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。

    第二种 Bridged Adapter模式
    解释:
    网桥模式是我最喜欢的用的一种模式,同时,模拟度也是相当完美。你可以这样理解,它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。
    虚拟机与主机关系:
    可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
    虚拟机于网络中其他主机关系:
    可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
    虚拟机于虚拟机关系:
    可以相互访问,原因同上。
    IP:一般是DHCP分配的,与主机的“本地连接”的IP 是同一网段的。虚拟机就能与主机互相通信。
    笔记本已插网线时:(若网络中有DHCP服务器)主机与虚拟机会通过DHCP分别得到一个IP,这两个IP在同一网段。 主机与虚拟机可以ping通,虚拟机可以上互联网。
    笔记本没插网线时:主机与虚拟机不能通信。主机的“本地连接”有红叉,就不能手工指定IP。虚拟机也不能通过DHCP得到IP地址,手工指定IP后,也无法与主机通信,因为主机无IP。
    这时主机的VirtualBox Host-Only Network 网卡是有ip的,192.168.56.1。虚拟机就算手工指定了IP 192.168.56.*,也ping不能主机。

    第三种 Internal模式
    解释:
    内网模式,顾名思义就是内部网络模式,虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
    虚拟机与主机关系:
    不能相互访问,彼此不属于同一个网络,无法相互访问。
    虚拟机与网络中其他主机关系:
    不能相互访问,理由同上。
    虚拟机与虚拟机关系:
    可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。
    IP: VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.*。
    笔记本已插网线时:虚拟机可以与主机的VirtualBox Host-Only Network 网卡通信
    这种方案不受主机本地连接(网卡)是否有红叉的影响。

    第四种 Host-only Adapter模式
    解释:
    主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。
    我们可以理解为Vbox在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
    虚拟机与主机关系
    默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
    虚拟机与网络主机关系
    默认不能相互访问,原因同上,通过设置,可以实现相互访问。
    虚拟机与虚拟机关系
    默认可以相互访问,都是同处于一个网段。
    虚拟机访问主机 用的是主机的VirtualBox Host-Only Network网卡的IP:192.168.56.1  ,不管主机“本地连接”有无红叉,永远通。
    主机访问虚拟机,用是的虚拟机的网卡3的IP: 192.168.56.101  ,不管主机“本地连接”有无红叉,永远通。
    虚拟机访问互联网,用的是自己的网卡2, 这时主机要能通过“本地连接”有线上网,(无线网卡不行)

    通过对以上几种网络模式的了解,我们就可以灵活运用,模拟组建出我们所想要的任何一种网络环境了。
    比如我想模拟出来一个一台主机,监控一个局域网上网情况的网络环境。
    首先我开启了两台虚拟机vhost1与vhost2,当然如果硬件允许,我同样可以再增加vhost3、vhost4…
    所有的vhost我都设置成internat内网模式,网络名称为intnal,网关为192.168.56.100,意思就是通过 192.168.56.100网卡上网。其中有一台vhost1我设置为双网卡,一张为内网模式(192.168.56.100),一张为网桥模式 (192.168.1.101)。两张网卡设置双网卡共享上网
    虚拟机之间为局域网,其中有一台虚拟机vhost1通过与外网相连,所有局域网中的虚拟机又通过vhost1来实现上外网。这样vhost1就可以监控整个虚拟机局域网上网情况了。

    NAT 设置端口映射
    http://huzhangsheng.blog.163.com/blog/static/34787784200802801435931/
    你可以设置一个虚拟机的服务(比如 WEB  服务),通过使用命令行工具 VboxManage 代理。你需要知道虚拟机的服务使用哪个端口,然后决定在主机上使用哪个端口(通常但不总是想要使虚拟机和主机使用同一个端口)。在主机上提供一个服务需要 使用一个端口,你能使用在主机上没有准备用来提供服务的任何端口。一个怎样设置新的 NAT 例子,在虚拟机上连接到一个 ssh 服务器,需要下面的三个命令:
    VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol' TCP
    VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort' 22
    VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort' 2222
    说明:VboxManage 是一个命令行程序,请查询你的 VirtualBox 安装目录,'Linux Guest' 是虚拟主机名。guestssh 是一个自定义的名称,你可以任意设置,通过上面的三个命令,把虚拟机的 22 端口 转发到主机的 2222 端口。
    又比如,我在虚拟机 debian 上安装了 apache2 服务器,使用 80 端口,映射到主机的 80 端口。使用下面的命令。
    'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/Protocol' TCP
    'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/GuestPort' 80
    'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/HostPort' 80
    注意:要使设置生效,请关掉 VirtualBox 再运行虚拟机,我把 VirtualBox 安装在 winxp 上,在虚拟机中安装 debian 4.02r ,虚拟机名是 debian ,并安装了 apache2 php5 mysql-server ,在主机上用IE浏览 http://localhost,成功转发到虚拟机 debian 的 apache2 web 服务器上

    ************ vb中Ubuntu数据空间 ***********
    sudo mkdir /mnt/ShareData
    sudo mount -t vboxsf Share /mnt/ShareData

    *********** VB中使用USB设备 *************
    ************** rpm系 *********************
    系统在开机过程中有其它模块加载了usbfs,从而造成usb权限在虚拟机中使用出现问题。

    /etc/hotplug/hotplug.fuctions
    /etc/hotplug/usb.agent
    /etc/hotplug/usb.rc
    /etc/rc.sysinit
    /etc/rc.d/rc.sysinit
    其实是4个,/etc/rc.sysinit是个连接,指向/etc/rc.d/rc.sysinit。
    从所在路径来看,/etc/rc.d/rc.sysinit应该是最有可能被系统加载的。就从它开始试。切换到root权限打开它,在第25-30行的内容是
    if [ ! -d /proc/bus/usb ]; then
    modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
    else
    mount -n -t usbfs /proc/bus/usb /proc/bus/usb
    fi
    usbfs应该就是在这里被加载的。
    把这几行都屏蔽掉,存盘,重启。
    进入虚拟机之后,一切OK了!
    U盘正常用,U口打印机正常

    或在/etc/rc.local中加入:
    chmod -R 777 /proc/bus/usb (终端中运行也可)

    *************** debian系 *****************

    1. 将当前用户添加到组vboxusers:
    gpasswd -a 用户名 vboxusers

    2. 修改/etc/fstab,在最后一行加入:
    none /proc/bus/usb usbfs devgid=XXX,devmode=664 0 0

    XXX(组ID)可通过cat /etc/group | grep vboxusers获得。

    ************** usb启动 **************
    sudo chmod o+rw /dev/sdb // /dev/sdb 为系统识别的U盘设备,每次动作前运行一次
    VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/UsbDisk.vmdk -rawdisk /dev/sdb -register //-register这个参数可能失效不能用,不使用也可。
    在virtualbox中把硬盘换成创建的 UsbDisk.vmdk 启动即可 //记得运行加权命令让virtualbox能检测到 UsbDisk.vmdk

    ************** 镜像文件转换 **************
    VBoxManage clonehd /path/srcxxx.vmdk /path/outxxx.vdi --format VDI //vmdk转换成vdi
    kvm-img convert -c /path/srcyouxp.img -O raw /path/outyouxp.img //利用kvm把qcow2或其它格式转换成raw
    VBoxManage convertfromraw /path/srcxxx.raw /path/out.xxx.vdi --format VDI //raw转换成vdi
    vboxmanager clonevdi srcvdi outvdi //克隆一个vdi磁盘

    ************** 镜像压缩 ***************
    一:处理客机空间填零
    windows客机:
    首先在客户机中安装SDelete软件, 可在下面的地址下载到:
    1. http://www.microsoft.com/technet/sysinternals/Security/SDelete.mspx

    然后在客户机中的终端里(及ms-dos窗口)输入

    2. path\sdelete -c c:\ //也说正确的应该是用 -z 参数

    如果有分区,依次对每一个分区进行空白磁盘空间的填写0处理。也就是将NTFS格式中的空白空间全部填写成‘0’。

    linux客机:
    方法一:
    1.1 用一张 LiveCD (ubuntu) 启动虚拟机,使用 System - Administration - GParted 分区软件,将虚拟硬盘空间收缩到最小,应用…
    1.2 在刚才腾出来的空间上建立新分区,执行 “sudo dd if=/dev/zero of=/dev/{?}”, 然后删除此分区
    1.3 回到主分区,恢复它的所有空间,应用 … 关机…

    方法二:
    2.1 sudo apt-get install zerofree //安装zerofree命令
    2.2 sudo init 1 //进入init.1
    2.3 sudo mount -n -o remount,ro -t ext4 /dev/sdb1 /mountpiont //以只读模式重新挂载你想压缩的硬盘命令,目的锁定只读而不真正写入,以防破坏数据
    2.4 sudo zerofree /dev/sdb1 //填零已挂载的硬盘命令,而不是mountpiont
    另可 sudo dd if=/dev/zero of=/mountpiont/zero.tmp //这时是可读写,创建一个全零文件,再删除
    sync && rm zero.tmp
    *** 所有客机处理完成后立刻关闭虚拟机。

    二:压缩客机磁盘
    VBoxManage modifyhd /path/youxp.vdi --compact //日,最后发觉要sudo
    VBoxManage modifyhd yourxpuuid --compact //uuid包括前后{};查看自cat ~/.VirtualBox/VirtualBox.xml,有时不行就用上面的方法

    ************** Debian运行级别 解决无法进入TTY ****************
    有时候debian无法进入 ctrl+art+f2-f6 的TTY。解决如下:
    一:图形界面下 sudo init 3 即可
    二:默认进入init 3
    1. sudo nano /etc/inittab //修改inittab,如无则另建
    #The default runlevel.
    id:3:initdefault:
    2. sudo mv /etc/rc3.d/S18gdm3 /etc/rc3.d/S18gdm3.bak //移动或删除 gdm 的链接

    ************ 转换文件编码 ***********
    iconv -f 输入编码 -t 输出编码 输入文件名 -o 输出文件名