linux启动之scsi和ata的初始化

static int __init init_scsi(void)

{

int error;

error = scsi_init_queue();

if (error)

return error;

error = scsi_init_procfs();

if (error)

goto cleanup_queue;

error = scsi_init_devinfo();

if (error)

goto cleanup_procfs;

error = scsi_init_hosts();

if (error)

goto cleanup_devlist;

error = scsi_init_sysctl();

if (error)

goto cleanup_hosts;

error = scsi_sysfs_register();

if (error)

goto cleanup_sysctl;

scsi_netlink_init();

printk(KERN_NOTICE "SCSI subsystem initialized\n");

return 0;

cleanup_sysctl:

scsi_exit_sysctl();

cleanup_hosts:

scsi_exit_hosts();

cleanup_devlist:

scsi_exit_devinfo();

cleanup_procfs:

scsi_exit_procfs();

cleanup_queue:

scsi_exit_queue();

printk(KERN_ERR "SCSI subsystem failed to initialize, error = %d\n",

-error);

return error;

}

[    0.260628] SCSI subsystem initialized

[    0.260660] libata version 3.00 loaded.

ata/libata-core.c

static int __init ata_init(void)

{

int rc;

ata_parse_force_param();

rc = ata_sff_init();

if (rc) {

kfree(ata_force_tbl);

return rc;

}

libata_transport_init();

ata_scsi_transport_template = ata_attach_transport();

if (!ata_scsi_transport_template) {

ata_sff_exit();

rc = -ENOMEM;

goto err_out;

}

printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n");

return 0;

err_out:

return rc;

}

时间: 2024-08-30 14:08:01

linux启动之scsi和ata的初始化的相关文章

Linux启动初始化配置文件

Linux启动初始化配置文件(1)/etc/profile 登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc Ubuntu没有此文件,与之对应的是/ect/bash.bashrc bash.bashrc 是交互式shell的初始化文件. (3)~/.profile 某个用户读取的配置. 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~ /.bash_login,若前两者不存在,读取~ /.prof

如何查看和停止Linux启动的服务

1. 查看Linux启动的服务 chkconfig --list 查询出所有当前运行的服务 chkconfig --list atd  查询atd服务的当前状态 2.停止所有服务并且在下次系统启动时不再启动,如下所示: chkconfig --levels 12345 NetworkManager off 如果想查看当前处于运行状态的服务,用如下语句过滤即可 chkconfig --list |grep on 3.如果只是想当前的设置状态有效,在系统重启动后即不生效的话,可以用如下命令停止服务

Linux启动过程笔记

Linux启动过程 1.启动流程(BIOS->MBR:Boot Code->引导GRUB->加载内核->执行init->runlevel) 2./boot/grub/下有多个文件   其中stage1为MBR镜像(512字节) stage2为引导程序 3./boot/grub/grub.conf为引导的配置文件 default=0#默认加载下边哪个系统 timeout=3#引导等待时间 splashimage=(hd0,1)/boot/grub/splash.xpm.gz#引

Linux启动过程

Linux启动过程 传说]散人--南宁1,开机,读取BIOS并进行自我检测2,透过BIOS取得第一个开机装置,读取MBR取得开机管理程序3透过开机管理程序,取得KERNEL(内核)加载内存且侦测系统硬件4核心计动呼叫INIT的程序5INIT程序开始执行系统初始化6依据INIT的程序进行daemon start7加载本机设定 22:19:25[传说]Ed1 2015/1/20 22:19:25 启动第一个程序init,读取配置文件fstab22:20:37[传说]散人--南 2015/1/20 2

arm linux 启动之二:start_kernel到创建1号进程

本文介绍arm linux启动的第二部分,C语言编写,主要讲述start_kernel到1号进程的创建.主要讲述大概过程,以后再对子函数进行讲解. 一.start_kernel start_kernel位于init/main.c,主要完成linux一些子系统的初始化. 1)smp_setup_processor_id() 单CPU位为空. 2)lock_kernel() 锁CPU,linux是支持抢占的,多CPU时调用这个函数防止其他CPU抢占.3)tick_init() 时间相关初始化4)bo

Linux启动简单分析

1. 概述 从Bootloader至init程序主要过程如下 ++++++++++++++ ++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ | | -> | kernel_entry() | -> | start_kernel() -> rest_init() -> kernel_init() | ============== -> ================== -> =

linux启动

计算机启动后,BIOS会先进性POST自检(Power On Self Test ),自检通过后会将MBR主引导记录加载至内存,MBR会查找活动分区上的次引导加载程序GRUB至内存,GRUB根据用户选择,加载相应的内核映像,在内核引导的过程中,会加载必要的系统模块,用以挂载根文件系统,内核启动完成后,会启动init进程,并将引导控制权交由init进程,init进程会加载/etc/fstab中所设置的所有文件系统,并根据/etc/inittab来执行相应的脚本进行系统初始化,至此,linux启动完

bootchart--检测linux启动性能的软件

bootchart--检测linux启动性能的软件 摘自http://www-128.ibm.com/developerworks/library/l-boot-faster/index.html?ca=dgr-lnxw01FC-FastLinuxBoot, Parallelize applications for faster Linux booting ,有兴趣的可以去读原文.也可以直接从http://www.bootchart.org/下载软件. bootchartd作为一个deamon在

linux启动常见故障

Linux在启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式.GRUB命令操作.Linux救援模式的典型故障修复案例帮助读者了解此类问题的解决. 一.单用户模式 Linux提供了单用户模式(类似Windows安全模式),可以在最小环境中进行系统维护.在单用户模式(运行级别1)中,Linux引导进入根shell,网络被禁用,只有少数进程运行.单用户模式可以用来修改文件系统损坏.还原配置文件.移动用户数据等. 以下列举了几个单用户模式修复系统故障的典型案例: 案例一:硬盘