奥门威尼斯网址新手学堂:关于Linux操作系统启动的问题

 

 

1、系统启动需要的文件

1、读取MBR的信息,启动Boot Manager

使用uptime或者top命令,都可以看到一个负载的输出,形如load average: 0.00,
0.03,
0.00,这个负载到底是什么东西呢,man文档里只是一笔带过,没有具体的给出负载的定义。

这个对于新手来说,也是比较困惑的问题,谈谈我对这个问题的认识。

首先拷贝一个下面的模板备用,下面解释一下

/boot/grub/grub.conf 
/etc/inittab /etc/rc.d/rc.sysinit
/etc/rc.d/rc /etc/rc.d/rc?.d
/etc/rc.d/rc.local
/etc/fstab

Windows使用NTLDR作为Boot
Manager,如果您的系统中安装多个版本的Windows,您就需要在NTLDR中选择您要进入的系统。

负载的统计,必然是由内核完成的,因此在内核源码中找答案是再好不过的事情了,找来2.6.21的内核源码,开始探索。

一:rpm包

#!/bin/sh 是说明该脚本调用的shell的类型

grub.conf 文件错误的拯救方式:

Linux通常使用功能强大,配置灵活的GRUB作为Boot
Manager,我们将在启动管理章节中向您介绍它的使用方式。

节选部分源码:

rpm包,分两种,binary rpm 跟 source rpm

#chkconfig: 2345 80 05
其中2345是指明服务的运行等级,80表明是系统启动时要启动第80号服务(服务号可以重复)。05表明是系统关闭要停止的服务号。

grub>root (hd0,0)

2、加载系统内核,启动init进程

//kernel/timer.c

1254 active_tasks = count_active_tasks();1256 CALC_LOAD(avenrun[0], EXP_1, active_tasks);1257 CALC_LOAD(avenrun[1], EXP_5, active_tasks);1258 CALC_LOAD(avenrun[2], EXP_15, active_tasks);

//include/linux/sched.h

 110 #define FSHIFT      11     /* nr of bits of precision */111 #define FIXED_1  (1<112 #define LOAD_FREQ (5*HZ) /* 5 sec intervals */113 #define EXP_1     1884     /* 1/exp(5sec/1min) as fixed-point */114 #define EXP_5     2014     /* 1/exp(5sec/5min) */115 #define EXP_15    2037     /* 1/exp(5sec/15min) */117 #define CALC_LOAD(load,exp,n) \118     load *= exp; \119     load += n*(FIXED_1-exp); \120     load >>= FSHIFT;

binary rpm,就是我们平时用的最多的,已经编译好的,直接安装就可以了。

#descrīption: service 这里的service你可以随便添,但必须有

grub> kernel /kernel2.6.18-8.el5 ro root=LABEL=/
(root=/dev/VolGroup00/LogVol00)
系统其他目录的挂载点此文件根据启动是来确定,或者看/etc/fstab文件
如:/etc /lib /dev 等

init进程是Linux的根进程,所有的系统进程都是它的子进程。

load(t) = ( load(t-1)*exp(i) + n(t)*(2048-exp(i)) ) / 2048

以前学linux的时候,老想通过rpm来安装软件,不过你通过rpm安装,是够简单了,但是你没有什么地方可以设置的,这就像当年一个老师说过的,比如装windows,ms的专家装和我装,没有任何的区别,因为没有任何你可以操作的地方。

奥门威尼斯网址,case $1 in
这里的case是个选择语句。$1是个变量,用于指代下面的start,stop等等。

grub> initrd /initrd-2.6.18-8.el5.img
initrd-2.6.18-8.el5.img是一个gz的压缩包)

3、init进程读取“/etc/inittab”文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以“start”参数启动,并指向一个系统中的程序。

load(t-1)为上次计算出的结果

用rpm安装其实就是这样,好处当然是简单,一切安装默认。省时间,快,

然后就可以在start)下写服务启动要执行的命令了。

grub> boot

通常情况下,“/etc/rcS.d/”目录下的启动脚本首先被执行,然后是“/etc/rcN.d/”目录。例如您设定的运行级别为3,那么它对应的启动目录为“/etc/rc3.d/”。

n(t)为t时刻的活动进程数

二:源码

stop)下写的是服务停止时执行的命令。

2、解开 文件initrd-2.6.18-8.el5.img

4、根据“/etc/rcS.d/”文件夹中对应的脚本启动Xwindow服务器“xorg”

计算方式是累加各个CPU的运行队列中running和uninterruptible的值 再乘以2048

如果我们下载的是源码,那么这里就关系到一个编译。

*)下写其他情况下的执行内容。

首先initrd-2.6.18-8.el5.img 改名为initrd-2.6.18-8.el5.gz 然后运行gunzip
initrd-2.6.18-8.el5.gz
解压缩为initrd-2.6.18-8.el5,用file命令查看initrd-2.6.18-8.el5,为cpio压缩文件,用cpio
-idvm < initrd-2.6.18-8.el5

Xwindow为Linux下的图形用户界面系统。

计算方式如下:

linux下都是用c开发的程序,那么用c开发的程序,如何才能让cpu认识呢,那么就需要编译器,gcc的编译器,把代码转换成机器认识的代码。cpu只认识0和1.

保存成文件名为service,然后拷贝到/etc/init.d/下,然后启动shell,输入

[[email protected]
cpiotest]# ll

5、启动登录管理器,等待用户登录

1946 unsigned long nr_active(void)1947 {1948 unsigned long i, running = 0, uninterruptible = 0;19491950 for_each_online_cpu(i) {1951 running += cpu_rq(i)->nr_running;1952 uninterruptible += cpu_rq(i)->nr_uninterruptible;1953 }19541955 if (unlikely((long)uninterruptible < 0))1956 uninterruptible = 0;19571958 return running + uninterruptible;1959 }1226 static unsigned long count_active_tasks(void)1227 {1228 return nr_active() * FIXED_1;1229 }

当源代码编译成2进制的代码,也就是binary code
,那么你就可以安装到你的机器上了。

chkconfig –add service

total 5188

Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。
您可以在“/etc/rc3.d/”文件夹中找到一个名为“S13gdm”的链接)

exp(1) = 1884
exp(5) = 2014
exp(15) = 2037
exp(i) = 2048 * e^(-1/12/i)

如果我们下载的是binary code
,2进制的代码,这个以mysql为例,不少的文档,mysql是下载binary code
,那么你解压后,其实就可以直接用了。

服务就添加成功了。

drwx—— 2 root root 4096 Nov 5 20:59 bin

如果想Ubuntu在每次启动到command prompt ,可以输入以下指令:

从本质上看负载是完全由过去的一段时间里每个CPU上的活动进程数决定的,但并不是在数值上等同于每秒钟需要进行调度的进程数,具体的计算过程是个比较复杂的过程。

source code 是程序员写的码,

然后你就可以用chkconfig –list查看,在服务列表里就会出现自定义的服务了。

drwx—— 3 root root 4096 Nov 5 20:59 dev

$echo “false” | sudo tee /etc/X11/default-display-manager

average: 0.00, 0.03,
0.00,这个负载到底是什么东西呢,man文档里只是一笔带过,没…

binary code 是机器跑的码。

#!/bin/sh

#chkconfig: 2345 80 05 
#descrīption: service 

case $1 in

start)


;;

stop)


;;

*)


;;

esac

drwx—— 3 root root 4096 Nov 5 20:59 etc

当下次开机时,就会以指令模式启动,如果想变回启动x window,可以输入:

source code 得经过 compile 才能成为 binary code 。

#!/bin/sh 是说明该脚本调用的shell的类型 #chkconfig: 2345 80 05
其中2345是指明服务的运行等级,8…

-rwx—— 1 root root 2431 Nov 1 19:30 init

$echo “/usr/bin/gdm” | sudo tee /etc/X11/default-display-manager

如何分?用 file 命令看一看罗:

-rw——- 1 root root 5267456 Nov 5 20:56 initrd-2.6.18-8.el5

相关文章】

tar -zxvf some.version.tar.gz

drwx—— 2 root root 4096 Nov 5 20:59 lib

  • Linux操作系统程序启动引导过程详细剖析

cd some

drwx—— 2 root root 4096 Nov 1 19:30 proc

file *

lrwxrwxrwx 1 root root 3 Nov 5 20:59 sbin -> bin

  • Linux操作系统启动httpd失败的解决方法

$ file source.file

drwx—— 2 root root 4096 Nov 1 19:30 sys

$ file binary.file

drwx—— 2 root root 4096 Nov 1 19:30 sysroot

  • 使用USB闪存启动并安装Ubuntu Linux系统

RPM 有分两种:binary rpm 跟 source rpm 。

3、系统引导重新安装

Manager
Windows使用NTLDR作为Boot
Manager,如果您的系统中安装多个版本的Windows,您就需要在NTLDR中选择您要进入的系…

前者是编好的 binary ,安装就可用。

grub-install /dev/hda 此安装一般要在linux rescue模式下运行

後者是还没编好的 source ,需 rebuild 之後才能安装。

4、备份磁盘主引导记录

如何安装.src.rpm软件包

[[email protected]
boot]# dd if=/dev/hda of=/boot/grubbak bs=512 count=1

有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法

1+0 records in

方法1:

1+0 records out

  1. #rpm -i your-package.src.rpm

  2. #cd /usr/src/redhat/SPECS

  3. #rpmbuild -bp your-package.specs //一个和你的软件包同名的specs文件

  4. #cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录

  5. #./configure

  6. #make

  7. #make install

512 bytes (512 B) copied, 1e-09 seconds, 512 GB/s

方法2:

出现问题的时候可以用dd命令恢复前466个字节文件 可以用od -x
查看文件会以aa55结束。其实有用的就是前466个字节。

  1. #rpm -i you-package.src.rpm

  2. #cd /usr/src/redhat/SPECS

  3. rpmbuild -bb your-package.specs
    //一个和你的软件包同名的specs文件。这时,在/usr/src/redhat/RPM/i386/
    (根据具体包的不同,也可能是i686,noarch等等)
    在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。

  4. #rpm -i new-package.rpm 即可安装完成。

5、pstree查看系统进程树,init进程是启动进程,是其他进程的父进程。

一:rpm包 rpm包,分两种,binary rpm 跟 source rpm binary
rpm,就是我们平…

6、ntsysv 、setup、system-config-services chkconfig

相关文章】

  • 新手学堂:清除GRUB/修复MBR的小技巧

  • 使用Grub for DOS进行Linux系统硬盘安装

  • 硬盘分区与多操作系统的Grub引导设置问题

/boot/grub/grub.conf
/etc/inittab /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc?.d
/etc/rc.d/rc.local /etc/fstab grub.conf 文件错误的拯救方式…

发表评论

电子邮件地址不会被公开。 必填项已用*标注