文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>鸟哥的Linux私房菜学习笔记六(基础部分完)

鸟哥的Linux私房菜学习笔记六(基础部分完)

时间:2009-04-14  来源:hg1995

开机关机流程与 Loader
整个开机的程序是这样的:
1.  加载 BIOS 的硬件信息,并取得第一个开机装置的代号;
2.  读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的开机信息;
3.  加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装置;
4.  Kernel 执行 init 程序并取得 run-level 信息;
5.  init 执行 /etc/rc.d/rc.sysinit 档案;
6.  启动核心的外挂模块 (/etc/modprobe.conf);
7.  init 执行 run-level 的各个批次档( Scripts );
8.  init 执行 /etc/rc.d/rc.local 档案;
9.  执行 /bin/login 程序,并等待使用者登入;
10. 登入之后开始以 Shell 控管主机。

第一支程序 init 及设定文件 /etc/inittab 与 runlevel:整个 Linux 系统当中第一支被执行的程序就是『 /sbin/init 』
init 处理系统初始化流程 (/etc/rc.d/rc.sysinit):::
1.  取得网络环境与主机类型:
    首先读取网络设定文件 /etc/sysconfig/network ,    取得主机名称与预设通讯闸 (gateway) 等网络环境。
2.  测试与挂载内存装置 /proc 及 USB 装置 /sys:
    除挂载内存装置 /proc 之外,还会主动侦测系统上是否具有 usb 的装置, 若有则会主动加载usb 的驱动程序,并且尝试挂载 usb 的档案系统。
3.  决定是否启动 SELinux :
    近期以来,    很多 distributions 都加入了美国国家安全局发展的 Security Enhance Linux 套件,这个 SELinux 可以更加强化 Linux 操作环境的安全性,不过,由于安全挂帅, 对于新手来说,不是很容易上手。因此,我们才会建议大家先不要启动啊。无论如何,在这个阶段我们可以分析SELinux 是否要启动。
4.  接口设备的侦测与 Plug and Play (PnP) 参数的测试:
    根据核心在开机时侦测的结果 (/proc/sys/kernel/modprobe ) 开始进行 ide / scsi / 网络 /音效 等接口设备的侦测,以及利用以加载的核心模块进行 PnP 装置的参数测试。
5.  使用者自订模块的加载
    使用者可以在 /etc/sysconfig/modules/*.modules 加入自订的模块, 则此时会被加载到系统当中喔!
6.  加载核心的相关设定:
    系统会主动去读取 /etc/sysctl.conf 这个档案的设定值,使核心功能成为我们想要的样子。
7.  设定系统时间 (clock):
8.  设定终端机 (console) 字形:
9.  设定 RAID 与 LVM 等硬盘功能:
10. 以 fsck 检验磁盘档案系统:
11. 进行磁盘配额 quota 的转换 (非必要):
12. 重新以可读取模式挂载系统磁盘:
13. 启动 quota 功能:
14. 启动系统随机数装置 (产生随机数功能):
15. 清除开机过程当中的临时文件:
16. 将开机相关信息加载 /var/log/dmesg 档案中。

启动系统服务与相关启动设定档 (/etc/rc.d/rc.n & /etc/sysconfig)
• 在 /etc/rc.d/rc3.d 内的,以 S 为开头的档案,为开机时,需要『启动, start』的服务;
• 在该目录内的 K 为开头的档案,为『关机时需要关闭的服务, stop』的档案连结;
• 在 S 与 K 后面接的数字,代表该档案被执行的顺序。

使用者自订开机启动程序 (/etc/rc.d/rc.local):::
我有任何想要在开机时就进行的工作时,直接将他写入 /etc/rc.d/rc.local , 那么该工作就会在开机的时候自动被加载

其它开机相关事项:
• 关于模块: /etc/modprobe.conf::::::对模块进行一些参数的规划
• /etc/sysconfig/*
开机的过程当中,读取的一些服务的相关设定文件都是记录在 /etc/sysconfig 目录下

核心模块与相依性:
核 心的放置处是在 /lib/modules/`uname -r`/kernel 当中,里面主要还分成几个目录:
arch    :与硬件平台有关的项目,例如 CPU 的等级等等;
crypto  :核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers :一些硬件的驱动程序,例如显示卡、网络卡、PCI 相关硬件等等;
fs      :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib     :一些函式库;
net     :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound   :与音效有关的各项模块;
检查 /lib/modules/`uname-r`/modules.dep 这个档案啦!他记录了在核心支持的模块的各项相依性,利用 depmod 这个指令就可以达到建立该档案的需求
[root@linux ~]# depmod [-Ane]
参数:
-A  :不加任何参数时, depmod 会主动的去分析目前核心的模块,并且重新写入/lib/modules/`uname -r`/modules.dep 当中。若加入 -A 参数时,则 depmod会去搜寻比 modules.dep 还要新的模块,如果真找到新模块,才会更新。
-n  :不写入 modules.dep ,而是将结果输出到屏幕上(standard out);
-e  :显示出目前已加载的不可执行的模块名称
范例一:若我已经做好一个网络卡驱动程序,假设文件名为 a.ko,该如何更新核心相依性?
[root@linux ~]# cp /full/path/a.ko /lib/modules/`uname -r`/kernel/drivers/net
[root@linux ~]# depmod

核心模块的观察: lsmod, modinfo
[root@linux ~]# modinfo [-adln] [module_name|filename]
参数:
-a  :仅列出作者名称;
-d  :仅列出该 modules 的说明 (description);
-l  :仅列出授权 (license);
-n  :仅列出该模块的详细路径。

核心模块的加载与移除: insmod, modprobe, rmmod
modprobe 会主动的去搜寻 modules.dep 的内容,先克服了模块的相依性后, 才决定需要加载的模块有哪些,很方便。至于 insmod 则完全由使用者自行加载一个完整文件名的模块, 并不会主动的分析模块相依性
[root@linux ~]# insmod [/full/path/module_name] [parameters]
[root@linux ~]# rmmod [-fw] module_name
参数:
-f  :强制将该模块移除掉,不论是否正被使用;
-w  :若该模块正被使用,则 rmmod 会等待该模块被使用完毕后,才移除他!
[root@linux ~]# modprobe [-lcf] module_name
参数:
-c  :列出目前系统所有的模块!(更详细的代号对应表)
-l  :列出目前在 /lib/modules/`uname -r`/kernel 当中的所有模块完整文件名;
-f  :强制加载该模块;
-r  :类似 rmmod ,就是移除某个模块啰~

核心模块的额外参数设定: /etc/modprobe.conf

LILO 的设定档 /etc/lilo.conf:
LILO 的设定档 /etc/lilo.conf 同样的分为两部分,分别是 LILO 整体环境设定部分, 与每个开机项目
核心文件名称规范部分。有点像这样啦:
[root@linux ~]# vi /etc/lilo.conf
# 第一部份,整体的设定部分
prompt      <==强制出现 boot 的开机讯息啰!
Compact     <==可以整合一些读取的扇区,可以保持 map 较小,适合软盘开机时使用
timeout=50  <==如果有多重开机的话,可以设定这个延迟时间,单位 0.1 秒
default=linux-2.4.18   <==预设的开机项目,与底下的 label 对应!
boot=/dev/hda          <==Lilo 的开机信息写入到 /dev/hda 这颗硬盘的 MBR 当中。
map=/boot/map          <==用来说明 local 主机的地图信息啰!
install=/boot/boot.b   <==关于开机区的讯息(boot sector),不用理他没关系!
Linear                 <==在较大容量的硬盘使用时,可以加入这一个参数试试看!
lba32                  <==这个东西也是在大容量的硬盘使用时候会需要的参数!
password=1234567       <==设定密码!如果为了安全起见,可以设定您的 lilo 密码哩!
message=/boot/message <==那个 LILO 的讯息就是在里面出现的啦!
# 第二部分,个别的开机设定部分,一个 image 或 other 均代表一个开机设定!
image=/boot/vmlinuz-2.4.7-10      <==核心档案啦!
        label=linux-2.4.7         <==请注意!label 前面以 [tab] 按键来作为分隔!
        initrd=/boot/initrd-2.4.7-10.img
        read-only                 <==开机扇区挂载为只读!
        root=/dev/hda1            <==挂载成 / 这个 root 目录的磁盘!
other=/dev/hdb1                   <==如果是『非 Linux 核心』就以 other 来设定
        label=Windows2k           <==同样的要有 label 来表示这个开机扇区的名称!

原始码与 Tarball 套件管理员
什么是 make 与 configure ?  原始码写出来之后,需要针对不同的作业环境来进行编译的行为!这个时候就很需要 configure 以及 make 的功能
什么是 Tarball 的套件 ?所谓的 Tarball 档案,其实就是将套件的所有原始码档案先以 tar 打包,然后再以压缩技术来压缩,通常最常见的就是以 gzip 来压缩了

一个套件的 Tarball 基本安装流程:
1. 将 Tarball 由厂商的网页下载下来;
2. 将 Tarball 解开,产生很多的原始码档案;
3. 开始以 gcc 进行原始码的编译( 会产生目标文件 object files );
4. 然后以 gcc 进行函式库、主、子程序的连结,以形成主要的 binary file;
5. 将上述的 binary file 以及相关的设定文件安装至自己的主机上面。
上面第 3, 4 步骤当中,我们可以透过 make 这个指令的功能来简化他

Tarball 安装的基本步骤:
1. 将 tarball 档案在 /usr/local/src 目录下解压缩;
2. 进入新建立的目录底下,去查阅 INSTALL 与 README 等相关档案内容( 很重要的步骤! );
3. 根据 INSTALL/README 的内容察看并安装好一些相依的套件( 非必要 );
4. 以自动侦测程序( configure 或 config )侦测作业环境,并建立 Makefile 这个档案;
5. 以 make 这个程序并使用该目录下的 Makefile 做为他的参数设定档,来进行 make ( 编译或其它 )的动作;
6. 以 make 这个程序,并以 Makefile 这个参数设定档,依据 install 这个标的( target )的指定来安装到正确的路径!

大部分的 tarball 软件之安装的指令下达方式:
1. ./configure:::这个步骤就是在建立 Makefile 这的档案
2. make clean:::make 会读取 Makefile 中关于 clean 的工作
3. make::make 会依据 Makefile 当中的预设工作进行编译的行为
4. make install::make 会依据 Makefile 这个档案里面关于 install 的项目,将上一个步骤所编译完成的数据给他安装到预定的目录中

ldconfig 与 /etc/ld.so.conf:
如何将动态函式库加载高速缓存( cache )当中:
1. 首先,我们必须要在 /etc/ld.so.conf 里面写下『 想要读入高速缓存当中的动态函式库所在的目录』,注意喔,是目录而不是档案;
2. 接下来则是利用 ldconfig 这个执行档将 /etc/ld.so.conf 的资料读入快取当中;
3. 同时也将数据记录一份在 /etc/ld.so.cache 这个档案当中吶!
[root@linux ~]# ldconfig [-f conf] [ -C cache] [-p]
参数:
-f conf :那个 conf 指的是某个文件名称,也就是说,使用 conf 作为 libarary函式库的取得路径,而不以 /etc/ld.so.conf 为默认值
-C cache:那个 cache 指的是某个文件名称,也就是说,使用 cache 作为快取暂存的函式库资料,而不以 /etc/ld.so.cache 为默认值
-p :列出目前有的所有函式库资料内容(在 /etc/ld.so.cache 内的资料!)
范例一:假设我的 MySQL 数据库函式库在 /usr/lib/mysql 当中,如何读入 cache ?
[root@linux ~]# vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib/mysql   <==这一行新增的啦!
[root@linux ~]# ldconfig
# 画面上不会显示任何的信息,不要太紧张!正常的!

ldd:::判断某个可执行的 binary 档案含有什么动态函式库
[root@linux ~]# ldd [-vdr] [filename]
参数:
-v :列出所有内容信息;
-d :重新将资料有遗失的 link 点秀出来!
-r :将 ELF 有关的错误内容秀出来!

检验软件正确性:md5sum
[root@linux ~]# md5sum [-bct] filename
[root@linux ~]# md5sum [--status|--warn] --check filename
参数:
-b :使用 binary 的读档方式,预设为 Windows/DOS 档案型态的读取方式;
-c :检验 md5sum 档案指纹;
-t :以文字型态来读取 md5sum 的档案指纹。

RPM 与 SRPM 套件管理员

RPM 安装( install )
[root@linux ~]# rpm -ivh package_name
参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度

RPM 升级与更新
-Uvh     后面接的套件即使没有安装过,则系统将予以直接安装;若后面接的套件有安装过旧版,则系统自动更新至新版;
-Fvh     如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被『升级』!

RPM 查询:RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm 这个目录下的数据库档案
[root@linux ~]# rpm -qa
[root@linux ~]# rpm -q[licdR] 已安装的套件名称
[root@linux ~]# rpm -qf 存在于系统上面的某个档案
[root@linux ~]# rpm -qp[licdR] 未安装的某个文件名称
参数:
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分,一个是查已安装,另一个则是查某个 rpm 档案内容。
查询已安装套件的信息:
-q  :仅查询,后面接的套件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
-qi :列出该套件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该套件所有的档案与目录所在完整文件名 (list);
-qc :列出该套件的所有设定档 (找出在 /etc/ 底下的檔名而已)
-qd :列出该套件的所有说明档 (找出与 man 有关的档案而已)
-qR :列出与该套件有关的相依套件所含的档案 (Required 的意思)
-qf :由后面接的文件名称,找出该档案属于哪一个已安装的套件;
查询某个 RPM 档案内含有的信息:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的套件信息!注意!

RPM 验证与数位签章
验证的功能主要在于提供系统管理员一个有用的管理机制!作用的方式是『 使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有套件档案 』也就是说,当您有数据不小心遗失, 或者是因为您误杀了某个套件的档案,或者是不小心不知道修改到某一个套件的档案内容,就用这个简单的方法来验证一下原本的档案系统吧
[root@linux ~]# rpm -Va
[root@linux ~]# rpm -V  已安装的套件名称
[root@linux ~]# rpm -Vp 某个 RPM 档案的档名
[root@linux ~]# rpm -Vf 在系统上面的某个档案
参数:
-V  :后面加的是套件名称,若该套件所含的档案被更动过,才会列出来;
-Va :列出目前系统上面所有可能被更动过的档案;
-Vp :后面加的是文件名称,列出该套件内可能被更动过的档案;
-Vf :列出某个档案是否被更动过~

RPM 反安装与重建数据库
[root@linux ~]# rpm -e logrotate <==解安装 logrotate 套件
[root@linux ~]# rpm --rebuilddb  <==重建数据库

利用系统默认值安装 SRPM 档案(rpmbuild)
--rebuild:::::『编译』与『打包』
--recompile:::『编译』『打包』并且『安装』

认识系统服务 daemons
[root@linux ~]# service [service name] (start|stop|restart|...)
参数:
service name:亦即是需要启动的服务名称,需与 /etc/init.d/ 对应;
start|...   :亦即是该服务要进行的工作。
范例一:重新启动 crond 这支 daemon :
[root@linux ~]# service crond restart
[root@linux ~]# /etc/init.d/crond restart

设定开机后立即启动服务的方法:

Linux 主机开机:

1.  BIOS 

2.  MBR (boot loader) 

3.  kernel loading 

4.  init program 

5.  initial script (/etc/rc.d/rc.sysinit) 

6.  daemon start (/etc/rc.d/rc[0-6].d/*) 

7.  local setting (/etc/rc.d/rc.local)

整个服务可以被开机就启动的地方有两个, 一个是在 daemon start (/etc/rc.d/rc[0-6].d/*) 那个目录下,该目录下的档案主要以 S 及 K 开头,分别代表开机时启动与关机时关闭的意思,另一个也可以在开机时启动的档案,那就是 /etc/rc.d/rc.local 这个档案

 

•  chkconfig 

[root@linux ~]# chkconfig --list

[root@linux ~]# chkconfig [--add|--del] [service_name]

[root@linux ~]# chkconfig --level [0123456] [service_name] [on|off]

参数:

--list :仅将目前的各项服务状态列出来

--add  :增加一个服务名称给 chkconfig 来管理,该 service_name 必须在  /etc/init.d/ 内!

--del  :删除一个给 chkconfig 管理的服务

--level:设定某个服务在该 level 下启动 (on) 或关闭 (off)

 

•  ntsysv

chkconfig 很多的 distributions 都存在,但是 ntsysv 则是 Red Hat 系统特有的

[root@linux ~]# ntsysv [--level <levels>]

参数:

--level :后面可以接不同的 run level ,例如 ntsysv --level 35

 

认识与分析登录档
常见的几个登录档::
• /var/log/secure:
  记录登入系统存取数据的档案,例如 pop3, ssh, telnet, ftp 等都会记录在此档案中;
• /var/log/wtmp:
  记录登入者的讯息数据,由于本档案已经被编码过,所以必须使用 last 这个指令来取出档案的
  内容;
• /var/log/messages:
  这个档案相当的重要,几乎系统发生的错误讯息(或者是重要的信息)都会记录在这个档案中;
• /var/log/boot.log:
  记录开机或者是一些服务启动的时候,所显示的启动或关闭讯息;
• /var/log/maillog 或 /var/log/mail/*:
  纪录邮件存取或往来( sendmail 与 pop3 )的使用者记录;
• /var/log/cron:
  这个是用来记录 crontab 这个例行性服务的内容的!
• /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba,
  /var/log/procmail.log:
  分别是几个不同的网络服务的记录文件啦!

针对 log 档案来设计的服务有这两支:
• syslogd:
  进行系统或者是网络服务的登录文件记录工作;
• logrotate:
  将旧的数据更名,并且建立新的登录档, 以保持登录档的『新鲜』,并视设定将最旧的登录档删除。
 syslog 针对各种服务与讯息记录在某些档案的设定档就是:/etc/syslog.conf
/etc/syslog.conf 的内容语法是这样的:
服务名称[.=!]讯息等级                     讯息记录的文件名或装置或主机
# 例如底下:
mail.info               /var/log/maillog_info

logrotate 的设定档:::logrotate 主要是针对登录档来进行轮替的动作
• /etc/logrotate.conf
• /etc/logrotate.d/
logrotate.conf 才是主要的参数档案,至于 logrotate.d 是一个目录, 该目录里面的所有档案都会被主动的读入 /etc/logrotate.conf 当中来进行
[root@linux ~]# logrotate [-vf] logfile
参数:
-v  :启动显示模式,会显示 logrotate 运作的过程喔!
-f  :不论是否符合设定文件的数据,强制每个登录档都进行 rotate 的动作!

一些常见指令: last, lastlog, dmesg
[root@linux ~]# dmesg | more      read:/proc/kmsg

•  last
[root@linux ~]# last -n number
[root@linux ~]# last -f filename
参数:
-n  :我们知道 last 会读出这个月的数据,若数据量太大,可使用 -n 来严格要求所以显示的笔数即可。例如 20 笔数据: last -n 20 或 last -20 均可。
-f  :last 预设读出 /var/log/wtmp 这个档案,但是我们可以透过 -f 读取不同的登录文件信息喔!
•  lastlog
[root@linux ~]# lastlog
lastlog 只是读出 /var/log/lastlog 内的信息

Linux 备份策略
哪些 Linux 数据具有备份的意义::
主机系统需要备份的档案:
• /etc/ 整个目录
• /home 整个目录
• /var/spool/mail
• /boot
• /root
• 如果您自行安装过其它的套件,那么 /usr/local/ 或 /opt 也最好备份一下
网络服务的数据库方面:
• 数据设定档案:
  /etc/ 整个目录 /usr/local/ 整个目录
• 系统 www + MySQL:
  WWW 资料:/var/www 整个目录或 /srv/www 整个目录,及系统的使用者家目录
  MySQL : /var/lib/mysql 整个目录
• 其它你在 Linux 主机上面提供的数据库数据文件!
推荐需要备份的目录:
• /boot
• /etc
• /home
• /root
• /usr/local(或者是 /opt 及 /srv 等)
• /var(注:这个目录当中有些暂存目录则可以不备份!)
不需要备份的目录:
• /dev :这个随便你要不要备份
• /proc:这个真的不需要备份啦!
• /mnt :根据版本不同,有的是 /media 如果你没有在这个目录内放置你自己系统的东西,也不需要备份
• /tmp :干嘛存暂存档!不需要备份!

一些常见的装置代号::
• 光驱: /dev/cdrom
• 磁带机: /dev/st0 ( SCSI 界面 ), /dev/ht0 ( IDE 界面 )
• 软盘机: /dev/fd0, /dev/fd1
• 硬盘机: /dev/hd[a-d][1-16] ( IDE 界面 ), /dev/sd[a-p][1-16] ( SCSI 界面 )
• 抽取式 USB 规格硬盘机: /dev/sd[a-p][1-16] (别怀疑,刚好与 SCSI 接口相同!)
• 打印机: /dev/lp[0-2]

完整备份的工具:tar, cpio 与 dump,dd
# 1. 使用 cpio 来备份与还原:[root@linux ~]# find / -print | cpio -covB > /dev/st0  <==备份到磁带机
[root@linux ~]# cpio -iduv < /dev/st0                  <==还原
# 2. 使用 tar 来备份与还原
[root@linux ~]# tar --exclude /proc --exclude /mnt --exclude /tmp \
> -zcvpf host.tgz /
[root@linux ~]# tar -zxvf host.tgz
# 3. 用 dd 来备份一颗完全一模一样的硬盘:
[root@linux ~]# dd if=/dev/hda of=/dev/hdb
# 完整的将 /dev/hda 通通备份到 /dev/hdb 当中去!

部分备份的基础工具:
[root@linux ~]# tar -zpcvf mysql.`date +%Y-%m-%d`.tgz /var/lib/mysql                              
需要备份的数据是每天的 MySQL 数据库时,由于我想让每天的数据都存成不同的档案,而要分别档案的新旧又以日期来分别

Linux 硬件侦测与维护

提供几个简单的指令来将核心所侦测到的硬件叫出来:
• hdparm:观察硬盘的种种信息;
• lspci:检查整个系统 PCI 接口的各项装置!很有用的指令;
• dmesg:观察核心运作过程当中所显示的各项讯息记录;
• iostat:检查整个 CPU 与接口设备的 Input/Output 状态
[root@linux ~]# lspci [-vvn]
参数:
-v  :观察更多的 PCI 装置的信息;
-vv :比 -v 还要更详细的细部信息;
-n  :直接观察 PCI 的 ID 而不是厂商名称

[root@linux ~]# iostat [-c|-d] [-k] [-t] [间隔秒数] [侦测次数]
参数:
-c  :仅显示 CPU 的状态;
-d  :仅显示储存设备的状态,不可与 -c 一起用;
-k  :预设显示的是 block ,这里可以改成 K bytes 的大小来显示;
-t  :显示日期出来;

• 启动 USB 打印机:       要建立 USB 打印机的装置代号得使用 mknod 这个指令才行。 此外, USB 打印机装置的 major,minor 代号分别是 180 0, 所以,建立的方法为:
[root@linux ~]# mkdir -p /dev/usb
[root@linux ~]# mknod /dev/usb/lp0 c 180 0
[root@linux ~]# chown root:lp /dev/usb/lp0
[root@linux ~]# chmod 660 /dev/usb/lp0
[root@linux ~]# ls -l /dev/usb/lp0
crw-rw----  1 root lp 180, 0 Nov   7 16:03 /dev/usb/lp0
[root@linux ~]# echo "testing" > /dev/usb/lp0

Linux 核心编译与管理
核心目录下的次目录信息:
arch    :与硬件平台有关的项目,例如 CPU 的等级等等;
crypto  :核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers :一些硬件的驱动程序,例如显示卡、网络卡、PCI 相关硬件等等;
fs      :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib     :一些函式库;
net     :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound   :与音效有关的各项模块;

编辑核心的 Makefile:
假设你下载之后将整个档案放置到 /root 内,那么首先请解压缩吧!
[root@linux ~]# cd /usr/src
[root@linux src]# tar -jxvf /root/linux-2.6.14.2.tar.bz2
# 这个时候就会产生一个 /usr/src/linux-2.6.14.2 的目录,该目录就是 source code。
# 不过,这个目录下有个 README 的档案务必参考,此外,
# 还有个 Documentation 的目录,也可以仔细的看一看喔!
[root@linux src]# cd linux-2.6.14.2
[root@linux linux-2.6.14.2]# make mrproper
# 这个过程在删除一些以前留下来的 .o 档案。
• make menuconfig:(usually,use this command)
  利用类似选单模式的方式来进行核心参数的挑选,好处是,他是纯文字模式的!不需要启动 X
  Window ,还可以远程登入进行核心参数的挑选!真方便!
• make xconfig:
  利用 X Window 的功能来进行挑选,是图形接口的,很华丽~不过,当然就比较耗系统资源。如
  果你的服务器没有安装 X Window ,那就别提了!
• make gconfig:
  利用 GDK 函式库的图形接口来选择,也是需要 X Window 的支持才行!
关于整个核心的内容选择上面,建议您可以这样思考:
• 『肯定』核心一定要的功能,直接编译进核心内;
• 『可能在未来会用到』的功能,那么尽量编译成为模块;
• 『不知道那个东西要干嘛的,看 help 也看不懂』的话,那么就保留默认值,或者将他编译成为
  模块;
核心的编译与安装:
整个编译的过程真的很简单!作这个动作即可:
1.[root@linux linux-2.6.14.2]# make clean
# 将以前曾经进行过的 *.o 档案删除掉,这样比较不会产生新旧版本的误差!
2.[root@linux linux-2.6.14.2]# make bzImage
# 制作出核心档案!这个重要!过程很长啊!而且那个是大写的 I 喔!如此一来,您就可以发现您的核心已经编译好而且放置在/usr/src/linux-2.6.14.2/arch/i386/boot/bzImage 里面啰~那个就是我们的核心档案
3.[root@linux linux-2.6.14.2]# make modules
# 制作出模块相关的档案!模块已经放在 /lib/modules/2.6.14.2 当中, 如果同一个版本的核心被编译两次以上的话,那么请将 /lib/modules 里面的该版核心先移动掉吧
[root@linux ~]# cd /lib/modules
[root@linux modules]# mv 2.6.14.2 2.6.14.2.old
处理完毕后,开始要安装模块了~安装的方法很简单,直接这样做就好了!
4.[root@linux linux-2.6.14.2]# make modules_install

安装旧版与新版的核心成多重开机系统:
1. 移动新核心到 /boot 里面去:
[root@linux ~]# cp /usr/src/linux-2.6.14.2/arch/i386/boot/bzImage \
> /boot/vmlinuz-2.6.14-2
# 就一般的习惯而言,鸟哥建议您将核心档名设定成以 vmlinuz 为首的名称,
# 比较容易管理啦!
[root@linux ~]# cp /usr/src/linux-2.6.14.2/System.map \
> /boot/System.map-2.6.14-2
2. 修改 grub 设定档
[root@linux ~]# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title VBird linux 2.6.14-2
        root (hd0,0)
        kernel /vmlinuz-2.6.14-2 ro root=/dev/hda2 rhgb quiet vga=788
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,0)
        kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda2 rhgb quiet vga=788
        initrd /initrd-2.6.11-1.1369_FC4.img

单一模块编译:ex:Ethe driver
利用各种方法将他下载后,假设这个档案放置到 /root ,那么直接将他解压缩吧! 之后就可以读一读 INSTALL/README ,然后找一下 Makefile ,就能够编译了。整体流程有点像这样:
1. 将档案解压缩:
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /root/e100-3.4.14.tar.gz
[root@linux src]# cd e100-3.4.14
2. 开始进行编译与安装:
[root@linux e100-3.4.14]# vi README  <==注意查一下该档案内容
[root@linux e100-3.4.14]# cd src
[root@linux src]# make
# 此时您会看到出现如下这一行:
# make[1]: Entering directory `/usr/src/kernels/2.6.13-1.1532_FC4-i686'
# 这代表这个驱动程序在编译时,会去读取的核心原始码 include file
# 的目录所在!有兴趣的朋友,务必查阅一下 Makefile 啦!
3. 开始将该模块移动到核心目录,并且更新模块相依属性!
[root@linux src]# cp e100.ko  /lib/modules/`uname -r`/kernel/drivers/net
[root@linux src]# cd /lib/modules/`uname -r`
[root@linux 2.6.13-1.1532_FC4]# depmod -a
透过这样的动作,我们就可以轻易的将模块编译起来,并且还可以将他直接放置到核心模块目录中, 同时以 depmod 将模块建立相关性,未来就能够利用 modprobe 来直接取用
核心模块管理: lsmod, modinfo, modprobe, insmod, rmmod

相关阅读 更多 +
排行榜 更多 +
发条总动员免费

发条总动员免费

飞行射击 下载
消消乐海滨假日无限风车币正式版

消消乐海滨假日无限风车币正式版

休闲益智 下载
海滨消消乐qq微信应用宝版本

海滨消消乐qq微信应用宝版本

休闲益智 下载