linux学习总结

时间:2024.3.27

1.   从图型界面进入命令模式

 Gnome-terminal  进入命令终端

2.   设置开机自动进入命令模式

主菜单---->;系统工具----->;终端
这样可以在X下用控制台.

也可以选注销,直接进入命令模式.

如果想直接开机进命令模式,打开/etc/inittab文件中类似下面这行
id:5:initdefault
里边的5修改为3.保存,退出.重新启动就可以直接进入命令模式了.
在命令模式下,startx,回车,可以进入x windown.

方法1:按住ALT+F2~F7之间的任何一个功能键,都可切换到其它终端工作台并登录后进行操作。

方法2:在X图形界面打开一个X-term终端窗口进行操作。

方法3:如果要完全进入文本模式,打开一个终端窗口,输入init 3并回车即可。

方法4:以后一直进入文本模式,直接编辑/etc/inittab文件,把id:5:initdefault:之中的5改为3后存盘,以后每次启动都进入命令行方式。


注销就可以回到命令模式.或者ctrl+alt+backspace

3.     重启

Ctrl+Alt+Back Space

4.   linux 切换用户

su   root     ,也可以切换到其它用户,root是默认的,所以只要写su就可以了。

如果是临时切换可以用:
sudo   ls   ....

5.   虚拟机显示linux全屏

Ctrl+alt+enter

6.   vi 编辑器

7.   linux man 退出

q退出

8.   linux ls 分页

ls|more

ls |less

9.   VMare 下要用windows下的文件

先装vmaretools。再共享文件。然后在linux下才能看到/mnt/hgfs文件夹。共享文件夹

不懂得安装虚拟机VMware tools的想必都是刚在虚拟机上玩系统初学者,无疑我们对虚拟机的了解并不深,这使得本来很容易安装的VMware tools在我们安装时变得复杂而又难以琢磨,到头一直的付出因此却成空了。我自己在第一次安装虚拟机VMware tools时,的确遇到了许多得问题,上网查到得答案说得不是十分完整,全是只注重过程,因此,我在此详细的写完VMware tools的安装全程,让更多的初学者完全轻松的安装VMware tools。

在安装虚拟机VMware tools之前,你需要知道如下概念:
(1)虚拟机有免安装绿色版,也有非免安装绿色版,一般非免安装绿色版在你安装完虚拟机后,其目录下会自动生成VMware tools安装文件(windows.iso、linux.iso),而免安装绿色版因为是压缩包,里面有没有VMware tools安装文件那就要看发布这个包的人有没有把VMware tools安装文件打包在里面咯,如果没有,那你就要麻烦点,自己去下载咯。
(2)虚拟机可以装多个系统、多种系统(只要你硬盘够呛~),这大家都知道,然而VMware tools不是针对虚拟机的,而是针对系统的,也就是说假如你虚拟机装有两个系统(可以都是Windows XP),其中一个系统中安装了VMware tools,那么就只有安装了VMware tools的这个系统才能使用VMware tools的功能,另外一个系统并不能使用VMware tools,不要以为在一个系统中装了VMware tools,以后我装什么系统就不用安装VMware tools都可以使用VMware tools了,你哪个系统需要使用VMware tools,哪个系统就要安装VMware tools,这是一一对应的关系。
(3)VMware tools安装根据系统,就有不同的VMware tools镜像,不过大家都是ISO格式的包(windows.iso、linux.iso),安装的时候就要根据你的虚拟系统来选择再安装了,不要见到是*.iso格式就选了,比如Linux有Linux的VMware tools,一般命名为linux.iso,它最终是通过运行linux.iso包里面 *.pl 格式的文件进行VMware tools安装的,如果你是XP系统,VMware tools安装包一般命名为windows.iso,它最终是通过运行windows.iso包里面 steup.exe来运行安装的。
好了,你只需要弄清这三点,基本上是完全可以轻松安装VMware tools了,下面我给出安装过程。

10.          windows VMware tools安装步骤:


(1)在CD-ROM虚拟光驱中选择使用ISO镜像,找到VMWARE TOOLS 安装文件,如D:\VMware\VMware Workstation\Programs\windows.iso
(2)启动进入windows
(3)退出到windows,在虚拟机菜单栏中点击 虚拟机-> 安装 VMWARE TOOLS 子菜单,会弹出对话框,点击"确认" 安装
(4)此时,它会自动运行安装,你只管按“下一步”就可以安装完成了,如果它不自动运行的话,那你就进入光驱(G:)盘,找到一个stuep.exe文件双击安装就好,就这简单。

linux VMware tools安装步骤:
(1) 在CD-ROM虚拟光驱中选择使用ISO镜像,找到VMWARE TOOLS 安装文件,如D:\VMware\VMware Workstation\Programs\linux.iso
(2) 以ROOT身份进入LINUX
(3) 进入linux新建一个终端,输入 /sbin/telinit 3 进入纯文本模式,然后在纯文本模式下再次用root身份登陆
(4)退出到windows,在虚拟机菜单栏中点击 虚拟机-> 安装 VMWARE TOOLS 子菜单,会弹出对话框,点击"确认" 安装
(5 挂载光驱 mount /dev/cdrom /mnt/cdrom (注意命令中输入的空格)这时,你的linux.iso里面的文件就相当于windows光盘里面的文件了
(6) 使用 cd /mnt/cdrom 进入光驱,输入ls命令你会查看到有个*.tar.gz格式的文件(如vmware-linux-tools.tar.gz),然后输入命令CP vmware-linux-tools /tmp/将它复制到/tmp/目录下
(7)输入命令 cd /tmp 进入/tmp目录
(8)输入命令tar zxf vmware-linux-tools.tar.gz 将刚刚复制的vmware-linux-tools.tar.gz 解压,默认解压到vmware-linux-tools目录下(与文件名同名)此时就会多出一个命名为vmware-linux-tools文件夹,这里和windows 里面的解压结果一样。
(9)输入命令 cd vmware-linux-tools 进入解压后的目录
(10) 输入命令 ./*.pl 运行安装VMware tools (*.pl文件在前面有提过)
(11)在运行安装过程中,它会一步一步的有问题提出要你回应,此过程中,你只要见到问题后面显示[yes]、[no]、[yes/no]的都输入yes,然后回车,其他的问题后面不管[ ]里面是什么直接回车就好,不要输入。
(12)最后它会输出1——15个分辨率让你输入数字选择,根据你的显示器来选择分辨率吧
(13)好了,安装完成,输入命令 startx 回到linux图像界面吧。

11.          cp 拷贝文件是最好粘贴名字。容易敲错

12.          gcc编译器的安装

在桌面中找添加删除程序。找到开发工具,点更新

安装成功

Gcc-3.3.2.tar.gz   这样的是源码

13.          linux 查看版本命令

Cat /etc/issue    查看版本redhat  9.0

Cat /proc/version   查看进程版本

Uname –a   [root@localhost bin]# uname –a              查看内核版本

Linux localhost 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 20## i686 i686 i386 GNU/Linux

[root@localhost etc]# cat /etc/redhat-release

Red Hat Linux release 9 (Shrike)

[root@localhost etc]# head -n 1 /etc/issue

Red Hat Linux release 9 (Shrike)

14.          linux 查看进程

top用于动态监视高资源占用的,pstree用来看进程的父子关系,ps是比较常用的

Ps auxf

linux 查看进程信息

ps –aux

查看进程的命令有很多,我只是列出了我最常用的几个。

netstat –tln //查看服务监听端口

netstat      //查看进程号

ps –aux     //查看进程号

ps –aux | more //全部查看

ps –ef | grep mysql //查看mysql的进程

kill -9 3306 //强制杀掉进程号3306

防火墙的设置

设置防火墙: setup

查看防火墙设置: iptables –L

关闭防火墙:     iptables -F

文章出处:http://www.diybl.com/course/3_program/shell/shelljs/200862/119609.html

15.          linux 查看磁盘空间

df -lh
Filesystem容量 已用 可用 已用% 挂载点
/dev/hda8**G 6.0G 4.4G 58% /
/dev/shm ***M 0 ***M 0% /dev/shm
/dev/sda1**G 22G 35G 39% /mnt/sda1

16.          linux分区

Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍

作者:北南南北
来自:LinuxSir.Org
提要:Linux 磁盘分区表、文件系统的查看、统计的工具很多,有些工具是多功能的,不仅仅是查看磁盘的分区表,而且也能进行磁盘分区的操作;但在本文,我们只讲磁盘分区的查看,以及分区的使用情况的查看;本文只是给新手上路之用;关于分区工具的操作,我将在以后做专门介绍;

此文目的:主要是向初学者介绍一下入门必备的一点基础知识,有了基础知识才能进阶;如果把所有的磁盘操作工具都放在一个文档里,大家看了也累;基于这种想法,所以我写文档的时候,就想让新手弟兄一目了解,能轻松点就轻松点;生活、工作和学习无不是如此;

操作环境:Fedora core 4.0 i686 & Slackware 10.1


+++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++


一、df 命令;

df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;

举例:

[root@localhost beinan]# df -lh
Filesystem容量 已用 可用 已用% 挂载点
/dev/hda8**G 6.0G 4.4G 58% /
/dev/shm ***M 0 ***M 0% /dev/shm
/dev/sda1**G 22G 35G 39% /mnt/sda1

我们从中可以看到,系统安装在/dev/hda8 ;还有一个56G的磁盘分区/dev/sda1挂载在 /mnt/sda1中;

其它的参数请参考 man df


二、fdsik

fdisk 是一款强大的磁盘操作工具,来自util-linux软件包,我们在这里只说他如何查看磁盘分区表及分区结构;参数 -l ,通过-l 参数,能获得机器中所有的硬盘的分区情况;
[root@localhost beinan]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361***bytes
255 heads, 63 sectors/track, 9***cylinders
Units = cylinders of 16**** 512 = 8225***bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 614483**HPFS/NTFS
/dev/hda2 766 2805 16386***c W95 FAT32 (LBA)
/dev/hda3 2806 7751 3972*****Extended
/dev/hda5 2806 3825 819****+ 83 Linux
/dev/hda6 3826 5100 1024******Linux
/dev/hda7 5101 5198 78****+ 82 Linux swap / Solaris
/dev/hda8 5199 6657 1171******Linux
/dev/hda9 6658 7751 878****+ 83 Linux

在上面Blocks中,表示的是分区的大小,Blocks的单位是byte ,我们可以换算成M,比如第一个分区/dev/hda1的大小如果换算成M,应该是614****/1024=****M,也就是6G左右,其实没有这么麻烦,粗略的看一下把小数点向前移动三位,就知道大约的体积有多大了;
System 表示的文件系统,比如/dev/hda1 是NTFS格式的;/dev/hda2 表示是fat32格式的文件系统;.

在此例中,我们要特别注意的是/dev/hda3分区,这是扩展分区;他下面包含着逻辑分区,其实这个分区相当于一个容器;从属于她的有 hda5,hda6,hda7,hda8,hda9 ;

我们还注意到一点,怎么没有hda4呢?为什么hda4没有包含在扩展分区?一个磁盘最多有四个主分区; hda1-4算都是主分区;hda4不可能包含在扩展分区里,另外扩展分区也算主分区;在本例中,没有hda4这个分区,当然我们可以把其中的一个分区设置为主分区,只是我当时分区的时候没有这么做而已;

再仔细统计一下,我们看一看这个磁盘是不是还有空间?hda1+hda2+hda3=实际已经分区的体积,所以我们可以这样算 hda1+hda2+hda3=614****+1638****+39728***= 62259***(b),换算成M单位,小数点向前移三位,所以目前已经划分好的分区大约占用体积是62259.876(M),其实最精确的计算 6225****/1024=6****.67(M);而这个磁盘大小是80.0 GB (8002636****byte),其实实际大小也就是78150.744(M);通过我们一系列的计算,我们可以得出这个硬盘目前还有使用的空间;大约还有18G未分区的空间;

fdisk -l 能列出机器中所有磁盘的个数,也能列出所有磁盘分区情况;比如:

[root@localhost beinan]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361***bytes
255 heads, 63 sectors/track, 9***cylinders
Units = cylinders of 16**** 512 = 8225***bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 614483**HPFS/NTFS
/dev/hda2 766 2805 16386***c W95 FAT32 (LBA)
/dev/hda3 2806 7751 3972*****Extended
/dev/hda5 2806 3825 819****+ 83 Linux
/dev/hda6 3826 5100 1024******Linux
/dev/hda7 5101 5198 78****+ 82 Linux swap / Solaris
/dev/hda8 5199 6657 1171******Linux
/dev/hda9 6658 7751 878****+ 83 Linux
Disk /dev/sda: 60.0 GB, 60011642***bytes
64 heads, 32 sectors/track, 57***cylinders
Units = cylinders of 20## * 512 = 1048***bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 57***586045****Linux

通过上面我们可以知道此机器有两块硬盘,我们也可以指定fdisk -l 来查看其中一个硬盘的分区情况;

[root@localhost beinan]# fdisk -l /dev/sda
Disk /dev/sda: 60.0 GB, 60011642***bytes
64 heads, 32 sectors/track, 57***cylinders
Units = cylinders of 20## * 512 = 1048***bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 57***586045****Linux

通过上面情况可以知道,在/dev/sda 这个磁盘中,只有一个分区;使用量差不多是百分百了;

我们还可以来查看 /dev/hda的
[root@localhost beinan]# fdisk -l /dev/hda

自己试试看?

三、cfdisk 来自于util-linux的软件包;

cfdisk 也是一款不错的分区工具;在有些发行版中,此工具已经从util-linux包中剔除;cfdisk 简单易用是他的特点;和DOS中的fdisk 相似;在本标题中,我们只来解说如何查看机器的中的磁盘分区状况及所用的文件系统等;

查看磁盘分区的用法 cfdisk -Ps 磁盘设备名;
比如
[root@localhost beinan]cfdisk -Ps
[root@localhost beinan]cfdisk -Ps /dev/hda
[root@localhost beinan]cfdisk -Ps
Partition Table for /dev/hda
First Last
# Type Sector Sector Offset Length Filesystem Type (ID) Flag
-- ------- ----------- ----------- ------ ----------- -------------------- ----
1 Primary 0 23438834 63 2*******Linux (83) Boot
2 Primary 2*******156296******2857***Extended (05) None
5 Logical 2*******155268******31829***Linux (83) None
6 Logical 155268225 15629******1028***Linux swap (82) None

我们只用的参数 -Ps,就列出了磁盘的分区情况;目前在Slackware Debian Mandrake 等主流发行版中存在cfdisk ,而fedora 4.0把这个小工具剔除了;有点可惜;这是我在Slackware中操作的;

如果您这样操作,就更直观了;
[root@localhost beinan]cfdisk 磁盘设备名

举例:
[root@localhost beinan]cfdisk /dev/hda

您所看到的是如下的模式:

cfdisk 2.12a
Disk Drive: /dev/hda
Size: 80026361***bytes, 80.0 GB
Heads: 255 Sectors per Track: 63 Cylinders: 9729
Name Flags Part Type FS Type [Label] Size (MB)
-------------------------------------------------------------------------------------------
hda1 Boot Primary Linux ReiserFS 12000.69
hda5 Logical Linux ReiserFS 67496.65
hda6 Logical Linux swap 526.42
[Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ]
[ Type ] [ Units ] [ Write ]
Toggle bootable flag of the current partition

您进入了cfdisk 的操作界面;用键盘移动指针到[Quit]就可以退出;


四、parted 功能不错的分区工具;在Fedora 4.0中有带,可以自己安装上;在此主题中,我们只说如何查看磁盘的分区情况;

调用方法简单,parted 默认是打开的设备是/dev/hda ,也可以自己指定;比如 parted /dev/hda 或/dev/sda 等;退出的方法是 quit
[root@localhost beinan]# parted
使用 /dev/hda
(parted) p
/dev/hda 的磁盘几何结构:0.000-76319.085 兆字节
磁盘标签类型:msdos
Minor 起始点 终止点 类型 文件系统 标志
1 0.031 ****.842 主分区 ntfs 启动
2 ****.842 2****.088 主分区 fat32 lba
3 2****.088 6****.690 扩展分区
5 2****.119 3****.211 逻辑分区 reiserfs
6 3****.242 4****.615 逻辑分区 reiserfs
7 4****.646 4****.350 逻辑分区 linux-swap
8 4****.381 5****.094 逻辑分区 ext3
9 5****.125 6****.690 逻辑分区 reiserfs

我们在partd 的操作面上,用p就可以列出当前磁盘的分区情况,如果想要查看其它磁盘,可以用 select 功能,比如 select /dev/sda ;

五、qtparted ,与parted 相关的软件还有qtparted ,也能查看到磁盘的结构和所用的文件系统,是图形化的;

[beinan@localhost ~]# qtparted

图形化的查看,一目了然;



六、sfdisk 也是一个分区工具,功能也多多;我们在这里只说他的列磁盘分区情况的功能;

[root@localhost beinan]# sfdisk -l

自己看看吧;

sfdisk 有几个很有用的功能;有兴趣的弟兄不妨看看;


七、partx 也简要的说一说,有些系统自带了这个工具,功能也简单,和fdisk 、parted、cfdisk 来说不值一提;不用也罢;

用法: partx 设备名

[root@localhost beinan]# partx /dev/hda
# 1: 63- 12289***( 12289***sectors, 6***MB)
# 2: 1228****- 45062***( 32772***sectors, 16***MB)
# 3: 4506****-124519***( 79457***sectors, 40***MB)
# 4: 0- -1 ( 0 sectors, 0 MB)
# 5: 4506****- 61448***( 16386***sectors, 8***MB)
# 6: 6144****- 81931***( 20482***sectors, 10***MB)
# 7: 8193****- 83505***( 1574***sectors, 806 MB)
# 8: 8350****-106944***( 23438***sectors, 12***MB)
# 9: 10694****-124519***( 17575***sectors, 8***MB)

八、查看目前机器中的所有磁盘及分区情况:
[beinan@localhost ~]$ cat /proc/partitions
major minor #blocks name
3 0 78150***hda
3 1 614**** hda1
3 2 16386***hda2
3 5 819**** hda5
3 6 10241***hda6
3 7 78**** hda7
3 8 11719***hda8
3 9 878**** hda9
8 0 58605***sda
8 1 58604***sda1


九、mac-fdisk 这个工具主要是用在Powerpc版本的Linux中,咱们常用X86版本中没有这个工具;这个只是介绍一下;

相关文档

《在Linux系统中存储设备的两种表示方法》
《合理规划您的硬盘分区》
《系统引导过程及硬盘分区结构论述》
《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》
《在Fedora core 4.0 加载NTFS和FAT32分区详述》
《Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践》
相关资源
转自:http://www.linuxsir.org/main/?q=node/41

相关评论
标题: 上面所有这些命令在redhat9.0上只有df存在 作者: littlebat 创建时间: 20##-05-14 11:05:00 最近更新: 20##-05-14 11:05:39 编辑 删除
内容
到哪儿去找其它的介绍的工具呢?
相关资源

标题: re:Linux 查看磁盘分区、文件系统、使用情况的命令(转帖) 作者: littlebat 创建时间: 20##-05-14 21:18:32 最近更新: 20##-05-14 21:18:32 编辑 删除
内容
原来是fdisk等命令需要输入目录路径,通过whereis fdisk可以知道fdisk的路径为: /sbin/fdisk
但是我不知道为什么在redhat linux9.0中不能直接使用fdisk命令。

17.          cpu  使用率

Linux系统中“/proc”是虚拟文件系统,其中许多文件都保存系统运行状态和相关信息
对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
Cpuinfo          主机CPU信息
Dma             主机DMA通道信息
Filesystems       文件系统信息
Interrupts         主机中断信息
Ioprots           主机I/O端口号信息
Meninfo          主机内存信息
Version           Linux内存版本信息

PS命令显示的不太直观,是查看后台进程的好命令,选项中的%cpu %MEM 可以看到每个进程,每个用户所占的CPU或者MEM(内存)拉的使用率....

top命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其是在该命令显示出来的对上方对系统的情况进行汇总....8错的命令..偶喜欢

/proc是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的进程情况......应该是比较专业的查看系统情况的命令,或者是最佳之选,不过要比较熟悉该文件夹内各个命令的具体意思.....高手之列.....

ps -aux | more

ps -aux | more

top

cat /proc/cpuinfo

more /proc/cpuinfo

dmesg 硬件的信息都有了。

在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。

  操作实例:

  在命令行中输入 “top”

  即可启动 top

  top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

  第一部分 -- 最上部的 系统信息栏 :

  第一行(top):

    “00:11:04”为系统当前时刻;

    “3:35”为系统启动后到现在的运作时间;

    “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

    “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;

  第二行(Tasks):

    “59 total”为当前系统进程总数;

    “1 running”为当前运行中的进程数;

    “58 sleeping”为当前处于等待状态中的进程数;

    “0 stoped”为被停止的系统进程数;

    “0 zombie”为被复原的进程数;

  第三行(Cpus):

    分别表示了 CPU 当前的使用率;

  第四行(Mem):

    分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;

  第五行(Swap):

    表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

  第二部分 -- 中间部分的内部命令提示栏:

  top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:

  s

  - 改变画面更新频率

  l - 关闭或开启第一部分第一行 top 信息的表示

  t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

  m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

  N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)

  P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)

  M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)

  h - 显示帮助

  n - 设置在进程列表所显示进程的数量

  q - 退出 top

  s -

  改变画面更新周期

  第三部分 -- 最下部分的进程列表栏:

  以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式。

 

18.          Linux 上网

第一种情况:
主机使用PPPOE拨号上网

方法一:NAT方式

1、先关闭虚拟机中的操作系统,回到虚拟机主界面
双击主界面右上方的的“Ethernet”,弹出“Network Adapter”对话框,选择“NAT”

2、启动虚拟机操作系统,设置IP为动态获取,即通过DHCP获得。

此时虚拟机中的操作系统用的是主机的IP,主机能够上网,那么虚拟机也能。

重启

Service network restart


方法二:Host-only方式

1、先关闭虚拟机中的操作系统,回到虚拟机主界面
双击主界面右上方的的“Ethernet”,弹出“Network Adapter”对话框,选择“Host-only”

2、右击拨号上网的连接,打开PPPOE连接属性,选择“高级”,选择“允许其它网络用户通过此计算机的INTERNET连接来连接”
在“家庭网络”下拉框中,选择“VMware Network Adapter VMnet1”
VMware Network Adapter VMnet1虚拟网卡的IP会自动变为192.168.0.1
此时ping 192.168.0.1 能通即可。

3、进入vmware中,启动linux操作系统
用netconfig命令
将IP,设为192.168.0.2 (与虚拟网卡在同一网段)
网关为192.168.0.1 即VMware Network Adapter VMnet1虚拟网卡的IP地址
DNS设置为ISP的DNS,如61.147.37.1

4、重启网络:
#service network restart

此时,只要主机拨号上网后,虚拟机的系统就可以上网,且不用再拨号

方法三:Bridge方式

这种方式,虚拟机最接近一台真实的机器

1、先关闭虚拟机中的操作系统,回到虚拟机主界面
双击主界面右上方的的“Ethernet”,弹出“Network Adapter”对话框,选择“Bridge”

2、宿主机中安装sygate或wingate之类的代理服务器

3、设置虚拟机的代理服务器为宿主机的IP即可

第二种情况:
在单位局域网内

“Ethernet”要选择“Bridge”方式
使用这种方式时,虚拟机跟一台真实的机器一样,此时IP设置为局域网中另一个可用IP即可
网关:局域网网关服务器的地址(或路由器的地址)
DNS:设置为ISP的DNS服务器地址

备注:手动配置的命令 

1。配置ip,gateway

vi /etc/sysconfig/network-scripts/ifcfg-eth0,修改相应的地址

2。配置DNS

vi /etc/resolv.conf,修改为自己的DNS

nameserver=202.204.208.2

nameserver=202.204.208.3

3。重起网络 ifdown eth0 ifup eth0

 实现环境:

  真实机系统为windows xp或者2003,使用adsl拨号上网,虚拟机版本为V5.5.2 Build 29772,虚拟机安装linux,有一块网卡,使用桥接模式。

  1、在windows下,启用ICS。

  选择adsl上网拨号后的连接,属性?高级?Internet连接共享?勾选“允许其他网络用户通过此计算机的internet连接共享”,家庭网络连接选“本地连接”。

  2、在linux下,配置静态IP。

  点主菜单?系统设置?网络,弹出“网络配置”,双击eth0,勾选“静态设置的ip地址”,

  地址:192.168.0.21 (除192.168.0.1和255外,随便填)

  子网掩码: 255.255.255.0

  网关:192.168.0.1

  确定

  DNS项,主DNS填:192.168.0.1

  都填完,记得保存。

  3、编辑主机地址(实验时这步可以不用)

  vi /etc/hosts

  把127.0.0.1替换成前面设置的ip地址192.168.0.88

  4、重起服务

  service network restart 或者重启linux。

  5、现在ping 一下 google.cn 看看,如果通就ok了,没有通的话,自己再检查上面的步骤是否出错。



VMware的网卡设置模式
VMware 提供四种网络连接方式
=========================================================
Bridge:这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力.
在此种模式下,虚拟机内部的网卡(例如linux下的eth0)直接连到了物理网卡所在的网络上,可以想象为虚拟机和host机处于对等的地位,在网络关系上是平等的,没有谁在谁后面的问题.
使用这种方式很简单,前提是你可以得到1个以上的地址.对于想进行种种网络实验的朋友不太适合,因为你无法对虚拟机的网络进行控制,它直接出去了.
nat方式:这种方式下host内部出现了一个虚拟的网卡vmnet8(默认情况下),如果你有过做nat服务器的经验,这里的vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运行在内网上的机器,虚拟机内的网卡(eth0)则独立于vmnet8.
你会发现在这种方式下,vmware自带的dhcp会默认地加载到vmnet8界面上,这样虚拟机就可以使用dhcp服务.更为重要的 是,vmware自带了nat服务,提供了从vmnet8到外网的地址转 换,所以这种情况是一个实实在在的nat服务器在运行,只不过是供虚拟机用的. 很显然,如果你只有一个外网地址,此种方式很合适.
hostonly:
这应该是最为灵活的方式,有兴趣的话可以进行各种网络实验.和nat唯一的不同的是,此种方式下,没有地址转换服务,因此,默认情况下,虚拟机只 能到主机访问,这也是hostonly的名字的意义. 默认情况下,也会有一个dhcp服务加载到vmnet1上.这样连接到vmnet8上的虚拟机仍然可以设置成dhcp,方便系统的配置.
是不是这种方式就没有办法连接到外网呢,当然不是,事实上,这种方式更为灵活,你可以使用自己的方式,从而达到最理想的配置,例如:
a.使用自己dhcp服务:首先停掉vmware自带的dhcp服务,使dhcp服务更为统一.
b.使用自己的nat,方便加入防火墙.windows host可以做nat的方法很多,简单的如windows xp的internet共享,复杂的如windows server里的nat服务.
c. 使用自己的防火墙.因为你可以完全控制vmnet1,你可以加入(或试验)防火墙在vmnet1和外网的网卡间.
从以上可以看出,hostonly这种模式和普通的nat server带整个内网上网的情形类似,因此你可以方便的进行与之有关的实验,比如防火强的设置等
1、Bridge模式(一切都跟host一样,只有ip不能与host相同)
ip 192.168.39.222
netmask:255.255.252.0
gateway:192.168.39.254
Primary nameserve:192.168.39.252
2、NAT模式
首先在host中查看VMnet8的IP(e.g. 192.168.255.1).
启动VMware,点Edit下Virtual Network Setting… ,弹出Virtual network Editor对话框;
查看NAT选项卡,记录NAT的Gateway IP address:192.168.255.2
在config中,填写:
ip:192.168.255.5(与192.168.255.1在同一个网段的不同地址)
netmask:255.255.255.0(与192.168.255.1的隐码相同)
Gateway IP:填写VMware中的NAT网关192.168.255.2
Primary nameserver:填写与主机中一样的网关192.168.39.252,这样就可以上网冲浪了.
如果填写192.168.255.1,则不能连上外网.这里也可以不停,总之不能写错误的地址
3、hostonly模式
(1)查看你的连接外网的网卡的属性,选择“高级”标签,设置成允许共享,并设定允许的网络接口为VMNET1
(2)再插看一下你的VMnet1 的属性,看一下TCP/IP协议的设置,你发现已经被自动设置为
192.168.0.1/255.255.255.0,
(3)windows下的设置完成,转入到跑linux的虚拟机.将你的eth0的ip地址设置为静态的(如果安装时没有选静态的话) .
按红帽子图标->系统设置->网络(或其它你了解的方法)
ip: 192.168.0.2(或其它在此网段上的地址)
netmask: 255.255.255.0
default gateway: 192.168.0.1 (VMnet1的地址)
dns:输入你自己的DNS (host中用的DNS)
保存设置.如果你还没有设置好主机名称:
cd /etc/sysconfig
vi network
编辑HOSTNAME
cd /etc
vi hosts
加入:
192.168.0.2 yourhostname
重新启动服务
su
/sbin/service network restart
(4)测试一下
网关: ping 192.168.0.1
dns: ping dnsserver

19.          Linux操作系统里查看所有用户

1、Linux里查看所有用户

  linux里,并没有像windows的net user,net localgroup这些方便的命令来治理用户.

  Xwindows界面的就不说了.

  (1)在终端里.其实只需要查看 /etc/passwd文件就行了.

  (2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.

  或者用cat /etc/passwd |cut -f 1 -d :

  2、用户治理命令

  useradd 注:添加用户

  adduser 注:添加用户

  passwd 注:为用户设置密码

  usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

  pwcov 注:同步用户从/etc/passwd 到/etc/shadow

  pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

  pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

  finger 注:查看用户信息工具

  id 注:查看用户的UID、GID及所归属的用户组

  chfn 注:更改用户信息工具

  su 注:用户切换工具

  sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;

  visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

  sudoedit 注:和sudo 功能差不多;

  3、治理用户组(group)的工具或命令;

  groupadd 注:添加用户组;

  groupdel 注:删除用户组;

  groupmod 注:修改用户组信息

  groups 注:显示用户所属的用户组

  grpck

  grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,假如/etc/gshadow 不存在则创建;

  grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

20.          修改linux分辨率

手动修改/etc/X11/XF86config 或/etc/X11/xorg.conf
确认你有以下的内容,如果没有就加上,重启X既可。
Section "Monitor"
        HorizSync  30-48
        VertRefresh 50-65

Section "Screen"
        DefaultDepth 24
        SubSection "Display"
                Depth    24
                Modes "1024x768" "800x600" "640x480"

linux分辨率设置问题

不好意思我保存的时候出错了VI命令记错了,保存后重启后就变为1024*768了.在这里再贴一下操作过程,修改成功.
1、在桌面右件"新建终端"在终端中输入(务必注意大小写):
cd /etc/X11
vi XF86Config
2、通过文件夹进入到/etc/X11中找到XF86Config,右件“打开方式/VI”
VI打开文件后找到如下内容:

修改内容如下: (要修改内容按“i”插入,修改完毕后按“ESC”然后再输入控制命令保存配置文件:wq)
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Unprobed Monitor"
HorizSync 31.5 - 37.9
VertRefresh 50.0 - 70.0                    //把这里改为 60.0 - 80.0
Option "dpms"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "radeon"
VendorName "Videocard vendor"

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024*768" "800*600"            //把后面的"800*600"去掉
EndSubSection

21.          rm 删除文件 

Rm –r  删除文件及文件夹

Rm –f  强制删除

22.          linux如何设置自动获取ip

你的意思是想要让你的Linux从DHCP服务器那自动获得一个IP地址?

那你要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件中的BOOTPROTO=DHCP

1 安装时设置dhcp
2.安装后找
[root @test /root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp

Netconfig   出现图形界面

Netconfig –bootproto=dhcp

20.ping

Linux ping == windows ping

Linux ifconfig == windows ipconfig

23.          linux上网的一个比较明晰的流程

目的:Linux虚拟机通过Windows系统共享上网。同时,又想保留本地网卡的ip地址。

1.安装vmware

        安装vmware的过程很简单,在此不做说明。安装好vmware之后, 创建一个虚拟机,然后启动,遇到的问题是,系统不读取光盘,无法自启动。后来发现是系统多了一个虚拟光驱,而这个虚拟机默认的光盘设定为虚拟光驱了。在vmware主界面左边的虚拟机设置中选定虚拟机节点,右键->settings,在hardware中选定CD-ROM,use physical driver下拉框中选定正确的盘符,点击OK按钮即可。

2.安装Linux

        安装过程略,提醒一下,别忘了在虚拟机中按F2进入BIOS设置以光驱为第一引导驱动器。

        在安装后期,有一个提示“设备hda上的分区表无法被读取,创建新分区时必须对其执行初始化,从而导致该驱动器重的所有数据丢失。该操作会超越所有先前关于要忽略的驱动器的安装选择。你想要初始化这个驱动器吗并删除所有数据吗? ”看着挺吓人,不过不用紧张,虚拟机上的操作仅限于给该虚拟机指定的磁盘空间。确定就是了,否则还得重来一遍。

3.Windows设置

        打开网络连接,发现里面多出两个连接,一个是VMnet1,一个是Vmnet8,地址分别是192.168.239.1和192.168.150.1,请选择本地连接,双击,在属性页点“高级”,选定“允许其他网络用户通过此计算机的Internet连接来连接”,然后确定。如果一切正常,VMnet1的地址将被更改为192.168.0.1,当然,这个地址其实怎么改都无所谓。

4.虚拟机设置

        在虚拟机节点Settings中,选定网卡,把Network connection选为NAT。

5.Linux网络设置

        在linux图形界面下,使用“自动获取IP地址设置使用DHCP。分配到的地址为192.168.150.128,

/etc/sysconfig/network-scripts/ifcfg-eth0中,Gateway是192.168.0.1,DNS应该手工配置正确。

不过通过route命令,看到的Gateway却是192.168.150.1。我认为,真正使用的Gateway,应该是后者。

经测试,有一个比较怪的现象:手工设置地址为192.168.150.128,网关设置为192.168.150.1和192.168.150.2,都可以正常上网,而192.168.150.3以上就不行了,但是route命令可以看到192.168.150.3,而设置为非150网段的地址,则route根本不访问。至少说明,一切跟Vmnet8有关。

同时,注意到一个问题,无论在Windows网络连接里面如何设置,虚拟机Edit菜单中Virtual Network settings中的VMnet1和VMnet8的subnet是不变动的。

小结:目的达到,但Vm网络的真正奥秘还没有完全弄清楚。待进一步研究。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fbysss/archive/2008/03/27/2223890.aspx

24.          安装firefox

1。yum   install   fireforx  
  2。rpm直接安装就行,  
  3。tgz的解压后看说明文件,一般就是make   make   install    

25.          linux  文件颜色

蓝色:目录

,绿色:可执行文件,

天蓝色:符号文件,

白色:普通文件,

黄色:设备文件

,红色:失效文件的链接,

浅红:压缩文件或tarball文件,

粉色:图片文件

26.          根据文件名来查找文件

Find / -name firefox    --- 在根目录下查找firefox文件

27.       运行一个程序时发生错误:error while loading shared libraries: libstdc .so.5: cannot open shared object file: No such file or directory
怎么解决?
spiderww(spider) 于 20##-5-11 17:16:00
把libstdc .so.5所在目录加到环境变量LD_LIBRARY_PATH中
hzk1980(hzk1980) 于 20##-5-11 17:50:47
具体怎么做啊?
schwarzenegger(找不到服务器) 于 20##-5-11 21:29:28
cp libstdc .so.5* /usr/lib
sharkhuang(爱情和程序都读不懂!) 于 20##-5-11 21:37:00
set LD_LIBRARY_PATH=xxxx(你的动态库的目录)
hzk1980(hzk1980) 于 20##-5-11 21:59:18
libstdc .so.5是在哪个目录?
cp libstdc .so.5* /usr/lib libstdc .so.5*是在哪个目录下?
set LD_LIBRARY_PATH=xxxx(你的动态库的目录)

我装的是Redhat Linux9,我的动态库的目录一般是哪个目录?

28.          linux init 命令

不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)

  

    # 0 - 停机(千万不能把initdefault 设置为0 )

  

    # 1 - 单用户模式

  

    # 2 - 多用户,没有 NFS

  

    # 3 - 完全多用户模式(标准的运行级)

   feedom.net

    # 4 - 没有用到

  

    # 5 - X11 (xwindow)

  

    # 6 - 重新启动 (千万不要把initdefault 设置为6 )

【转自www.bitsCN.com】

29.          分区及文件描述

ok, 我就这样看,首先分一个100M的主分区出来,挂载boot。grub启动时需要的文件都在/ b o o t 目录。这样就算工作分区出了问题,只要这个分区没有问题,同样可以启动。因此最好的办法就是专门为根文件分一个区,大小一般最多64M,我为了保险给了 100M。

  之后的分区全部以扩展分区形式存在,扩展分区下很多逻辑分区。

  首先创建一个交换分区,大小是无力内存的一倍到两倍大。如果你的内存和我一样是1G,就划1G好了。事实上基本用不到这么大。分区格式记着改成linux-swap。

  然后创建一个尽量大的分区,给/usr,因为这里存放有大部分的系统软件,包括X Server等图形界面程序。我分了20G。

  接下来创建/home的挂载分区。考虑到我的工作文档比较多,源代码和程序也经常放到这里,所以给了10G。

  其他的诸如tmp,var等来说,单用户工作机是不用考虑的。当然不知道我的机器以后会不会有服务器应用,我还是给var分了2G的空间。

  其他空间就全部挂载给/。虽然一般2G就够了,但是多多益善么。

 L i n u x 通过字母和数字的组合来标识硬盘分区,如果你习惯于使用类似"C 盘/ D 盘"来标识硬盘分区的话,可能会搞混。L i n u x 的命名设计比其他操作系统更灵活,能表达更多的信息。

  归纳如下:

  1) 分区名的前两个字母表明分区所在设备的类型。你将通常看到h d (指I D E 硬盘),或s d(指S C S I 硬盘)。

  2) 第三个字母表明分区所在的设备号。例如:/ d e v / h a d (第一个I D E 硬盘)或/ d e v / s d b(第二个S C S I 硬盘)。

  3) 最后的数字代表分区。前四个分区(主分区或扩展分区)用数字1 到4 表示。逻辑分区
从5 开始。例如,/ d e v / h d a 3 第一个I D E 硬盘上的第三个主分区或扩展分区; / d e v / s d b 6 是第二个S C S I 硬盘上的第二个逻辑分区。

  在重新对你的硬盘分区时,可能遇到三种情况,一般而言,对它们的处理方法分别应该是这样的:

  1) 有未分区的空闲空间。在这种情况下,已定义的分区未占有整个硬盘空间,也就是说空闲空间不属于任何已定义的分区。仔细想一下,一个未用的硬盘也属于这种情况,不同的只是所有的空间都不属于任何已定义的分区。这时,只须简单地从未用的空间创建所需的分区。

  2 )有未用的分区。你可能已经将硬盘分成诸如C 、D 、E 这样的D O S 分区,但是有一个分区现在没有使用,或是已经被清空,你或许希望将L i n u x 安装在这里。如果你属于这种情况,可以使用这个未使用的分区。这时,先得删除这个分区,然后再在这个空间创建合适的L i n u x分区。

  3) 在已有分区中有空闲空间。如果你已经将硬盘分区,并且没有一个完全空闲的分区,以下就是你应该看的了。这是最常见的情况。不幸的是,这也是最难对付的情况。虽然你有足够的空间,但却属于已用的分区。除了加一个硬盘外(这时你只需要考虑你的银子,其他就好办了),还有两种选择:

  a. 破坏性的重新分区。首先删除一个大的分区,然后创建几个小的分区。被删除的那个大的分区中的所有数据将被破坏。这就是说必须做一次完全的备份。为安全起见,做两套备份,使用校验(如果你的备份软件有此功能),在删除分区之前试着读一下你备份的数据。这将是一件麻烦的工作,但为了保护你以前的工作,还是十分必要的。注意一点,如果你删除的分区含有操作系统,还得重装操作系统。在创建了小的分区之后,可以重装软件,恢复数据,然后继续安装L i n u x 。

  b. 非破坏性的重新分区。这里,你可以运行一个提供这种功能的应用程序。这个程序可以将大分区变小而不丢失分区中的文件。很多人发现这种方法是可靠而没有麻烦的。那么你该用什么软件呢? 市场上有好几种磁盘管理的软件产品,就笔者看来,它们在功能和可靠性方面大同小异,例如Partition Magic 就是一个口碑不错的分区软件。Red Hat Linux 也为I n t e l 系统提供了一个这样的软件:在Linux/Intel CD-ROM 上d o s u t i l s 目录中的f i p s 。

30.          改主机名称

  保存设置。如果你还没有设置好主机名称:
   cd /etc/sysconfig
   vi network
   编辑HOSTNAME
   cd /etc
   vi hosts
   加入:
   192.168.0.2           yourhostname

31.          选择学习redhat还是ubuntu

要是为了以后弄服务器就学redhat吧,我觉得ub还是不适合学习管理

30. /etc/gshadow文件的作用是什么?
和etc/shadow文件有什么关系??

不带g的是用户的,带g的是群组的

32.          修改环境变量

准确地说应该是在 bash 下修改环境变量的简单方法。有些系统把用户登录 shell 变成了 csh,语法则不一样。
要删除一个环境变量,可以用 unset:
export ABC=xyz
unset ABC

33.          请问再编译linux内核时执行的make mrproper命令是什么意思

清除环境变量,即清除配置文件。。

make clean清除所有已编译好的模块,
make mrproper包括clean,  不但清除模块,
还会把源码包状态重置回编译之前,和新下载的一样。

如果是完整下载的那个几十兆的test11,而不是用的patch,
那么在test11目录下不用做make mrproper,直接make menuconfig就可以了.
make mrproper只用于曾经做过编译的不再新鲜的源码包.

34.          忘记root密码

首先进入单用户维护模式

找到/etc/shadow文件

利用chmod改变这个文件的属性,让它变得可写

打开shadow文件,将root对应的密码删掉.

重新启动,这样不要用密码或者密码是空格就能登入root用户了

最后把shadow文件的属性改回来,因为那样安全性就差了。

35.          如何进入单用户维护模式

先进入单用户模式,用密令init 1,再输入mount -n -o remount,rw / 即可解除只读状态

怎样进入linux单用户模式进行操作!

---- 与紧急修复模式只能加载本机Linux上的文件系统不同,单用户模式是在本机Linux内核引导启动后进入的一个运行级别(运行级别是1),可以做内核升级、设备安装等维护工作。在系统维护时,系统管理员往往要进入单用户模式来维护系统,进入紧急修复模式是在Linux不能启动时不得已而采用的系统维护方法。  

  ---- Linux内核自行启动之后,通过启动程序init来完成自己的引导过程,所以,init进程始终是第一个进程,进程编号始终为1。Init程序有着许多重要的职责,如启动Getty、实施运行级别和调用子进程等,是Linux系统中必不可少的程序之一。   

  ---- 下面提到的进入单用户模式的方法,实质都是向init程序请求运行级别1,达到进入单用户模式的目的。   

  ---- 1.Init程序

  ---- 系统正在运行时,在命令行上用程序Init可以更改运行级别(/sbin/telinit只是程序Init的符号链接,同样可以使用),进入单用户模式用如下命令:

  ---- #init 1   

  ---- 因为是在一个正在运行的系统上,且只有Root用户才有权限执行Init命令,所以此种方式虽然在系统维护时经常用到,但对口令恢复的意义不大。   

  ---- 2. 修改默认运行级别

  ---- /etc/inittab文件是系统运行级别的配置文件,每当启动init进程时,init程序都会读取/etc/inittab文件中的相应配置并运行。   

  ---- 在Linux系统启动时,/etc/inittab文件中有如下一行指定了默认的运行级别,通常的运行级别是3或5。

  ---- id:3:initdefault:   

  ---- 要使系统启动后进入单用户模式,只要把上面一行中的3改为1就可以了。

  ---- id:1:initdefault:   

  ---- 3. 启动盘引导

  ---- 在Linux系统启动时,Init读取/etc/inittab配置进入默认运行级别,但也可以为内核指定一个启动参数,内核将依此参数设定特定设备和环境变量等,对于不能接受解释的参数将传递给内核启动后的第一个程序,即Init程序,Init程序据此参数启动进入非默认运行级别,如指定参数为1或 single进入运行级别1,即单用户模式。内核启动参数的指定可通过在系统启动软盘、多重启动管理器或程序Loadlin等的执行过程中指定。   

  ---- 在系统维护或内核更新时,常用到当前Linux系统的启动盘,在系统安装时会提示用户制作一张启动盘,在系统安装完成后也可以制作,下面是一个简单示例。   

  ---- 在软驱中放入软盘,用uname命令查看系统内核版本号,然后用Mkbootdisk命令创建引导盘,输入的命令如下:

  ---- #uname Cr

  ---- 2.4.7-10

  ---- #mkbootdisk Cdevice /dev/fd0 2.4.7-10   

  ---- 以启动盘引导,在boot提示符下以"linux "的语法形式输入如下参数之一,即可引导进入单用户模式如下:

  ---- boot: linux 1

  ---- boot: linux single   

  ---- 4. 多重启动管理器

  ---- 多重启动管理器是一个能在系统启动时用来选择加载某个操作系统的引导程序,它可以载入操作系统的内核和初始化操作系统(如Linux或FreeBSD),或者把引导权交给操作系统(如DOS或Windows)来完成引导。Intel兼容PC机上的多重启动管理器有LILO和GRUB等,Alpha PC机上使用MILO,Sparc兼容的工作站是用SILO。   

  ---- 在多重启动管理器中为Linux内核指定启动参数引导进入单用户模式。以Intel兼容PC机上的Linux为例,如果安装的是LILO,在LILO引导画面,按Ctrl+X键切换入命令行,在LILO提示符下输入与启动盘引导Boot提示符下相同的参数之一,即可引导进入单用户模式:   

  ---- 在RedHat Linux 7.2以后,多重启动管理器开始用GRUB代替LILO,它比LILO具有更多的优势,是LILO的替代品。下面是GRUB引导进入单用户模式的过程。   

  在出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。

  按↑键或↓键选择相应的引导项,并再接字母e键进入命令行编辑。

  在出现的命令行上添加"1"或single,并按键,返回GRUB编辑状态。

  按字母b键,引导进入单用户模式。

  ---- 从上可以看出多重启动管理器对Linux系统启动和维护的重要性,所以建议在安装Linux时也安装好多重启动管理器,便于将来系统的维护,哪怕是主机上只安装了Linux一个操作系统。   

  ---- 5. loadlin引导

  ---- loadlin是一个能在DOS下启动Linux核心的装载程序,可从DOS引导进入Linux或安装Linux系统等。如果没有安装多重启动管理器或者配置有误不能进入Linux的话,常常会用到这个程序。   

  ---- 在loadlin的启动命令中添加single参数就可以进入单用户模式。如果主机上安装有Windows 9x系统,在系统启动时按F8进入MS-DOS,运行loadlin程序引导进入单用户模式。下面是一次启动实例,该主机上没有安装Windows 9x,也没有安装DOS。   

  以Windows 98安装光盘引导启动,在"Microsoft Windows 98 Startup Menu"上选择第2项:"start computer with CD-ROM support."。

  进入MS-DOS后,在光驱中换入RedHat Linux安装光盘。

  在命令行上分别输入如下命令引导Linux单用户模式,假设Linux根文件系统在分区/dev/hda5上:

  A:>d:

  D:>cd dosutils

  D:DOSUTILS>loadlin autobootvmlinuz root=/dev/hda5 ro single

  ---- 在启动盘引导的boot提示符下,在LILO和GRUB等启动管理器的命令行下,以及在Loadlin程序上都可以配置很多参数引导进入系统,对系统维护很重要,可以参考BootPrompt-HowTo。   

  ---- 上面提到的方法,都需要对/etc/passwd、/etc/inittab等Linux文件进行读写,但在正常情况,只有root用户登录进去才可以读写。那么在不能正常登录进系统时,又如何能对这些文件进行读写呢?   

  ---- 除了可以在紧急修复模式、单用户模式下读写Linux文件外,采用下面的方法也不失为良策:   

  通过Linux系统软盘引导启动,就能进入Linux系统;

  通过Linux系统光盘进入,如DemoLinux;

  在DOS/Windows下读写Linux文件,几乎所有版本的DOS/Windows都不提供对Linux文件系统的支持,但借助不少软件可以实现,如FSDext2、Ext2fsnt、Ext2ifs、Ext2 tools、Ltools和Explore2fs等,还有Microsoft IFS Kit;

  通过第二硬盘。

  ---- 上面提到的种种Linux口令恢复方法,读者可以结合自己的实际情况,选择一种最简单易行的方法来恢复自己的Linux口令。从中可以看出,他人通过在本地重启系统很容易获取Linux口令,所以为了加强系统安全,有必要在启动管理器(如LILO和GRUB)及BIOS中设置口令,使他人不能轻易得逞,更重要的是加强安全管理工作。

36.          .a文件.o文件和.so文件有什么区别

.o 就相当于windows里的obj文件

 OBJ是目标文件。  
  是源程序编译后的产物。  
  OBJ文件链接后就生成EXE文件。

.a 是好多个.o合在一起,用于静态连接

.so 是shared object,用于动态连接的,和dll差不多

37.          Unable to mount root fs on unknown-block

试试这个:在你的/boot/gurb/goru.conf中修改你所生成的kernel段:  
  kernel   (hd0,0)/boot/vmlinuz-2.4.19-16mdk   root=/LABEL处修改为:  
  kernel   (hd0,0)/boot/vmlinuz-2.4.19-16mdk   root=/dev/hda1  
  save   and   exit,重启一下看看能不能进入系统。

是redhat   linux吧,用label   加载root   dev   必须   有这个选项  
    File   systems      
    --->Miscellaneous   filesystems  
            ---><*>   UFS   file   system   support   (read   only)

38.          修改Grub启动管理器


如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.10 (这时候你的/boot下会生成一个initrd-2.4.18.img,并且你的grub.conf文件也作了相应更改)
# df  (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda3)
# vi /grub/grub.conf 
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
        root (hd0,0)
        kernel /vmlinuz-2.6.10 ro root= LABEL=/
        initrd /initrd-2.6.10.img
做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
        root (hd0,0)
        kernel /vmlinuz-2.6.10 ro root=/dev/hda2
        initrd /initrd-2.6.10.img
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /initrd-2.4.20-8.img

39.          Linux 启动过程

1.         充电自检-》coms-》硬盘-》mdr(引导程序)-》grub(引导程序,找boot地址)

2.         boot-》内核文件-》加载到内存

3.         硬件驱动

40.          文件夹描述(linux /下)

/etc   配置文件,最重要

/bin   binary 二进制文件   命令

/sbin  系统文件命令

/usr   应用程序

/var   log日志文件

/home 用户的主目录

/root   管理员root的目录

/lib    库文件和模块文件,, 还有部分内核驱动

/boot   启动文件和内核文件

/mnt   usp接口文件

/media  cdrom

/tmp    临时文件

/dev     设备文件

/proc    物理内存和内核参数的一个映像

/lost+found  恢复文件

/opt       空的操作

/misc   

/initrd 

41.          看文件大小

Du –H 文件名

42.          查看用户属性

Id 用户名

43.          Linux vi 中的剪切,复制,粘贴,回滚

剪切   dd

复制   yy

粘贴  p

恢复  U退一步  u按一下退一步

/ 是 vi编辑器的模式搜索命令 键入 / 后 屏幕的底部会出现一行 同

时一个斜扛会出现在底行的行首上 且光标被放置在斜扛之后 此时 您可

以在光标位置键入你需要搜索的模式 输入完成并按下 ENTER键后 编辑器

将开始从光标所在的位置起向文件尾部搜索你键入的模式 如果输入的模式

被找到 光标将停留在找到的模式上 在找到一个匹配的模式后 如果您还

需要搜索下一个匹配的模式 使用命令 n 即可 如果需要找到上一个匹配

的模式 则使用 N 命令即可 

此外 ? 命令也是模式搜索命令 与 / 的区别在于 / 是从光标当

前所在位置向文件尾部搜索 而 ? 命令则是由光标当前所在位置向文件头

部搜索 

文本替换操作需要使用末行模式进行操作 即所有文本替换操作命令均以 :

开头 

当需要查看一个文本文件的头部或尾部时 head 命令及 tail 命令可以非常方

便的完成该操作 head 命令用于查看一个文本文件的开头部分 而 tail 命令

则用于显示文本文件的末尾几行 这两个命令举例如下 

head example.txt      显示文件 example.txt 的前十行内容 

head -n 20 example.txt  显示文件 example.txt 的前二十行内容 

tail example.txt      显示文件 example.txt 的后十行内容 

tail -n 20 example.txt    显示文件 example.txt 的后二十行内容 

tail -f example.txt      显示文件 example.txt的后十行内容 并在文

件内容增加后 自动显示新增的文件内容 

  注意  

最后一条命令非常有用 尤其在监控日志文件时 可以在屏幕上一直显示新

增的日志信息 

44.          查找当前登录系统的用户

Finger

finger 的常用参数如下 

-s  显示用户的注册名 实际姓名 终端名称 写状态 停滞时间 登

时间等信息 

-l   除了用-s 选项显示的信息外 还显示用户主目录 登录 shell 邮

状态等信息 以及用户主目录下的.plan .project 和.forward 文件

内容 

-p   除了不显示.plan文件和.project文件以外与-l选项相同

45.          查看本机使用的shell

Echo $0

Ps –p $$

46.          文件权限

可以看到,文件权限的含义是比较广的,先来看-rwxr-xr-x,第一位是文件的类型

(d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。

    -:表示这是一个普通的文件。

    l: 表示这是一个符号链接文件,实际上它指向另一个文件。

    b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。

    s、p:这些文件关系到系统的数据结构和管道,通常很少见到。

),

它定义了用户只能某种方式来操作文件,后面九位是文件的存取控制信息,linux的文件许可机制将用户分为三类:文件属主u(user)、文件属组g(group)和其它用户o(other)。三类不同的用户可以对文件拥有三种不同级别的权限:读r(read)、写w(write)和运行x(execute)。于是形成了九位的权限信息,分为三组,分别对应u,g, o。除此之外,用户还可以设置setuid与setgid位来改变程序的执行身份。用lsattr命令则可以看到文件的属性,控制位包括 asacddiijsttu,这些也是能控制文件的存取的。

由于篇幅有限,不可能就这些一一进行分析,本文着力分析文件权限中w(write)的真正含义,挖出其背后隐藏的细节,力图使读者能正确用好这个关键的权限位,不至于在系统管理中出现差漏。

为了能更直观的说明问题,本文采用实验操作的方式,一步一步的进行分析。为了简化操作,我们用o(other)这组权限来做实验。实验中用到的权限位均属于o(other), 进行操作的用户均非root用户,属于o(other)。

文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。

     r: 对应数值4

     w: 对应数值2

     x:对应数值1

     -:对应数值0

数字设定的关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:

  111 101 100

  再将其每三位转换成为一个十进制数,就是754。

  例如,我们想让a.txt这个文件的权限为:

   自己 同组用户 其他用户

  可读 是 是 是

  可写 是 是

    可执行

那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:

[root@localhost ~]# chmod 664 a.txt

按照上面的规则,rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面举几个例子:

-rwx------:等于数字表示700。

-rwxr—r--:等于数字表示744。

-rw-rw-r-x:等于数字表示665。

drwx—x—x:等于数字表示711。

drwx------:等于数字表示700。

在文本模式下,可执行chmod命令去改变文件和目录的权限。我们先执行ls -l 看看目录内的情况:

[root@localhost ~]# ls -l

总用量 368

-rw-r--r-- 1 root root 12172 8月 15 23:18 conkyrc.sample

drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

可以看到当然文件conkyrc.sample文件的权限是644,然后把这个文件的权限改成777。执行下面命令

[root@localhost ~]# chmod 777 conkyrc.sample

然后ls -l看一下执行后的结果:

[root@localhost ~]# ls -l

总用量 368

-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

可以看到conkyrc.sample文件的权限已经修改为rwxrwxrwx

如果要加上特殊权限,就必须使用4位数字才能表示。特殊权限的对应数值为:

     s或 S (SUID):对应数值4。

     s或 S (SGID):对应数值2。

     t或 T :对应数值1。

<code>

用同样的方法修改文件权限就可以了

例如:

<code>

[root@localhost ~]# chmod 7600 conkyrc.sample

解释7600     最前面一位 表示的特殊权限  对应u,g,o三组的执行块。也就是x对应的位置,当x位置为0时,权限显示为S(大S),为1 时,权限显示为s(小s)

例如:chmod 7700 conkyrc.sample     

Ls –l

会显示   -rws--S--T

[root@localhost ~]# ls -l

总用量 368

-rwS--S--T 1 root root 12172 8月 15 23:18 conkyrc.sample

drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。

例如:

[root@localhost ~]# chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx

[root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx

47.          修改文件的所属用户和组

执行下面命令,把conkyrc.sample文件的所有权转移到用户user:

[root@localhost ~]# chown user conkyrc.sample

[root@localhost ~]# ls -l

要改变所属组,可使用下面命令:

[root@localhost ~]# chown :users conkyrc.sample

48.          查看邮件

Mail –v

进入命令行  。。help 根据提示查看文件

49.          echo显示字符串

 #echo hello world
  hello world

 #echo -e 'hello\nworld'
  hello
  world
  输出ascii字符: echo -e \NNN (NNN为ascii字符的八进制码号,不符合八进制的将会按照字面意义进行打印)
  #echo -e '\61 \62 \101 \141'
  1 2 A a

linux echo命令详解
功能说明:显示文字。
  语   法:echo [-ne][字符串]或 echo [--help][--version]
  补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
  参   数:-n 不要在最后自动换行
        -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
          文字输出:
          \a 发出警告声;
          \b 删除前一个字符;
          \c 最后不加上换行符号;
          \f 换行但光标仍旧停留在原来的位置;
          \n 换行且光标移至行首;
          \r 光标移至行首,但不换行;
          \t 插入tab;
          \v 与\f相同;
          \\ 插入\字符;
          \nnn 插入nnn(八进制)所代表的ASCII字符;
        --help 显示帮助
        --version 显示版本信息

50.          linux中常提到的LiveCD是什么东东?

很多 Linux® 发行版本已经被设计为所谓的“LiveCD”,即可以直接引导为可用 Linux 系统的 CD。与大多数广为应用的发行版本中可以使用的“拯救模式(rescue mode)”引导选项相反,这些 LiveCD 的设计是,当从 CD 引导起来后,提供一整套可以使用的工具,其中有一些是通用的,有一些是高度专用的。David Mertz 介绍了 Linux 市场中这一迅速成长的分支。

51.          i386、i586和i686区别

abc-1.2.3-4.i386.rpm

  abc-1.2.3-4.i586.rpm

  abc-1.2.3-4.i686.rpm

  请问它们有什么不同呢?

  答:这里的i386、i586、i686指的是适用于 intel i386、i586、i686兼容指令集的微处理器。一般来说,等级较高的机器可接受较低等级的rpm文件。你可以通过cat /proc/cpuinfo 文件查询你的CPU等级。

i代表intel系列的cpu

386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦!


i586 就是 586 等级的计算机,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级;

i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!

noarch 就是没有任何硬件等级上的限制

52.          升级内核

我找了很多升级内核的流程。。只有这个流程使我升级成功。虽然还有很多的驱动没有加载成功,最少我可以进入系统了。。桌面Linux系统还是进不去。。很高兴。。慢慢完善了。。把驱动都装上。。啊哈哈

VMware下 linux内核升级
    刚开始学习linux,就用VMware装了一下个linux系统,系统为Redhat9.0,内核为2.4.20。突然间想把内核升级一下,就在网上随找了一个贴子,以为照着贴子一步一步的做就可以升级成功,没有想到事情是异常的复杂。整整弄了两天才升级成功。原本想升级到2.6.24的内核,但一直都不成功,最后换成2.6.18的内核才成功。

     如果你也是用VMware的话,建议你使用VMware的快照功能,说白了就是备份还原功能,创建的快照和XP里的还原点是一样的,只要你的硬盘有足够的空间,你可以创建任意多个快照,当系统出现致命错误时,你就可以用快照恢复到创建快照时的状态。


升级过程如下:

1、查看Linux内核版本

# uname -a

如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了
2、下载2.6内核源码
   下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.gz

3、下载内核升级工具

   (1)下载module-init-tools-3.2.tar.bz2

      http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2

(2)下载mkinitrd-4.1.18-2.i386.rpm
    http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm
(3)下载lvm2-2.00.25-1.01.i386.rpm
    http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm
(4)下载device-mapper-1.00.19-2.i386.rpm   
     http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm

配置工作
好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。
4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下。
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
# tar jvxf linux-2.6.18.tar.gz (解压新内核)
# ln -s linux-2.6.18.tar.gz linux (重新生成linux文件夹)
6、安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)
# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
7、安装另外三个升级工具
   回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
升级上面的三个工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm   (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
(如果不更新以上几个升级包,在后面编译内核时会提示以下错误,我已经作了试验:)
mkinitrd failed
make[1]: *** [install] Error 1
make: *** [install] Error 2
8、配置内核选项。有点繁琐,~~希望一次成功哦。
# cd linux-2.6.18 (进入到/usr/src/linux-2.6.18目录下)
# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):
(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;
(2)Device Drivers--->Block Devices中选上“Loopback device support”;
Device Drivers--->Multi-device support(RAID and LVM)处要选上“device mapper support”;
Device Drivers--->Graphics support,一定要选上“ Support for frame buffer devices”;
Device Drivers --->USB support --->选上“USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)
Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) ---><*> AMD PCnet32 PCI support
(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBB (ext3) debugging support(在2.6.24和2.6.18中都没有找到这一项)
File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;
注意:
ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
kernel panic : no init found ,try passing init = option to kernel.....
或者是:
VFS:Cannot open root device "hdxy" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
或者是:
mount: error 19 mounting ext3
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc fail: 2
Freeing unused kernel memory: 244k freed
Kernel panic – not syncing: No init found. Try passing init = option to kernel
(后两种错误我很不幸的都碰到了,每次都是从头再来,幸好我在开始之前创建了快照,每次升级失败我都用快照恢复,如果没有快照,可以就要重装系统,希望你能比我幸运,一次成功。)
(4)因为我是在vmware下编译内核,硬盘用的是scsi的,按照网上成功的升级例子,以下三个选项也必须选上:
Device Drivers ---><*>SCSI device support (此项不选的话,下面两项就选择不上)
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support
9 开始编译
在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!
# make dep   (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean   (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage   (注意大小写。这一步才是真正编译内核)
     内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make   zImage编译,内核很大的话,系统会提示你使用make   bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules   (编译可加载模块)
# make modules_install   (安装可加载模块)
   安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
# make install   (安装新内核)
注意:
         make install的时候可能会出现如下错误信息:
         No module BusLogic found for kernel 2.4.12
         mkinitrd failed
此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o   /lib/modules/2.6.18/kernel/drivers/scsi
不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行,
四 启动新内核(有时可以省略)
10 将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:   
# cp   /usr/src/linux-2.6.18/arch/i386/boot/bzImage   /boot/vmlinuz-2.6.18   
# cp   /usr/src/linux-2.6.18/System.map   /boot/System.map-2.6.18   
# cd   /boot   (进入boot目录)
# rm –rf   System.map   (删除原来的连接)   
# ln –s System.map-2.6.18   System.map   (重新建立连接)


11、修改Grub启动管理器(这一步也可以省略,这样的话重启之后会默认进入2.4内核)
如果没有错误的话,下面开始修改grub配置文件(不要告诉我你用的lilo)
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下会生成一个initrd-2.6.18.img,并且你的grub.conf文件也作了相应更改)
# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda2)
# vi /grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root= LABEL=/
initrd /initrd-2.6.18.img
做两处修改:
(1)将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2)将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/hda2 enforcing=0
initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
12,OK,大功告成!赶快重启,看看升级后的2.6内核吧
重新启动,你会发现启动菜单会多出来一个2.6内核的启动项。

53.          查看支持的文件系统

Cat /etc/filesystems

54.          查看各分区的文件系统

Cat /etc/fstab

Fstab  fs filesystem文件系统  tab 制表

55.          linux tty pty pts 概念 区别

基本概念:
1. tty(终端设备的统称):
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
2. pty(虚拟终端):
但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)
3. pts/ptmx(pts/ptmx结合使用,进而实现pty):
pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
Linux终端:

在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
1、串行端口终端(/dev/ttySn)
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。可接串口来实验。
2、伪终端(/dev/pty/)
伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。
例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。
这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用 ptyp3(m3)逻辑设备。
例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备 ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给 getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
在使用设备文件系统 (device filesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0—ttypf) 的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。
但Linux系统上的Unix98并不使用上述方法,而使用了”pty master”方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录 /dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。
即: TELNET ---> TTYP3(S3: slave) ---> PTYP3(M3: master) ---> GETTY
=========================================================================
实验:
1、在X下打开一个或N个终端窗口
2、#ls /dev/pt*
3、关闭这个X下的终端窗口,再次运行;比较两次输出信息就明白了。
在RHEL4环境下: 输出为/dev/ptmx /dev/pts/1存在一(master)对多(slave)的情况
=========================================================================
3、控制终端(/dev/tty)
如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。
4、控制台终端(/dev/ttyn, /dev/console)
在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向 /dev/tty0进行写操作 即下例:
1、# tty(查看当前TTY)
/dev/tty1
2、#echo "test tty0" > /dev/tty0
test tty0
5 虚拟终端(/dev/pts/n)
在Xwindows模式下的伪终端.
6 其它类型
Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。这里不再赘述。
FAQ: 终端和控制台
RROM:http://blog.footoo.org/?p=73
Posted on Tuesday, November 28th, 20## by CLIFF
吴晋 (cliffwoo@gmail.com)
FoOTOo OpenSource Lab
由于在很多朋友对终端的概念一直不是很清楚,因此写了这个FAQ,希望能够帮助大家理解这些概念。不妥之处,还请大家来信指出。
Q:/dev/console 是什么?
A:/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。目前只有在单用户模式下,才允许用户登录控制台。
Q:/dev/tty是什么?
A:tty设备包括虚拟控制台,串口以及伪终端设备。
/dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。
Q:/dev/ttyS*是什么?
A:/dev/ttyS*是串行终端设备。
Q:/dev/pty*是什么?
A:/dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该pty从设备)。
Q:/dev/tty0与/dev/tty1 …/dev/tty63是什么?它们之间有什么区别?
A:/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2
Q:如何确定当前所在的终端(或控制台)?
A:使用tty命令可以确定当前的终端或者控制台。
Q:/dev/console是到/dev/tty0的符号链接吗?
A: 目前的大多数文本中都称/dev/console是到/dev/tty0的链接(包括《Linux内核源代码情景分析》),但是这样说是不确切的。根据内核文档,在2.1.71之前,/dev/console根据不同系统的设定可以链接到/dev/tty0或者其他tty*上,在2.1.71版本之后则完全由内核控制。目前,只有在单用户模式下可以登录/dev/console(可以在单用户模式下输入tty命令进行确认)。
Q:/dev/tty0与/dev/fb*有什么区别?
A: 在Framebuffer设备没有启用的系统中,可以使用/dev/tty0访问显卡。
Q:关于终端和控制台的区别可以参考哪些文本
A: 可以参考内核文档中的 Documents/devices.txt 中关于”TERMINAL DEVICES” 的章节。另外,《Linux内核源代码情景分析》的8.7节 以及《Operating Systems : Design and Implementation》中的3.9节(第3版中为3.8节)都对终端设备的概念和历史做了很好的介绍。另外在《Modern Operating system》中也有对终端设备的介绍,由于与《Operating Systems : Design and Implementation》的作者相同,所以文本内容也大致相同。需要注意的一点是《Operating Systems : Design and Implementation》中将终端设备分为3类,而《Modern Operating system》将终端硬件设备分为2类,差别在于前者将 X Terminal作为一个类别。

56.          剖析Linux系统启动过程

内容提要
  本文以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。

  阅读Linux源代码,无疑是深入学习Linux的最好方法。在本文对Linux启动过程的介绍中,我们也尝试从源代码的视角来更深入的剖析Linux的启动过程,所以其中也简单涉及到部分相关的Linux源代码,Linux启动这部分的源码主要使用的是C语言,也涉及到了少量的汇编。而启动过程中也执行了大量的shell(主要是bash shell)所写脚本。为了方便读者阅读,笔者将整个Linux启动过程分成以下几个部分逐一介绍,大家可以参考下图:

  当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。

    下面就将逐一介绍其中几个关键的部分:


  第一部分:内核的引导(核内引导)

  Red Hat9.0可以使用lilo或grub等引导程序开始引导Linux系统,当引导程序成功完成引导任务后,Linux从它们手中接管了CPU的控制权,然后CPU就开始执行Linux的核心映象代码,开始了Linux启动过程。这里使用了几个汇编程序来引导Linux,这一步泛及到Linux源代码树中的“arch/i386/boot”下的这几个文件:bootsect.S、setup.S、video.S等。

  其中bootsect.S是生成引导扇区的汇编源码,它完成加载动作后直接跳转到setup.S的程序入口。setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到 0x100000。

  那么0x100000这个内存地址中存放的是什么代码?而这些代码又是从何而来的呢?

  0x100000这个内存地址存放的是解压后的内核,因为Red Hat提供的内核包含了众多驱动和功能而显得比较大,所以在内核编译中使用了“makebzImage”方式,从而生成压缩过的内核,在RedHat中内核常常被命名为vmlinuz,在Linux的最初引导过程中,是通过"arch/i386/boot/compressed/"中的head.S利用misc.c中定义的decompress_kernel()函数,将内核vmlinuz解压到0x100000的。

  当CPU跳到0x100000时,将执行"arch/i386/kernel/head.S"中的startup_32,它也是vmlinux的入口,然后就跳转到start_kernel()中去了。start_kernel()是"init/main.c"中的定义的函数,start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。start_kernel()函数中,做了大量的工作来建立基本的Linux核心环境。如果顺利执行完start_kernel(),则基本的Linux核心环境已经建立起来了。

  在start_kernel()的最后,通过调用init()函数,系统创建第一个核心线程,启动了init过程。而核心线程init()主要是来进行一些外设初始化的工作的,包括调用do_basic_setup()完成外设及其驱动程序的加载和初始化。并完成文件系统初始化和root文件系统的安装。

  当do_basic_setup()函数返回init(),init()又打开了/dev/console设备,重定向三个标准的输入输出文件stdin、stdout和stderr到控制台,最后,搜索文件系统中的init程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序。到此init()函数结束,内核的引导部分也到此结束了,

    第二部分:运行init


  init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“###"开始的中注释为笔者增加的):

  #
  # inittab       This file describes how the INIT process should set up
  #               the system in a certain run-level.
  #
  # Author:       Miquel van Smoorenburg,

  #               Modified for RHS Linux by Marc Ewing and Donnie Barnes
  #

  # Default runlevel. The runlevels used by RHS are:
  #   0 - halt (Do NOT set initdefault to this)
  #   1 - Single user mode
  #   2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)
  #   3 - Full multiuser mode
  #   4 - unused
  #   5 - X11
  #   6 - reboot (Do NOT set initdefault to this)
  #
  ###表示当前缺省运行级别为5(initdefault);
  id:5:initdefault:

  ###启动时自动执行/etc/rc.d/rc.sysinit脚本(sysinit)
  # System initialization.
  si::sysinit:/etc/rc.d/rc.sysinit

  l0:0:wait:/etc/rc.d/rc 0
  l1:1:wait:/etc/rc.d/rc 1
  l2:2:wait:/etc/rc.d/rc 2
  l3:3:wait:/etc/rc.d/rc 3
  l4:4:wait:/etc/rc.d/rc 4
  ###当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回(wait)
  l5:5:wait:/etc/rc.d/rc 5
  l6:6:wait:/etc/rc.d/rc 6

  ###在启动过程中允许按CTRL-ALT-DELETE重启系统
  # Trap CTRL-ALT-DELETE
  ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  # When our UPS tells us power has failed, assume we have a few minutes
  # of power left.  Schedule a shutdown for 2 minutes from now.
  # This does, of course, assume you have powerd installed and your
  # UPS connected and working correctly.
  pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

  # If power was restored before the shutdown kicked in, cancel it.
  pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

  ###在2、3、4、5级别上以ttyX为参数执行/sbin/mingetty程序,打开ttyX终端用于用户登录,
  ###如果进程退出则再次运行mingetty程序(respawn)
  # Run gettys in standard runlevels
  1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  4:2345:respawn:/sbin/mingetty tty4
  5:2345:respawn:/sbin/mingetty tty5
  6:2345:respawn:/sbin/mingetty tty6

  ###在5级别上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行(respawn)
  # Run xdm in runlevel 5
  x:5:respawn:/etc/X11/prefdm -nodaemon

以上面的inittab文件为例,来说明一下inittab的格式。其中以#开始的行是注释行,除了注释行之外,每一行都有以下格式:
  id:runlevel:action:process

  对上面各项的详细解释如下:

  1. id

  id是指入口标识符,它是一个字符串,对于getty或mingetty等其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。

  2. runlevel

  runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留:其中0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。

  3. action

  action是描述其后的process的运行方式的。action可取的值包括:initdefault、sysinit、boot、bootwait等:

  initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入runlevel。

  sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel。

  其余的action(不含initdefault)都与某个runlevel相关。各个action的定义在inittab的man手册中有详细的描述。

  4. process

  process为具体的执行程序。程序后面可以带参数。

  第三部分:系统初始化

  在init的配置文件中有这么一行:

  si::sysinit:/etc/rc.d/rc.sysinit

  它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

  rc.sysinit约有850多行,但是每个单一的功能还是比较简单,而且带有注释,建议有兴趣的用户可以自行阅读自己机器上的该文件,以了解系统初始化所详细情况。由于此文件较长,所以不在本文中列出来,也不做具体的介绍。

  当rc.sysinit程序执行完毕后,将返回init继续下一步。


第四部分:启动对应运行级别的守护进程


  在rc.sysinit执行后,将返回init继续其它的动作,通常接下来会执行到/etc/rc.d/rc程序。以运行级别3为例,init将执行配置文件inittab中的以下这行:

  l5:5:wait:/etc/rc.d/rc 5

  这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

  /etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

  至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。常见的守护进程有:

  amd:自动安装NFS守护进程
  apmd:高级电源管理守护进程
  arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
  autofs:自动安装管理进程automount,与NFS相关,依赖于NIS
  crond:Linux下的计划任务的守护进程
  named:DNS服务器
  netfs:安装NFS、Samba和NetWare网络文件系统
  network:激活已配置网络接口的脚本程序
  nfs:打开NFS服务
  portmap:RPC portmap管理器,它管理基于RPC服务的连接
  sendmail:邮件服务器sendmail
  smb:Samba文件共享/打印服务
  syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
  xfs:X Window字型服务器,为本地和远程X服务器提供字型集
  Xinetd:支持多种网络服务的核心守护进程,可以管理wuftp、sshd、telnet等服务

  这些守护进程也启动完成了,rc程序也就执行完了,然后又将返回init继续下一步。

    第五部分:建立终端


  rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。通过按Alt+Fn(n对应1-6)可以在这6个终端中切换。在inittab中的以下6行就是定义了6个终端:

  1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  4:2345:respawn:/sbin/mingetty tty4
  5:2345:respawn:/sbin/mingetty tty5
  6:2345:respawn:/sbin/mingetty tty6

  从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

  第六部分:登录系统,启动完成

  对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。而本文主要讲的还是文本方式登录的情况:

  当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

  Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

  在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。

  login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。然后开始设置各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文件,所有的配置文件执行后后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,到此整个启动过程就结束了。

希望通过上面对Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一个相关Linux启动过程的清晰概念,进而可以进一步研究Linux接下来是如何工作的。

57.          fc6.0虚拟机安装笔记

fc6.0虚拟机安装笔记

A。安装虚拟机。

1.打开vmware>文件>新建>虚拟机。
2.打开了“新建虚拟机向导”的欢迎界面。单击“下一步”。
3.“虚拟机配置”>“典型”默认配置>下一步。
4.“客户机操作系统”>选择“linux”>版本选择“other Linux”>下一步。
5.“虚拟机名称”,我们安装的是fc6.0就写fc6了,“位置”不要选择默认的位置,那样我们的C盘就大的很。我们专门建立一个虚拟机的文件夹。“G:\虚拟机\fc6\”。下一步。
6.“网络类型”选择“使用桥接网络”,下一步。
7.磁盘设置,选择8.0GB,其他的不选择。完成。

B。装系统。

1.编辑虚拟机设置,因为我们的fc6.0不支持虚拟机的默认的磁盘格式(scsi),=我们要改成IDE格式的磁盘。
=选择编辑虚拟机设置>选择“Hard.disk”再单击“移除”。再单击“添加”。
=弹出添加选项卡。选择“Hard.disk”,下一步。
=创建一个新的虚拟磁盘,下一步。
=选择磁盘类型“IDE”,下一步。
=存放位置这个适合我们就可以浏览一下原来的那个虚拟磁盘的位置了。放到一起,把原来那个就删除了。下一步。
=容量设置和原来一样。完成。
=设置光驱“cd-rom”,我们选择ISO文件,fc的ISO。这个我已经下载好了。

2.启动虚拟机,就是我们刚才建的虚拟机。
=“To install or upgrade in graphical mode,press the<ENTER>KEY”安装或者升级在图形界面下,请按回车。
=“To install or upgrade in text mode ,type:linux text<ENTER>”安装或者升级在文本格式下,请输入Linux text 然后回车。
=“Use the function keys listed below for more information.”下面列出的使用功能键来获得更多信息,就是按f1到f5的选项。
=“[F1-Main][F2-Options][F3-General][F4-Kernel][F5-Rescue]”F1就是这个主菜单,F2设置,F3一般设置,F4核心设置,F5修复设置。

我们直接回车!系统开始安装。
=“cd found”这里检查我们的系统源文件是否完整,就是我们的ISO文件了。这个直接skip跳过,使用TAB 键。
=真正的系统安装开始了。
=“Next”选择语言>Chinese简体中文>“next”>选择键盘类型>美国英语式>“下一步”已经变成中文的模式了。
=“警告”hda为第一块硬盘上没有分区表。我们要创建新的分区,和windows类似。选择“是”。重新分区。
=创建分区,相当windows的分C盘D盘之类的,我们选择默认的“在选定的磁盘上删除所有分区并创建默认分区结构。”“下一步”。“警告”因为有删除操作,选择“是”。
=网络配置这里我们默认下一步
=地域选择默认下一步
=管理员口令,这个就是root的口令。自己设置了。下一步
=安装选项,你安装的那一类型的我们全选“办公,软件开发,网络服务器”。下一步。
=开始检查,检查完了,重启就开始安装了。
=开始安装了,需要漫长的等待。
下面是自动的。

安装好之后就会重启。完-------

58.          乱码

http://www.360doc.com/content/10/0810/14/2104556_45009914.shtml



http://bbs.linuxeden.com/thread-86084-1-1.html

中文相关的软件包基本就是这些:

ttfonts-zh_CN-2.12-1.noarch.rpm
ttfonts-zh_TW-2.11-19.noarch.rpm
kde-i18n-Chinese-3.1-2.noarch.rpm
kde-i18n-Chinese-Big5-3.1-2.noarch.rpm
miniChinput-0.0.3-37.i386.rpm
xpdf-chinese-simplified-2.01-8.i386.rpm
xpdf-chinese-traditional-2.01-8.i386.rpm
openoffice-i18n-1.0.2-4.i386.rpm

另外编辑/etc/sysconfig/i18n成下面这个样子:
LANG="zh_CN.GB18030"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.iso885915:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"


http://linux.chinaunix.net/bbs/viewthread.php?tid=1001512
装了redhat 5后发现,安装系统时没安装中文字体,没办法显示中文网页,都是乱码。
上网找到了安装的方法,步骤如下:
1.windows的字体一般存放在c:\windows\fonts目录下,copy你要的字体到linux下,文件是
例如simsun什么的!
ttf格式
2.把字体copy到/usr/share/fonts 目录下,然后执行以下命令
       mkfontscale
       mkfontdir//这两条命令是生成字体的索引信息
       fc-cache //更新字体缓存
3.安装好了,可以查看中文网页了

更多相关推荐:
linux学习总结01

/etc/inittab关于启动的一些配置文件停止系统init0haltpoweroffshutdown重启系统init6reboot如果设置成1或6的话,那么将永远无法进入系统,总是处于不断的重启或开机动作。…

ARM-linux学习总结

AEM-linux学习总结系统要求:windows下虚拟机安装RedLinux挂接ARM开发板知识点1.1.WindowsXP与Linux共享文件夹问题在Linux系统中选择VM-Settings在弹出的Vir…

linux学习总结

Linux学习总结一、什么是Linux操作系统?Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、…

linux学习总结

学习总结1.在虚拟机VmareWorkstation上安装RedHatLinux9系统并且配置;1.1.安装FTP服务;1.1.1.挂载光驱:mount/mnt/cdrom1.1.2.在RedHatLinux系…

linux学习总结

学习Linux,首先得了解它,linux是一种类unix的操作系统,在源代码级上兼容绝大部分的Unix标准,他的标志是一直可爱的企鹅,linux从一开始,就决定自由扩散它,包括源代码,这引起了很多爱好者的注意,…

linux学习心得

Linux学习心得我们这一代90后从小接触的是windows98家里条件好的自己有电脑装的是20xx后来又有了XP上大学时又有了win7说实话小时候没想过搞IT也计算机了解也只是一些皮毛至于什么UNIXLinu...

Linux学习总结

重庆工业职业技术学院服务器安装与布署课题名称服务器安装与布署专业班级学生姓名陈贵芳指导教师顾宏久二O13年11月1目录目录Linux学习总结1一LINUX介绍11LINUX概述12发展简史13文件系统34主要特...

Linux学习心得

Linux学习心得总结第二事业部KevinSunLinux简介Linux是一套免费使用和自由传播的类Unix开源操作系统是自由软件和开源代码的经典范例由世界各地的成千上万的程序员设计和实现的具有开放性多用户多任...

linux学习心得及其建议

Linux学习心得转眼一个学期又过去了心中总有点失落在这一年半的大学生活里我得到了什么收获了什么感觉好迷茫回想自己刚踏入校门的那份纯情无知现在回味起来都感觉有点好笑记得刚开始报选修课的时候当在网上看见齐老师的名...

韩顺平.linux视频教程学习小结.v1.0

linux视频教程第0讲开山篇为什么学习linuxlinux是一个开源免费的操作系统其稳定性安全性处理多并发已经得到业界的认可目前很多中型大型甚至是巨型项目都在使用linuxlinux内核redhat红旗lin...

Linux内核学习经验总结

开篇学习内核每个人都有自己的学习方法仁者见仁智者见智以下是我在学习过程中总结出来的东西对自身来说我认为比较有效率拿出来跟大家交流一下内核学习一偏之见疏漏难免恳请指正为什么写这篇博客刚开始学内核的时候不要执着于一...

韩顺平.linux视频教程+鸟哥linux学习小结1.0

目录1linux视频教程第0讲开山篇211为什么学习linux212linuxfor工作213如何学习linux214内容讲解215推荐书籍32linux视频教程第1讲基础介绍321linux的初步介绍322l...

linux学习总结(37篇)