最全的linux启动项解析

合集下载

linux内核启用参数

linux内核启用参数

linux内核启用参数以Linux内核启用参数为标题的文章一、背景介绍Linux内核是操作系统的核心,负责管理计算机的硬件资源和提供系统调用接口。

在Linux系统中,通过启用不同的内核参数,可以对系统的行为进行调整和优化,以满足特定的需求和提高系统性能。

本文将介绍一些常用的Linux内核启用参数,并分析其作用和使用场景。

二、内核启用参数1. acpi=offACPI(高级配置与电源接口)是一种用于电源管理和设备配置的标准。

将acpi=off参数添加到内核启动参数中可以禁用ACPI功能。

在某些老旧的计算机硬件上,ACPI可能会导致系统崩溃或不稳定,此时可以使用该参数来解决问题。

2. nomodesetnomodeset参数用于禁用内核对显卡驱动的自动加载和切换。

在某些笔记本电脑或显卡驱动不兼容的情况下,系统可能无法正常启动或出现黑屏等问题。

使用nomodeset参数可以强制系统使用基本的VESA显卡驱动,以保证系统的稳定性。

3. noapicAPIC(高级可编程中断控制器)是用于管理中断信号的硬件设备。

在某些计算机上,APIC可能导致中断冲突或系统不稳定的问题。

通过添加noapic参数,可以禁用APIC功能,解决这些问题。

4. irqpollirqpoll参数用于解决某些计算机上的中断问题。

当系统无法正确识别硬件的中断信号时,会导致设备无法正常工作或系统崩溃。

通过添加irqpoll参数,系统会定期轮询中断信号,以确保中断的正确处理,提高系统的稳定性。

5. selinux=0SELinux(安全增强型Linux)是一种强制访问控制机制,用于提高系统的安全性。

但在某些情况下,SELinux可能导致系统的性能下降或应用程序无法正常运行。

通过将selinux=0参数添加到内核启动参数中,可以禁用SELinux功能,提高系统的运行效率。

6. mem=4Gmem参数用于限制系统可用的内存大小。

在某些情况下,系统可能无法正确识别或管理全部的内存容量,导致内存溢出或内存泄漏的问题。

linux 系统启动相关路径

linux 系统启动相关路径

linux 系统启动相关路径
在Linux 系统中,启动相关的路径通常包括以下几个:
1. /etc/init.d/:这个目录存放了系统中的服务脚本文件,这些脚本文件可以通过chkconfig 命令设置服务的运行级别,从而控制服务的启动和停止。

2. /etc/rc.d/:这个目录也存放了系统中的服务脚本文件,与/etc/init.d/ 目录类似,这些脚本文件也可以通过chkconfig 命令设置服务的运行级别。

3. /etc/rc.local/:这个文件是一个特殊的脚本文件,它在系统启动时自动执行,可以用来执行一些在启动过程中需要执行的操作,如挂载磁盘分区、启动网络等。

4. /etc/fstab/:这个文件记录了系统中需要挂载的文件系统信息,包括磁盘分区的设备名称、挂载点、文件系统类型、挂载选项等。

5. /etc/sysconfig/network-scripts/:这个目录存放了系统中网络服务的配置文件,包括网络接口、DNS 服务器、网关等信息。

6. /usr/bin/:这个目录通常包含了一些用户和应用程序使用的工具和脚本文件,例如ssh、scp、wget 等。

7. /usr/local/bin/:这个目录通常存放了用户自定义的命令和脚本文件,例如一些自己编写的工具和脚本文件。

8. /var/run/:这个目录存放了系统中运行的进程的信息,包括进程ID、父进程ID、挂载点等。

9. /var/log/:这个目录存放了系统中的日志文件,包括系统日志、应用程序日志等。

以上是一些常见的Linux 系统启动相关的路径和文件,具体路径和文件可能会因Linux 发行版和版本而有所不同。

如何设置电脑的开机启动项

如何设置电脑的开机启动项

如何设置电脑的开机启动项电脑的开机启动项是指在计算机启动时自动加载的程序、服务或脚本。

通过设置开机启动项,我们可以方便地让一些常用的程序或服务在系统启动时自动运行,提高我们的工作效率。

本文将介绍如何设置电脑的开机启动项,让您轻松掌握这个技巧。

一、Windows系统的开机启动项设置在Windows系统中,设置开机启动项相对简单。

以下是详细步骤:1. 打开任务管理器在Windows系统中,按下Ctrl + Shift + Esc组合键可以快速打开任务管理器。

您也可以通过右键点击任务栏,然后选择“任务管理器”来打开。

2. 切换到“启动”选项卡在任务管理器中,切换到“启动”选项卡。

这个选项卡显示了所有在系统启动时自动加载的程序列表。

3. 启用或禁用程序在“启动”选项卡中,您可以看到各个程序的启用状态。

如果您想让某个程序在系统启动时自动运行,只需将其状态设置为“启用”。

相反,如果您不希望某个程序自动运行,可以将其状态设置为“禁用”。

4. 添加新的启动项目如果您想添加新的启动项目,可以点击“启动”选项卡下方的“打开任务管理器”链接。

这将打开系统的“启动”文件夹,您可以将程序的快捷方式拖放到该文件夹中,以实现启动项的添加。

二、macOS系统的开机启动项设置在macOS系统中,设置开机启动项略有不同。

以下是详细步骤:1. 打开系统偏好设置在macOS系统中,点击屏幕左上角的苹果图标,选择“系统偏好设置”来打开系统设置面板。

2. 进入“用户与群组”设置在系统设置面板中,点击“用户与群组”选项,进入用户与群组的设置界面。

3. 选择当前用户在用户与群组设置界面中,选择您要设置的用户。

通常情况下,这将是您当前登录的用户。

4. 进入“登录项”设置在用户与群组设置界面中,选择“登录项”选项卡。

这个选项卡显示了在用户登录时自动启动的程序列表。

5. 启用或禁用程序在“登录项”选项卡中,您可以看到各个程序的启用状态。

要让某个程序在登录时自动启动,只需勾选该程序前的复选框。

linux内核启用参数

linux内核启用参数

linux内核启用参数Linux内核启用参数是指在Linux系统启动时,可以通过设置参数来改变内核的行为和配置。

这些参数可以通过修改启动脚本或者在引导时通过命令行参数传递给内核。

我们来介绍一些常用的Linux内核启用参数。

1. root:指定根文件系统所在的设备或分区。

在启动时,内核会将根文件系统挂载到这个设备上,成为系统的根目录。

可以使用设备名称(如/dev/sda1)或者UUID(Universally Unique Identifier)来指定。

2. init:指定系统初始化进程的路径。

这个进程是系统启动后的第一个用户空间进程,负责初始化系统环境、启动其他进程等。

一般情况下,它的路径是/bin/init。

3. quiet:禁用内核启动时的冗长输出信息。

默认情况下,内核会将启动过程中的详细信息输出到控制台上,使用quiet参数可以减少这些输出,使启动过程更加简洁。

4. vga:指定启动时的图形模式。

可以通过设置不同的参数值来改变显示分辨率和颜色深度。

例如,vga=791表示使用1024x768分辨率,颜色深度为16位。

5. acpi:启用或禁用ACPI(Advanced Configuration and PowerInterface)功能。

ACPI是一种能够管理电源、温度、风扇等硬件的标准,通过设置acpi参数,可以控制是否启用ACPI功能。

6. noapic:禁用APIC(Advanced Programmable Interrupt Controller)功能。

APIC是用于处理系统中断的硬件设备,通过设置noapic参数,可以禁用APIC功能,解决一些不兼容的硬件问题。

7. nomodeset:禁用内核对图形模式的自动设置。

有些显卡驱动在启动时可能会导致系统冻结或无法启动,通过设置nomodeset参数,可以强制内核使用基本的VGA模式运行。

8. mem:指定系统可用的物理内存大小。

鲁瑞彬 linux内核启动项中英文注释 grub.cfg

鲁瑞彬 linux内核启动项中英文注释 grub.cfg

# #其中加#的均为注释项# DO NOT EDIT THIS FILE# 不能编辑的程序文档(说明此文档涉及启动项,为系统文件,不能随意编译)# It is automatically generated by /usr/sbin/grub-mkconfig using templates#它会自动通过/ usr / sbin / grub-mkconfig使用生成的模板# from /etc/grub.d and settings from /etc/default/grub#从/ etc / grub.d和从/ etc /defaule/grub设置### BEGIN /etc/grub.d/00_header ######从etc/grub.d/00_heade目录下开始if [ -s /boot/grub/grubenv ]; then #配置开机启动项have_grubenv=trueload_envfiset default="6"#默认为6(已经修改,即默认启动项为windowsXP)if [ ${prev_saved_entry} ]; thensaved_entry=${prev_saved_entry}save_env saved_entryprev_saved_entry=save_env prev_saved_entryfiinsmod ext2#除了用作启动的分区外,其他分区格式可在menu底下再添加set root=(hd0,8) #设定root分区search --no-floppy --fs-uuid --set a60b11f3-d477-4121-8914-d1e1e0159851 #设定uuid=****的分区为rootif loadfont /usr/share/grub/unicode.pf2 ; then#设置终端字体,unicode.pf2支持中文显示set gfxmode=640x480#设置分辨率,默认为 640x480insmod gfxterm#插入模块 gfxterm,支持中文显示insmod vbe#插入 vbe 模块if terminal_output gfxterm ; then true ; else#设置 GRUB 2 终端为 gfxterm# For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxtermfifiif [ ${recordfail} = 1 ]; thenset timeout=-1#设置超时时间为1Selseset timeout=10#设置超时时间为10Sfi### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme ###set menu_color_normal=white/blackset menu_color_highlight=black/white#这两行设置Debian 下的菜单颜色### END /etc/grub.d/05_debian_theme #### 10_linux 为自动添加的当前root分区linux引导项### BEGIN /etc/grub.d/10_linux ####菜单项,要包括 menuentry 双引号" " 和大括号 { }才完整,否则不显示菜单menuentry "Ubuntu, Linux 2.6.31-14-generic"{recordfail=1if [ -n ${have_grubenv} ];then save_env recordfail;fiset quiet=1insmod ext2set root=(hd0,8)search --no-floppy --fs-uuid --seta60b11f3-d477-4121-8914-d1e1e0159851#这句与set root=(hd0,7)重复,课删除linux /boot/vmlinuz-2.6.31-14-genericroot=UUID=a60b11f3-d477-4121-8914-d1e1e0159851 ro quiet splashinitrd /boot/initrd.img-2.6.31-14-generic}menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {recordfail=1if [ -n ${have_grubenv} ];then save_envrecordfail;fiinsmod ext2set root=(hd0,8)search --no-floppy --fs-uuid --set a60b11f3-d477-4121-8914-d1e1e0159851linux /boot/vmlinuz-2.6.31-14-genericroot=UUID=a60b11f3-d477-4121-8914-d1e1e0159851 ro single initrd /boot/initrd.img-2.6.31-14-generic}### END /etc/grub.d/10_linux #### 自动添加存在于其他分区的系统引导项### BEGIN /etc/grub.d/20_memtest86+ ### #linux 启动菜单menuentry "Memory test (memtest86+)"{linux16 /boot/memtest86+.bin}menuentry "Memory test (memtest86+, serial console 115200)" {linux16 /boot/memtest86+.binconsole=ttyS0,115200n8}### END /etc/grub.d/20_memtest86+ ####结束标志### BEGIN /etc/grub.d/30_os-prober ####下面为Windows 启动菜单menuentry "Windows XP (on /dev/sda1)"{insmod fatset root=(hd0,1)search --no-floppy --fs-uuid --set 487a-e45ddrivemap -s (hd0) ${root}chainloader +1}### END /etc/grub.d/30_os-prober ###### BEGIN /etc/grub.d/40_custom #### 以下为手动添加的菜单项entries. Simply type the# menu entries you want to add after this comment. Becareful not to change# the 'exec tail' line above.### END /etc/grub.d/40_custom ###。

linux中修改系统启动项的方法

linux中修改系统启动项的方法

linux中修改系统启动项的方法修改Linux系统启动项的方法Linux系统的启动项是决定系统启动时执行哪些程序和服务的配置项,可以根据实际需求来进行修改和调整。

本文将介绍几种常见的修改Linux系统启动项的方法。

一、使用Systemd来管理启动项Systemd是目前大部分Linux发行版所采用的系统初始化和服务管理工具。

通过修改Systemd的配置文件可以实现对启动项的管理。

1. 打开终端,使用root权限登录系统。

2. 进入Systemd的配置目录,一般路径为/etc/systemd/system。

3. 在该目录下,可以看到一些以.service为后缀的文件,这些文件就是与启动项相关的配置文件。

4. 找到对应的启动项配置文件,使用文本编辑器打开进行修改。

可以根据需要添加、删除或修改相关的配置项。

5. 修改完成后,保存文件并退出文本编辑器。

6. 使用命令systemctl daemon-reload重新加载Systemd的配置文件。

7. 使用命令systemctl enable <启动项名称>.service使修改后的启动项生效。

二、使用SysVinit来管理启动项SysVinit是较早期的一种系统初始化和服务管理工具,在一些Linux发行版中仍然被使用。

通过修改SysVinit的配置文件可以实现对启动项的管理。

1. 打开终端,使用root权限登录系统。

2. 进入SysVinit的配置目录,一般路径为/etc/init.d。

3. 在该目录下,可以看到一些以启动项名称命名的脚本文件,这些文件就是与启动项相关的配置文件。

4. 找到对应的启动项配置文件,使用文本编辑器打开进行修改。

可以根据需要添加、删除或修改相关的配置项。

5. 修改完成后,保存文件并退出文本编辑器。

6. 使用命令chkconfig <启动项名称> on使修改后的启动项生效。

三、使用GRUB来管理启动项GRUB是Linux系统中常用的引导加载程序,通过修改GRUB的配置文件可以实现对启动项的管理。

linux init六种模式简介

linux init六种模式简介

init 5——进入图形化登录的多用户模式 这是蓝点2.0安装后默认的启动模式。系统启动后或执行init 5命令后,悦目的蓝绿过渡色背景上就出现了漂亮的登录窗口。 所有帐号名都以图标的方式出现在窗口里等待选择,不必自己输入。不过系统管理员可能不高兴——这样系统里有多少用户岂不是让人一目了然?不过在KDE控制中心中修改就可以解决问题的,我就不多说啦。 如果系统出了问题,只要启动仍然能进入这个界面(说明X服务器没有问题),root帐号也可以从这里进入Linux的安全模式,就是在左下角的选择框把 模式从kde换为save failed就行了。当然进入的界面绝对没有美观可言,但用于修复X窗口管理器或应用程序的问题是必不可少的。

如果你了解/etc/inittab文件,就千万不要把0设为缺省登录模式,否则你的Linux的运行就只能两点一线了——开机←→停机,或者是开机←→重启的无限循环。 其他的4种模式实际上是由操作系统确定的。如果你愿意修改Linux的源代码,你也可以定义这4种(甚至6种)模式的实际功能。其实只要知道Linux发布厂商的约定就足够了,下面我们就以蓝点2.0为例,看看init的常用约定吧——
init 2——进入无网络服务的多用户模式 如果你的计算机根本没有连网,这个模式就跟普通模式一样了。否则的话别人就不能通过网络www、ftp或telnet登录你的计算机了,但对与ping 命令你的计算机还是会作出反应的。如果连ping你也拒绝访问,那么就不如直接把网线拔了! 如果你的计算机作为网络服务器,这一模式就挺有用了。譬如你要修整系统或更新网站内容,就可以把计算机调到这一模式,然后放心的进行你的工作,等工作完成 后再切换到模式3或5就行了。但注意如果原来已经有用户ftp或telnet进入了你的系统,用init 2 是不能中断他和你的连接的,小心让别人在这个时候黑你一把哦!——执行init 2前先用who命令检查一下吧。 这一模式下,在本机上的使用基本不变。你仍然可以访问网络,上Internet,ftp或telnet到网络中的任何一台服务器。只是你的计算机在网络中不给其他机器提供服务而已。计算机从第3运行级转入这一模式时你会看到一系列网络服务被停止。

1)reboot 重启(2)init 6 重启(3)logo

1)reboot 重启(2)init 6 重启(3)logo

1)reboot 重启(2)init 6 重启(3)logo1.1一般在linux中,我们重启会用到这三个命令:1.2 reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。

因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。

所以使用reboot命令的场合主要是在单用户模式。

'reboot'并不执行这些过程,reboot更是一个kernel级别的命令,不对应用使用shutdown脚本。

1.3 init是所有进程的祖先他是Linux系统操作中不可缺少的程序之一。

它的进程号始终为1所以发送TERM信号给init 会终止所有的用户进程守护进程等。

shutdown 就是使用这种机制。

init定义了7个运行级别(runlevel)init 0为关机init 6为重启。

’init 6‘基于一系列/etc/inittab文件,并且每个应用都会有一个相应shutdown脚本。

'init 6' 调用一系列shutdown脚本(/etc/rc0.d/K*)来使系统正常关机;1.4 shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。

该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。

精确时间的格式是hh:mm,表示小时和分钟,时间段由+ 和分钟数表示。

系统执行该命令后会自动进行数据同步的工作。

该命令的一般格式: shutdown [选项] [时间] [警告信息]命令中各选项的含义为:- k 并不真正关机而只是发出警告信息给所有用户- r 关机后立即重新启动- h 关机后不重新启动- f 快速关机重启动时跳过fsck- n 快速关机不经过init 程序- c 取消一个已经运行的shutdown请注意,该命令只能由超级用户使用。

安装linux系统后修改默认开机启动项

安装linux系统后修改默认开机启动项

安装linux系统后修改默认开机启动项在安装linux系统后,开机的时候默认启动项变成了linux,这让许多经常使⽤windows系统的同学感到抓狂:按下电源键后,打开⼿机,刷刷微博,看看朋友圈,再抬头⼀看,⾯对输⼊密码界⾯,只好再次选择重启。

那么如何修改默认的开机启动项呢?我们需要做的是修改GRUB这个东东。

步骤(以Ubuntu系统为例):1.进⼊系统,开机时注意观察你的windows系统在开机启动项中是第⼏项,当系统开启后打开终端。

(⽅法⾃⾏百度)2.在终端中输⼊“sudo gedit /etc/default/grub”,打开grub这个档案。

3.在⽂档⾥找到“GRUB_DEFAULT=0”这⼀⾏(也有可能不是0),如果开机时windows系统是第n项,则把这个0改为n-1(因为序号是从0开始的)。

然后保存退出。

什么?没法保存?看看步骤2的时候是不是没有输⼊sudo。

4.在终端中继续输⼊“sudo update-grub”,回车,等待若⼲秒。

5。

重启看看⾏不⾏。

注释:⼀.开机流程(摘⾃鸟哥)1. 加载 BIOS 的硬件信息与进⾏⾃我测试,并依据设定取得第⼀个可开机的装置;2. 读取并执⾏第⼀个开机装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);(我们要修改的地⽅)3. 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;4. 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,⽽ init 会取得 run-level 信息;5. init 执⾏ /etc/rc.d/rc.sysinit 档案来准备软件执⾏的作业环境 (如⽹络、时区等);6. init 执⾏ run-level 的各个服务之启动(script ⽅式);7. init 执⾏ /etc/rc.d/rc.local 档案;8. init 执⾏终端机仿真程序 mingetty 来启动 login 程序,最后就等待⽤户登⼊啦;⼆.sudo的⽤法sudo 执⾏命令的流程是当前⽤户切换到root(或其它指定切换到的⽤户),然后以root(或其它指定的切换到的⽤户)⾝份执⾏命令,执⾏完成后,直接退回到当前⽤户;⽽这些的前提是要通过sudo的配置⽂件/etc/sudoers来进⾏授权;当我们没有权限进⾏⼀些动作时,可以尝试使⽤ sudo 命令。

Linux系统服务自动启动脚本

Linux系统服务自动启动脚本

Linux系统服务自动启动脚本Linux系统是一种广泛应用的操作系统,在服务器和个人电脑上都得到了广泛的应用。

为了保证系统服务的及时启动,我们需要使用自动启动脚本来管理各种服务。

本文将介绍Linux系统服务自动启动脚本的使用方法和注意事项。

一、什么是Linux系统服务自动启动脚本?Linux系统服务自动启动脚本是一种用于管理系统服务的脚本文件。

它可以在系统启动时自动运行,并根据预设的配置文件,启动、停止或重启指定的服务。

通过自动启动脚本,我们可以实现系统服务的自动管理,提高系统的稳定性和可靠性。

二、自动启动脚本的编写1. 脚本文件的位置一般情况下,自动启动脚本文件存放在/etc/init.d/目录下。

这是Linux系统中默认的脚本存放位置。

你也可以根据自己的需要将脚本文件存放在其他位置,但要确保系统能够找到并正确执行脚本。

2. 脚本内容的编写自动启动脚本的编写需要注意以下几点:- 根据系统要求,脚本文件必须以#!/bin/bash开头,以告诉系统使用bash作为解释器执行脚本。

- 在脚本的最开始,应该加上适当的注释,说明脚本的用途和功能。

- 脚本中应该包含启动、停止和重启服务的代码。

可以使用特定的命令如systemctl、service等来实现。

- 脚本应该提供start、stop和restart等选项,以便用户在执行脚本时可以选择不同的操作。

- 在脚本的结尾处,应该添加exit命令来结束脚本的执行。

三、自动启动脚本的使用方法使用自动启动脚本可以提高系统服务管理的效率,下面是使用自动启动脚本的基本步骤:1. 编写脚本文件按照前面所述的规范编写自动启动脚本文件,并保存在适当的位置。

2. 设置脚本文件的执行权限使用chmod命令给脚本文件添加执行权限,例如:```chmod +x /etc/init.d/myscript```3. 添加脚本到自启动列表使用chkconfig命令将脚本添加到系统的自启动列表中,例如:```chkconfig --add myscript```4. 启动服务使用service命令启动服务,例如:```service myscript start```至此,你的自动启动脚本已经完成了配置和启动。

linux启动级别的含义(init0-6)

linux启动级别的含义(init0-6)
这篇文章主要给大家介绍了关于shell高级学习之正则表达式的相关资料文中通过示例代码介绍的非常详细对大家学习或者使用shell具有一定的参考学习价值需要的朋友们下面来一起学习学习吧
linux启动级别的含义( init0-6)
0:停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system 3:完全多用户 5:图形化 4:安全模式 6:重启
其实,可以通过查看/etc/rc.d/中的rc*.d的文件来对比理解,不同的目录中包含的命令是不同的
init 0,对应的系统会运行,/etc/rc.d/rc0.d里指定的程序
S00killall、 S01halt
这两个都表示为终止进程

linux启动顺序讲解

linux启动顺序讲解

linux启动顺序讲解⼀、简单介绍RHEL开机时的先后顺序BIOS —> MBR —> Kernel —> init1、当电脑⼀打开电源时电脑就会进⼊BIOS(BIOS的⼯作主要是检测⼀些硬件设备);2、检测完后会进⼊MBR也就是boot loader(MBR位于硬盘的第⼀个扇区总共512bytes,其中前446bytes⾥⾯的编码是在选择引导分区也就是决定要由哪个分区来引导);3、载⼊系统的Kernel(核⼼),在Kernel⾥主要是载⼊电脑设备的驱动程序,以便可以控制电脑上的设备,并且以只读⽅式来挂载根⽬录,也就是⼀开始只能读取到根⽬录所对应的那个分区,所以/etc、/bin、/sbin、/dev、/lib这五个⽬录必须同根⽬录在⼀个分区中;4、最后启动init这个程序,所以init这个程序的进程编号为1,是Linux中第⼀个执⾏的程序;init这个程序会根据Run level来执⾏以下这些程序:·/etc/rc.d/rc.sysinit;·/etc/rc.d/rc 和etc/rc.d/rc?.d/·/etc/rc.d/rc.local·如果有适当的图形界⾯管理程序⼆、BIOS初始化时主要的三个任务BIOS(B asic I nput/O utput S ystem)1、电脑周边设备的检测,加电⾃检POST (Power on self test);2、BIOS会选择要由哪⼀个设备来开机,例如:软盘启动、光盘启动、⽹络启动、最常见的从硬盘启动;3、选择好由哪个设备开机后,就开始读取这个设备的MBR 引导扇区;三、介绍Boot Loader中的主要⼯作1、Boot Loader可以安装在两个地⽅:·安装在硬盘的MBR中;·当有时候MBR中被其他开机管理程序占⽤就可以将Boot Loader 安装在硬盘中的其中⼀个分区的引导扇区上,;2、Boot Loader的程序码分为两个阶段:(1)Boot Loader第⼀阶段的程序码⾮常⼩,只有446bytes,可以存⼊在MBR或是某⼀个分区的引导扇区⾥,(2)Boot Loader第⼀阶段的程序码是从boot 分区来载⼊的,就是说Boot Loader 第⼆阶段程序码存放在/boot 这个分区中;3、下⾯来看三个Boot Loader 的开机流程范例,如在⼀块硬盘中安装了两个系统分别为:windows 2003 和Red hat linux当电脑开机后,会先载⼊MBR通过第⼀阶段程序码来载⼊第⼆阶段程序码,进⼊GRUB开机菜单这⾥选择哪个系统就会载⼊相应的核⼼;四、介绍GRUB和grub.conf 这个配置⽂件的内容其实从MBR载⼊Boot Loader开始,载⼊Kernel,载⼊init这些程序之间都是由GRUB这个多重开机管理程序所负责的。

Linux终端命令系统服务管理与启动项

Linux终端命令系统服务管理与启动项

Linux终端命令系统服务管理与启动项Linux系统是一个非常强大和灵活的操作系统,而它的终端命令是管理和控制系统的重要工具之一。

在这篇文章中,我们将重点介绍Linux终端命令中的系统服务管理与启动项。

一、系统服务管理在Linux系统中,有许多重要的系统服务需要管理和监控,例如网络服务、邮件服务、数据库服务等等。

下面我们将介绍几个重要的终端命令来操作和管理这些服务。

1. systemctl命令systemctl命令是Linux系统中管理和控制系统服务的主要命令之一。

它可以启动、停止、重启和查看系统服务的状态。

例如,要启动Apache服务器,我们可以使用以下命令:```sudo systemctl start apache2```要停止服务,我们可以使用以下命令:```sudo systemctl stop apache2```通过使用systemctl命令,你可以方便地管理和控制各种系统服务。

2. service命令除了systemctl命令外,service命令也是管理系统服务的重要工具。

它可以像systemctl一样启动、停止和重启服务。

例如,要启动MySQL 数据库服务,我们可以使用以下命令:```sudo service mysql start```要停止服务,我们可以使用以下命令:```sudo service mysql stop```service命令在一些旧版本的Linux系统上仍然被广泛使用,因此熟悉这个命令也是很有用的。

3. journalctl命令有时我们需要查看系统服务的日志来排查问题或者获取更多的信息。

这时,journalctl命令就能派上用场了。

它可以用来查看系统服务的日志记录。

例如,要查看Apache服务器的日志,我们可以使用以下命令:```sudo journalctl -u apache2```通过使用journalctl命令,你可以方便地查看和分析系统服务的日志信息。

linux boot 参数

linux boot 参数

linux boot 参数Linux的启动参数(boot parameters)在系统的启动过程中起着关键的作用。

这些参数可以告诉Linux内核如何启动,以及启动后应该如何配置系统。

它们可以在GRUB、LILO或其他引导加载器中进行设置。

以下是一些常见的Linux启动参数及其作用:1.root=:指定根文件系统的设备。

例如,root=/dev/sda1表示根文件系统位于/dev/sda1分区。

2.initrd=或initramfs=:指定初始RAM磁盘或初始RAM文件系统的路径。

这通常用于在启动过程中加载必要的驱动程序或其他模块。

3.ro:以只读模式挂载根文件系统。

这可以防止对文件系统的意外写入。

4.rw:以读写模式挂载根文件系统。

5.quiet或silent:减少启动过程中的输出,使启动过程更加简洁。

6.splash:在某些发行版中,使用启动画面代替文本输出。

7.nomodeset:禁用内核模式设置,通常用于解决显卡问题。

8.vga=:设置VGA模式。

例如,vga=773设置了一个特定的分辨率和颜色深度。

9.single或1:启动到单用户模式,绕过所有系统服务并直接登录为root。

10.rescue或s:启动到救援模式,这通常用于修复损坏的系统。

11.debug:启用内核调试。

12.initrd=或initramfs=:指定initrd(初始RAM磁盘)的路径,这是一个临时文件系统,包含内核启动所需的驱动程序和工具。

13.rd.参数:用于传递参数给initrd。

例如,rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap告诉initrd使用LVM逻辑卷作为根和交换分区。

14.rhgb:在Red Hat系的发行版中,启用图形启动界面。

15.quiet:减少启动过程中的输出。

请注意,这些参数可能因Linux发行版和版本的不同而有所变化。

因此,在实际使用时,最好参考特定发行版的文档或手册以获取准确的信息。

linux操作系统讲解PPT课件

linux操作系统讲解PPT课件

安装其他软件:可以根据 需要安装其他软件或工具, 以完成Linux操作系统的网络设置
基本配置:包括用户名、主机名、域名等
网络设置:包括IP地址、网关、DNS等
Linux操作系统的软件包管理和升级
常 见 的 软 件 包 管 理 工 具 : apt 、 yu m 、dnf 等 软件包查询:apt-cache search <关键词>、yum list <软件包名>等 软件包安装:apt-get install <软件包名>、yum install <软件包名>等 软 件 包 升 级 :apt- get update & & apt- get upg rade、 yum update等
Telnet: 一种 用 于网络远程登录 的标准协议,常 用于测试网络连 接
Linux操作系统的多媒体播放器和图形界面
多媒体播放器:VLC、 MPlayer等
图形界面:GNOME、KDE 等
Linux操作系统的安 全性和稳定性
Linux操作系统的用户管理和权限控制
用 户 管 理 : L inux 操 作 系 统 提 供 了 用 户 管 理 功 能 , 可 以 创 建 、 删 除 、 修 改 用 户 账 户 和 组 账 户 , 对用户和组进行权限管理。
Linux操作系统的安 装和配置
Linux操作系统的安装步骤和注意事项
准备安装介质:选择合 适的Linux发行版,并准
备安装光盘或U盘。
启动计算机:将安装介质 插入计算机,重启并进入 BIOS设置,选择从安装介
质启动。
选择安装选项:在安装过 程中,选择合适的安装选 项,如语言、时区、键盘
布局等。

简要分析linux系统的启动过程

简要分析linux系统的启动过程

简要分析linux系统的启动过程接触linux系统运维已经好⼏年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:⼀般来说,所有的操作系统的启动流程基本就是:总的来说,linux系统启动流程可以简单总结为以下⼏步:1)开机BIOS⾃检,加载硬盘。

2)读取MBR,进⾏MBR引导。

3)grub引导菜单(Boot Loader)。

4)加载内核kernel。

5)启动init进程,依据inittab⽂件设定运⾏级别6)init进程,执⾏rc.sysinit⽂件。

7)启动内核模块,执⾏不同级别的脚本程序。

8)执⾏/etc/rc.d/rc.local9)启动mingetty,进⼊系统登陆界⾯。

linux系统安装时,如果要想设置开启启动项,可以:开机到BIOS提醒界⾯,按键F11(Dell服务器的做法)进⼊BIOS设置BOOT MENU,继⽽设置启动项:硬盘HD启动,光盘CD/DVD启动,还是U盘USB启动。

下⾯就linux操作系统的启动过程做⼀详细解析记录:加载内核操作系统接管硬件以后,⾸先读⼊ /boot ⽬录下的内核⽂件。

[root@bastion-IDC ~]# ll /boot/total 21668-rw-r--r--. 1 root root 105195 Nov 22 2013 config-2.6.32-431.el6.x86_64drwxr-xr-x. 3 root root 1024 Aug 22 16:31 efidrwxr-xr-x. 2 root root 1024 Aug 22 16:32 grub-rw-------. 1 root root 15217153 Aug 22 16:32 initramfs-2.6.32-431.el6.x86_64.imgdrwx------. 2 root root 12288 Aug 22 16:24 lost+found-rw-r--r--. 1 root root 193758 Nov 22 2013 symvers-2.6.32-431.el6.x86_64.gz-rw-r--r--. 1 root root 2518236 Nov 22 2013 System.map-2.6.32-431.el6.x86_64-rwxr-xr-x. 1 root root 4128368 Nov 22 2013 vmlinuz-2.6.32-431.el6.x86_64启动初始化进程内核⽂件加载以后,就开始运⾏第⼀个程序 /sbin/init,它的作⽤是初始化系统环境。

linux -j参数-概述说明以及解释

linux -j参数-概述说明以及解释

linux -j参数-概述说明以及解释1.引言1.1 概述Linux操作系统是一种自由和开放源代码的操作系统,广泛应用于服务器、超级计算机和嵌入式系统等领域。

它以其高度可定制、强大的安全性和稳定性而闻名。

在Linux系统中,我们经常会使用到各种命令来完成不同的任务。

其中,-j参数是一项常见的命令参数,用于指定并行处理的线程数量。

简单来说,-j参数可以告诉Linux系统在执行多线程任务时使用的线程数量。

通过将任务分成多个并行的子任务,每个子任务都由一个单独的线程处理,可以提高任务的执行效率和速度。

在本文中,我们将深入了解Linux中的-j参数。

首先,我们将讨论-j 参数的详细用途,它可以在哪些情况下使用,并解释它在不同场景中的作用与意义。

接着,我们将介绍一些常见的应用场景,展示-j参数在不同命令中的具体应用案例。

通过了解和掌握-j参数的使用方法和技巧,我们可以更好地利用Linux 系统的并行处理能力,提高任务的处理效率。

无论是在日常的系统管理工作中,还是在开发和运维中,掌握-j参数的使用都能帮助我们更好地完成各种任务。

在本文的结论部分,我们将对-j参数进行总结,并评价其在Linux系统中的实际价值和应用意义。

同时,我们还将展望-j参数的未来发展方向,探讨其在日后可能的新应用领域。

总之,本文将全面介绍Linux中的-j参数,包括其概述、用途、常见应用场景和评价。

希望通过阅读本文,读者能够对-j参数有一个全面和深入的了解,并能够充分利用它在Linux系统中的优势。

1.2 文章结构本文将以Linux中的-j参数为主题,对其中的概念、用途以及常见应用场景进行探讨。

为了更好地组织文章内容,本文将按照以下结构展开论述:1. 引言1.1 概述1.2 文章结构(本节)1.3 目的2. 正文2.1 理解Linux中的-j参数2.2 -j参数的用途2.3 -j参数的常见应用场景3. 结论3.1 总结3.2 对-j参数的评价3.3 展望在引言部分,我们将对整篇文章进行开场介绍,概述Linux系统中的-j参数以及文章的目的。

linux2.6内核启动分析--李枝果(不看是你的损失^_^)

linux2.6内核启动分析--李枝果(不看是你的损失^_^)

S h e n z h e n F a. lizhiguo0532@ 2010-6-041Linux 2.6lizhiguo0532@ 2010-6-04----------------------------------------------------------------------------------------------------------------------/sz_farsight---------------------------------------------------------------------------------------------------------------------- ^_^SDMakefile uImageMakefile uImage *.o1. arm-linux-gnu-ld arch/arm/kernel/vmlinux.ldsarch/arm/kernel/head.o arch/arm/kernel/init_task.oS h e nz h e n F a r silizhiguo0532@ 2010-6-042 vmlinux.lds2. 3. 4. piggy.gz5.S h e ns i gh t In c . lizhiguo0532@ 2010-6-043piggy.gz piggy.o ld6. arm-linux-gnu-ld arch/arm/boot/compressed/piggy.o27 *(.piggydata) piggydata piggydata Image piggy.gzvmlinux.ldsS h e n zc . lizhiguo0532@ 2010-6-0447.8.uboot arch/arm/boot/compressed/piggy.gz- arch/arm/boot/compressed/piggy.o 0xc0008000 (arch/arm/boot/compressed/vmlinux- arch/arm/boot/zImage) 0x0 0x00000000 0x0 0x30008000 Image vmlinux 0xc0008000S h e n z h e nF a r s i g h t In c . lizhiguo0532@ 2010-6-0450x0 arch/arm/boot/compressed/head.s misc.c 1. uboot thekernelr0—>r8,r1- r7.2. LC00x0 0x300080003. 0x00x30008000 CONFIG_ZBOOT_ROM r2, r3 r5, r6, ip, sp r6 ip got4. clear bss5. cache 4K.align.section ".stack", "w"user_stack: .space 4096S h eh tI nc.lizhiguo0532@ 2010-6-0466.Zreladdr vmlinuxarch/arm/mach-s3c2410/Makefile.bootarch/arm/boot/MakefileS h e nz h e n F a r si gh t I n c .lizhiguo0532@ 2010-6-047 arch/arm/boot/compressed/Makefile ZRELADDR vmlinux ImageuImage load zImage load uImage zImage uboot zImage load entryuImage zImage mkimage uImage -a data load -e entry arch/arm/boot/Makefile0x30008000S h e n z h e n F a r s i g h t In c . lizhiguo0532@ 2010-6-048 r4 Image 0x30008000 r5 zImage r2 zImager4>=r2, r4=0x30800000 Image r2=0x30008000+(zImage+bss size)+stack size 4K + malloc size 64K zImage Image 0x30800000r4+4M<r5, r5=0x30800000 r4=30008000 zImage r4r4+4M>r5, r4=r5=0x30008000 0x30008000@ r0 = malloc end or decompress space,@ r1 = sp end or malloc begin,@ r2 = malloc end ,@ r3 = architecture IDdecompress_kernelmalloc 0x300080007. decompress_kernel in arch/arm/boot/compressed/misc.cS h e nn F a r s i gh t I n c .lizhiguo0532@ 2010-6-049Gunzip() lib/inflate.c gunzip 8. 128add r0, r0, #127bic r0, r0, #127 @ align the kernel length9 head.S 0x30008000R1 128 r2 reloc_start r3 reloc_end head.Scache_clean_flush cache cache reloc_startzImage gdb9. reloc_startS h e n z h enF a r s i g h t I n c . lizhiguo0532@ 2010-6-0410* r0 = decompressed kernel length * r1-r3 = unused* r4 = kernel execution address* r5 = decompressed kernel start* r6 = processor ID* r7 = architecture ID* r8-r14 = unused0x30008000 cache r0 r1 pc 0x30008000 /node/3VMLINUX arch/arm/kernel/head.S init/Main.c 0x0 0xC0008000Mmu I Cache D Cache r0=0 r1=architecture ID arch/arm/kernel/vmlinux.lds stext1. SVC FIR IRQ2. __lookup_processor_type cp15 cpuid .init proc_info_list cpu3. __lookup_machine_type uboot machinearchitecture number .init machine number machine_descS h e n z h n F a r si g h t I n c .lizhiguo0532@ 2010-6-0411 ……………………arch-arm-kernel-head.Sarch-arm-kernel-head/node/4start_kernel in init/Main.c1. printk(linux_banner)2. a. setup_processor()proc_info_list list cpu_name cpuname idproc_arch system_utsname= list->arch_name armv4telf_platform= list->elf_name v4 elf_hwcap = list->elf_hwcap;/* 1|2|4 */ cpu_proc_init()Cpu-single.h#define cpu_proc_init __cpu_fn(CPU_NAME,_proc_init)#define __cpu_fn(name,x) __catify_fn(name,x)#define __catify_fn(name,x) name##xCPU_NAME = cpu_arm920cpu_proc_init(); cpu_arm920_proc_init()proc_arm920.S b. mdesc = setup_machine(machine_arch_type).init machine_desclist list-namec. machine_name = mdesc->name machine_named. tags = phys_to_virt(mdesc->boot_params)uboot 0x300001000xc0000100e.if (tags->hdr.tag == ATAG_CORE) {if (meminfo.nr_banks != 0) /* meminfo defined in setup.c */squash_mem_tags(tags);parse_tags(tags);}static struct meminfo meminfo __initdata = { 0, };in steup.cparse_tags(tags) in steup.cS h e n z h e n F a r s i g h t In clizhiguo0532@ 2010-6-0412Steup_arch()- parse_tags()- parse_tag(), all function in steup.c __tagtable_begin, __tagtable_end arch/arm/kernel/vmlinux.ldsparse_tag()parseIgnoring unrecognised tag 0x%08x\n ubootf. struct mm_struct init_mm = INIT_MM(init_mm);init_mm.start_code = (unsigned long) &_text;init_mm.end_code = (unsigned long) &_etext;init_mm.end_data = (unsigned long) &_edata;init_mm.brk = (unsigned long) &_end;_text, _etext, _edata, _end arch/arm/kernel/vmlinux.ldsg. parse_cmdline(cmdline_p, from) uboot commond_linefrom command_linecommand_linestart_kernerl mem initrdstart_kernel()->parse_option() mem initrdcommand_line *cmdline_pstart_kernelmem initrdh. paging_init(&meminfo, mdesc);/**/ in arch/arm/mm/init.cmemtable_init(mi)/bbstcon,board,Embedded,reid,1165977462.html0xffff0000mdesc->map_io() smdk2410arch/arm/mach-s3c2410/mach-smdk2410.c Linux , smdk2410_map_io() 1 iotable_init(s3c_iodesc, GPIO,IRQ,MEMCTRL,UARTS h e nz h e n F a r s i gh t In c . lizhiguo0532@ 2010-6-0413 2 (cpu->map_io)(mach_desc, size) LCD, map.h S3C2410_ADDR(x) ((void __iomem *)0xF0000000 + (x)) IO 0xF0000000 1M 1. GPIO IRQ UART MEMCRTL WATCHDOG USB 2. kmalloc 0x30008000 phys_to_virt virt_to_ phys 3. mmu TTB 0x30004000 16K mmu arch/arm/kernel/head.S 4M mmu sector Uarth.request_standard_resources(&meminfo, mdesc) memory kernel_text kernel_data video_ram new new resource NULLi. cpu_init() in arch/arm/kernel/setup.ccpu cpu id cache IRQ ABT UND stack 12 svci. __mach_desc_SMDK2410_typeinit_arch_irq init_machine system_timer3. sched_init()init_idle (current, smp_processor_id()) idle4. preempt_disable()5. (zone) build_all_zonelists()6. printk(KERN_NOTICE "Kernel command line: %s\n", saved_command_line); uboot command_line setup_arch7. parse_early_param()S h e n z h e n F a r s i g h t In c . lizhiguo0532@ 2010-6-0414 __setup setup_arch &command_line command_linesaved_command_line8. parse_args("Booting kernel", command_line, __start___param,__stop___param - __start___param,&unknown_bootoption);parse_early_param(); setup paramcommand_line setup_arch__start___param param System.map__stop___param - __start___paramunknown_bootoption paramparse_one()parse_one() param __setupLinux bootargs9. sort_main_extable()__start___ex_table __stop___ex_table *(__ex_table) struct exception_table_entry insn10. setup_arch- paging_init- memtable_initinit_maps, alloc_bootmem_low_pages ARM 0xFFFF0000 0xFFFF0000trap_init .Lcvectors 0xffff0000 __stubs_start __stubs_end 0xffff0200 0xffff0500 0xffff0000 cache DOMAIN_USER DOMAIN_MANAGER DOMAIN_CLIENT11.rcu_init() cpu struct rcu_dataper_cpu_rcu_data per_cpu_rcu_bh_data.12.init_IRQstruct irqdesc irq_desc[NR_IRQS], irq_desc[n] bad_irq_desc pendS h e nz h e n F a r s i gh t I n c . lizhiguo0532@ 2010-6-0415 init_arch_irq setup_arch smdk2410_init_irq in mach-smdk2410.cs3c24xx_init_irq do_level_IRQ do_edge_IRQ __do_irquart ADC13.pidhash_init()pid_hash hash pidhash_shift pidhash_shift min 12 hash hash pid_hash[n](n=1~3), hash hash struct hlist_head first NULL14.init_timers()struct tvec_t_base_s per_cpu_tvec_bases, per_cpu_tvec_bases lock15.softirq_initS h e n z h e n F a r s i gh t I n c .lizhiguo0532@ 2010-6-041616.time_init() timersetup_archtime_init if s3c2410_timer_init timer417.console_initprintk log_bufa. tty_register_ldisc TTYtty ttyttytty ttyS h e n z h e n F ar s i g h t I n c . lizhiguo0532@ 2010-6-0417 ppp tty tty b. s3c24xx_serial_initconsole /*vmlinux.lds.S__con_initcall_start = .;*(.con_initcall.init)__con_initcall_end = .;con_initcall.initfn .con_initcall.init :#define console_initcall(fn) \static initcall_t __initcall_##fn \__attribute_used____attribute__((__section__(".con_initcall.init")))=fn*///:console_initcall(s3c24xx_serial_initconsole);//:start_kernel->console_init->s3c24xx_serial_initconsolecall = __con_initcall_start; /* console_initcall */while (call < __con_initcall_end) {(*call)();call++;}18.profile_init()/* *///profile// bootargs profile/*profile menuconfig profiling support1. profileprofile profile=1 profile=schedule 12. /proc/profile readprofilereadprofile -m /proc/kallsyms | sort -nr > ~/cur_profile.log,readprofile -r -m /proc/kallsyms |sort -nr,readprofile -r && sleep 1 && readprofile -m /proc/kallsymsS h e n z h e n F a r s i g h t In c . lizhiguo0532@ 2010-6-0418|sort -nr >~/cur_profile.log 3. /proc/profile profile profile=?profile=schedule ? schedule schedule*/19.local_irq_enable()IRQ20.mem_init()alloc_bootmem(),alloc_bootmem_low(),alloc_bootmem_pages()21.kmem_cache_init()slab22. numa_policy_init();if (late_time_init)late_time_init();calibrate_delay();// BogMIPS23. pidmap_init();pgtable_cache_init();prio_tree_init();/*index_bits_to_maxindex[BITS_PER_LONG]index_bits_to_maxindex[n] -1index_bits_to_maxindex[BITS_PER_LONG-1] ~0UL*/24 anon_vma_init();/*kmem_cache_creat() struct anon_vmakmem_cache_t anon_vma ,void anon_vma_ctor NULLkmem_cache_t anon_vma_chachepS h e n z h e n F a r s i g h tlizhiguo0532@ 2010-6-0419 */ 25. fork_init(num_physpages);/* */ 26. proc_caches_init();buffer_init();/*kmem_cache_create("buffer_head",sizeof(struct buffer_head), 0,SLAB_RECLAIM_ACCOUNT|SLAB_PANIC, init_buffer_head, NULL) struct buffer_head kmem_cache_t */27. security_init();/* */28. vfs_caches_init(num_physpages);radix_tree_init();signals_init();kmem_cache_create("sigqueue",sizeof(struct sigqueue),__alignof__(struct sigqueue),SLAB_PANIC, NULL, NULL) struct sigqueue kmem_cache_t sigqueue cache line kmem_cache_t sihqueue_cachep.29. page_writeback_init()buffer_pages.30. proc_root_init();/* proc CONFIG_PROC_FS */31. check_bugs();/* arm */32 rest_init()initlinux :0 rest_init()a. in arch/arm/kernel/process.cinitb. schedule() idle schedulec. cpu_idle()0S h e n z h e n F a r s i g h t In c . lizhiguo0532@ 2010-6-0420 init in main.c a. lock_kernel() lock b. smpc. populate_rootfs() initcallsd. do_basic_setup()#define module_init(x) __initcall(x);#define __initcall(fn) device_initcall(fn)#define core_initcall(fn) __define_initcall("1",fn)#define postcore_initcall(fn) __define_initcall("2",fn) #define arch_initcall(fn) __define_initcall("3",fn) #define subsys_initcall(fn) __define_initcall("4",fn) #define fs_initcall(fn) __define_initcall("5",fn) #define device_initcall(fn) __define_initcall("6",fn) #define late_initcall(fn) __define_initcall("7",fn)#define __define_initcall(level,fn) \static initcall_t __initcall_##fn __attribute_used__ \__attribute__((__section__(".initcall" level ".init"))) = fn include/linux/init.harch_initcall initcall module_init init 1 do_basic_setup do_initcalls()S h e n z h e n F a r s i gh t I n c . lizhiguo0532@ 2010-6-0421 Start_kernel * -- rest_init()* -- kernel_thread()* init 1 -- Init* -- populate_rootfs() -- do_basic_setup()* initcall modlue_init -- init_workqueues() -- usermodehelper_init() khelper-- driver_init()-- sysctl_init()-- sock_init() socket-- do_initcalls()*-- (*call)()* initcall-- prepare_namespace()-- name_to_dev_t()root bootargs root=/dev/** root=31:03 /dev/mtdblock3 root /dev/ 31-- mount_root();/* */-- free_initmem() init:Freeing init memory: 116K-- sys_open() and sys_dup(0) 0 1 2-- run_init_process(execute_command) init=/initrd command_line-- cpu_idle() 0init 1 …… run_init_process("/sbin/init");run_init_process("/etc/init");run_init_process("/bin/init");run_init_process("/bin/sh");……S h n n F a r s i g h t In c . lizhiguo0532@ 2010-6-0422 ARM Linux -- -PXA255--- Linux bootargs/u3/99423/article.html/bbstcon,board,Embedded,reid,1165977462.html/node/4。

linux-mips启动分析

linux-mips启动分析

linux-mips启动分析(1)系统加电起动后,MIPS 处理器默认的程序入口是0xBFC00000,此地址在无缓存的KSEG1的地址区域内,对应的物理地址是0x1FC00000,即CPU从0x1FC00000开始取第一条指令,这个地址在硬件上已经确定为FLASH的位置,Bootloader将Linux 内核映像拷贝到RAM 中某个空闲地址处,然后一般有个内存移动操作,目的地址在arch/mips/Makefile 内指定:load-$(CONFIG_MIPS_PB1550) += 0xFFFFFFFF80100000,则最终bootloader定会将内核移到物理地址0x00100000 处。

上面Makefile 里指定的的load 地址,最后会被编译系统写入到arch/mips/kernel/vmlinux.lds 中:OUTPUT_ARCH(mips)ENTRY(kernel_entry)jiffies = jiffies_64;SECTIONS{. = 0xFFFFFFFF80100000;/* read-only */_text = .; /* Text and read-only data */.text : {*(.text)...这个文件最终会以参数-Xlinker --script -Xlinker vmlinux.lds 的形式传给gcc,并最终传给链接器ld 来控制其行为。

ld 会将 .text 节的地址链接到0xFFFFFFFF80100000 处。

关于内核ELF 文件的入口地址(Entry point),即bootloader 移动完内核后,直接跳转到的地址,由ld 写入ELF的头中,其会依次用下面的方法尝试设置入口点,当遇到成功时则停止:a. 命令行选项-e entryb. 脚本中的ENTRY(symbol)c. 如果有定义start 符号,则使用start符号(symbol)d. 如果存在 .text 节,则使用第一个字节的地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux各项系统开机服务的功能是什么Linux在启动时要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。

但是,开启不必要或有漏洞的服务则会给操作系统带来安全和性能上的影响。

下面我们以BluePoint Linux 2.0的开机服务为例,列表说明各项服务的功能(见附表)。

alsasoundAlsa声卡驱动程序支持。

Alsa声卡驱动程序本来是为了一种声卡Gravis UltraSound(GUS)而写的,该程序被证明很优秀,于是作者就开始为一般的声卡写驱动程序。

Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接口,甚至比OSS优秀。

amd运行automount精灵程序,该精灵在必要时自动安装一些本地设备和NFS文件系统。

apmdapmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。

也可以用来在电源不足时关机。

arpwatch该程序主要用来维护以太网物理地址和IP地址的对应关系。

atalkAppleTalk精灵程序。

注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。

atd运行用户用At命令调度的任务。

也在系统负荷比较低时运行批处理任务。

autofs当您需要时自动转载文件系统,而当您不需要时自动卸载。

bootparamd该服务允许老的Sun工作站从Linux网络启动,它和rarp 现在很少使用,基本上被bootp和dhcp取代了。

crondcron是Unix下的一个传统程序,该程序周期地运行用户调度的任务。

比起传统的Unix版本,Vixie版本添加了不少属性,而且更安全,配置更简单。

dhcpd 该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。

gatedgated通过一个数据库提供了网络路由功能支持。

它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、OSPF 版本2以及EGP版本2到4。

gpmgpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。

它也支持控制台下鼠标的拷贝,粘贴操作以及弹出式菜单。

httpdhttp是著名的www服务器,可用来提供HTML文件以及CGI动态内容服务。

inetd因特网操作服务程序。

监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。

通常,inetd 管理的程序有telnet、ftp、rsh和rlogin。

关闭inetd也就关闭了这些由它管理的服务。

inndinn是最流行的用户组新闻服务器。

它允许您建立起本地新闻服务器。

配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。

keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表,该表可以通过kbdconfig工具进行选择。

您应该使该程序处于激活状态。

ldapLDAP代表Lightweight Directory Access Protocol,实现了目录访问协议的行业标准。

linuxconflinuxconf是Linux下的一个有效的系统配置工具,该服务允许远程运行。

lpdlpd是系统打印守护程序,负责将lpr等程序提交给打印作业。

mcservMidnight Commander服务进程允许远程机器上的用户通过Midnight Commander文件管理器操作本机文件。

服务进程用PAM来验证用户,需要给出“用户名/口令”以通过验证。

mysql 一个快速高效可靠的轻型SQL数据库引擎。

named 域名服务器,将Internet主机名解析为点分的IP地址。

netfs 负责装载/卸载NFS、Samba、NCP(Netware)文件系统。

network 激活/关闭启动时的各个网络接口。

nfsNFS是一个流行的基于TCP/IP网络的文件共享协议。

该服务提供了NFS文件共享服务,具体的配置在/etc/ exports文件里。

nscd该服务负责密码和组的查询,并且缓冲查询结果。

如果您的系统有比较慢的服务(如NIS和NIS+),则应该启动该服务。

pcmcia pcmcia主要用于支持笔记本电脑。

portmap portmap用来支持RPC连接,RPC被用于NFS以及NIS 等服务。

postgresql PostgreSQL关系数据库引擎。

proftpd proftpd是Unix下的一个配置灵活的ftp守护程序。

radvd 路由广播程序。

random保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。

routed该守护程序支持RIP协议的自动IP路由表维护。

RIP主要使用在小型网络上,大一点的网络就需要复杂一点的协议。

rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能参数。

rusersd 该服务使网络用户可以定位同一网络上的其他用户。

rwalldRwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为。

rwhod允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似。

sendmail 大名鼎鼎的邮件服务器。

smb 启动和关闭smbd和nmbd精灵程序以提供SMB网络服务。

snmpd 简单网络管理协议(SNMP)的守护精灵。

syslogsyslog是操作系统提供的一种机制,守护程序通常使用这种机制将各种信息写到各个系统日志文件。

通常应该启动该服务。

xfs X的字体服务器。

ypbind NIS/YP的客户端守护程序。

如果您需要使用NIS/YP机器,请启动这项服务,否则,关闭这项服务。

yppasswd让NIS用户能够修改密码。

运行在NIS域的服务器上。

客户端程序同样也叫yppasswd。

ypserv标准NIS/YP网络协议的一个实现。

允许主机名,用户名和其他信息分布于网络各端。

运行在NIS服务器上,客户端不需要。

NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off 减少网络手动设定NetworkManagerDispatcher 0:off 1:off 2:off 3:off 4:off 5:off 6:offacpid 0:off 1:off 2:off 3:on 4:on 5:on 6:off acpid,先进电源管理anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off 类似于cron,定时执行任务apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 电源管理atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off 定时批处理,即at的守护进程auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 用户空间监控程式autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off 光盘软盘硬盘等自动加载avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off 主要用于Zero Configuration Networking ,关吧,一般无用avahi-dnsconfd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 主要用于Zero Configuration Networking ,关吧,一般无用bluetooth 0:off 1:off 2:off 3:off 4:off 5:off 6:off 蓝牙技术capi 0:off 1:off 2:off 3:off 4:off 5:off 6:off ISDN硬件支持,大部分用户能够关了conman 0:off 1:off 2:off 3:off 4:off 5:off 6:offconman is a program for connecting to remote consoles being managed by conmand。

cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off 降低或加快CPU速度crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off 计划任务cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off Unix公共打印支持dhcdbd 0:off 1:off 2:off 3:off 4:off 5:off 6:off D-BUS系统网络接口,主要为您提供网络连接配置,强烈建议开着,除非您用固定IP上网。

dund 0:off 1:off 2:off 3:off 4:off 5:off 6:off 蓝牙firstboot 0:off 1:off 2:off 3:on 4:off 5:on 6:off 用户向导,一般能够关了gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off linux text模式下鼠标支持haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off HAL(Hardware Abstraction Layer)服务,开着吧hidd 0:off 1:off 2:on 3:on 4:on 5:on 6:off hidd:对输入设备(键盘,鼠标)提供支持hcid 说明:用来管理所有可见的蓝牙设备。

如果没有蓝牙设备,就关闭它。

hplip 0:off 1:off 2:on 3:on 4:on 5:on 6:off 实现HP 打印机支持httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:offibmasm 0:off 1:off 2:off 3:off 4:off 5:off 6:offip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 假如您不用IPv6,关了iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 防火墙,没什么说的,开着irda 0:off 1:off 2:off 3:off 4:off 5:off 6:off 红外线标准服务irqbalance 0:off 1:off 2:on 3:on 4:on 5:on 6:off 多核CPU支持,无着关isdn 0:off 1:off 2:on 3:on 4:on 5:on 6:off ISDN设备支持,无者关kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off 硬件自动监测程式,硬盘侦测服务,当您更换或添加硬盘的时候能够使用,平时能够关了mcstrans 0:off 1:off 2:on 3:on 4:on 5:on 6:off 主要用于SELinux,假如您不用SELinux,能够关了mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off 和RAID有关的服务mdmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 和RAID有关的守护进程messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off 为多个程式之间提供一对一通讯,Linux ICP 服务,强列建议开着microcode_ctl 0:off 1:off 2:on 3:on 4:on 5:on 6:offnetfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off 假如您需要网络共享文档,那就开着netplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 网卡监控程式,对大部分用户基本无用,关。

相关文档
最新文档