当前位置:首页 » 操作系统 » 初始化linux

初始化linux

发布时间: 2024-10-16 06:02:53

linux文件系统怎样初始化步骤

System V init启动过程
概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式.
1) BSD system init
2) System V init
大多数发行套件的Linux使用了与System V init相仿的init也就是Sys V init,它比传统的BSD system init更容易且更加灵活。
System V init的主要思想是定义了不同的"运行级别(runlevel)"。通过配置文件/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时做什么。每个运行级别对应于一个子目录/etc/rc.d/rcX.d。
每个rcX.d目录中都是一些以S或K开头的文件链接。这些链接指向的脚本都 可以接收start和stop参数,S开头的链接会传入start参数,一般是开启一项服务,K会传入stop参数,一般是停止某服务。
以下是一个大致的System V init过程:
(1)init 过程执行的第一个脚本是 /etc/rc.d/rc.sysinit,它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块.
(2)执行缺省的运行级别模式。 这一步的内容主要在/etc/inittab中体现, inittab文件会告诉init进程要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件.
(3)执行/etc/rc.d/rc.local脚本文件。 这也是init过程中执行的最后一个脚本文件,所以用户可以在这个文件中添加一些需要在登录之前执行的命令.
(4)执行/bin/login程序
注意:
System V init只是一种模式,每个系统初始化都有差异,但大体上不会相差太多。如busybox执行的第一个启动脚本就是/etc/init.d/rcS,而且不可以改变,与上面讲的不同。
LFS文件系统初始化示例
inittab文件
由下内容可以看出,最先执行的是/etc/rc.d/init.d/rc文件,给这个文件传入的参数是一个数字,rc会由传入的数字合成rcX.d目录的路径,然后执行其中的所有脚本链接。当然这只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
<em><strong>si::sysinit:/etc/rc.d/init.d/rc sysinit</strong></em> #可以设定初始化脚本
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
...
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
...
# End /etc/inittab

etc目录结构
只是一部分,有删减。
.
├── fstab
├── <em>inittab</em>
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── moles
│ │ ├── mountfs
│ │ ├── mountkernfs
│ │ ├── network
│ │ ├── rc #when boot, run.
│ │ ├── reboot
...
│ ├── rc0.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99halt -> ../init.d/halt
│ ├── rc1.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc2.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc3.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc4.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc5.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc6.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99reboot -> ../init.d/reboot
│ └── rcsysinit.d
│ ├── S00mountkernfs -> ../init.d/mountkernfs
│ ├── S02consolelog -> ../init.d/consolelog
│ ├── S05moles -> ../init.d/moles
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc

network脚本
#!/bin/sh

. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network

case "${1}" in
start)
# Start all network interfaces
for file in ${network_devices}/ifconfig.*
do
interface=${file##*/ifconfig.}

# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi

IN_BOOT=1 ${network_devices}/ifup ${interface}
done
;;

stop)
# Reverse list
FILES=""
for file in ${network_devices}/ifconfig.*
do
FILES="${file} ${FILES}"
done

# Stop all network interfaces
for file in ${FILES}
do
interface=${file##*/ifconfig.}

# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi

IN_BOOT=1 ${network_devices}/ifdown ${interface}
done
;;

restart)
${0} stop
sleep 1
${0} start
;;

*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac

# End /etc/rc.d/init.d/network



Ⅱ Linux内核初始化 sp设置

Linux内核初始化sp设置方法是sp只要指向远大于512偏移处都可以。linux在初始的时候会调用fork系统调用来创建第一个进程,他被成为零号进程,创建后会一直存在并且零号进程是所有进程的父进程。

Linux内核初始化的设置方法

首先看任务的结构体,前面是进程的状态时间片,优先级信号打开文件等等,重要的是最后TSS结构体,TSS段存放的是进程的一些寄存器的状态标识,当CPU运行某个进程时,需要将这个进程的TSS段放入CPU中。

TSS实际就是CPU在运行时产生的一些结果会放到这些寄存器中,当再次调用这个进程时再把TSS段放进CPU中,需要将linux的信息从硬盘中移到内存里,之后进行内存向量等的初始化,在内核初始化的过程中,会手动创建0号进程。

热点内容
linuxdnf 发布:2024-11-24 04:20:00 浏览:873
安卓8的手机怎么升级 发布:2024-11-24 04:19:58 浏览:219
redhat连接ftp 发布:2024-11-24 04:19:51 浏览:930
安卓手机如何快速调出健康码 发布:2024-11-24 04:10:50 浏览:66
sql回车 发布:2024-11-24 03:57:09 浏览:426
传奇怎么改脚本 发布:2024-11-24 03:57:02 浏览:697
ftp上传速度慢 发布:2024-11-24 03:56:07 浏览:217
最新的编程 发布:2024-11-24 03:42:02 浏览:271
中序遍历非递归算法 发布:2024-11-24 03:41:52 浏览:340
服务器如何进入阵列设置 发布:2024-11-24 03:39:43 浏览:375