Linux设备子系统初始化】的更多相关文章

本文介绍的内容是基于Linux3.1源码,并参考了很多网上找来的资料 Linux内核的启动的流程如下: start_kernel->rest_init->kernel_init->do_basic_setup->driver_init 由driver_init函数完成设备驱动子系统的初始化,这里重点分析driver_init函数,该函数通过调用一系列的初始化函数主要完成了设备驱动子系统的一个整体框架: /** * driver_init - initialize driver mo…
加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可执行程序和驱动程序.在linux初始化的初级阶段,它提供了一个基本的运行环境.当成功加载磁盘文件系统后,系统将切换到磁盘文件系统并卸载initrd. 如果是嵌入式设备,那么最终的文件系统就是initrd. 二.cpio文件格式 initrd常用的的文件格式是cpio,cpio格式记录了文件系统的结构…
术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 struct super_block:超级块 struct dentry:目录 struct inode:索引节点 一.目的 linux文件系统主要分为三个部分:文件系统调用:虚拟文件系统(VFS):挂载到VFS的实际文件系统. 其中,VFS是核心,linux文件系统的本质就是在内存中创建一棵VFS树.…
一.目的 linux把文件分为常规文件.目录文件.软链接文件.硬链接文件.特殊文件(设备文件.管道文件.socket文件等)几种类型,分别对应不同的新建函数sys_open().sys_mkdir().sys_symlink().sys_link().sys_mknod(). 系统初始化阶段成功加载initrd后,调用这些接口函数创建各种文件,因此这些函数在linux文件系统初始化过程中起到了重要作用,本文将详细描述这些接口函数的实现过程. 这些接口函数主要在fs/namei.c.fs/open…
一.目的 本文主要讲述linux3.10文件系统初始化过程的第一阶段:挂载rootfs文件系统. rootfs是基于内存的文件系统,所有操作都在内存中完成:也没有实际的存储设备,所以不需要设备驱动程序的参与.基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统.   二.主要函数调用过程 图1描述了挂载rootfs的函数调用关系(图中红色部分),便于后面的分析. 从图中发现,在挂载root…
术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 struct super_block:超级块 struct dentry:目录 struct inode:索引节点 一.目的 linux文件系统主要分为三个部分:文件系统调用:虚拟文件系统(VFS):挂载到VFS的实际文件系统. 其中,VFS是核心,linux文件系统的本质就是在内存中创建一棵VFS树.…
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定…
文章目录 一.BIOS 加载启动引导程序 二.MBR 主引导扇区 三.GRUB引导内核 3.1运行 boot.img 3.2加载 core.img 3.3切换到保护模式 3.4kernel.img 引导内核 四.内核初始化 五.系统调用 Linux系统启动初始化的主要流程是: 1.上电BIOS自检 2.启动Boot Loader(GRUB) 3.加载内核 4.启动第一个进程 5.配置环境 一.BIOS 加载启动引导程序 BIOS(英文:Basic Input/Output System),即基本…
Linux启动初始化配置文件(1)/etc/profile 登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc Ubuntu没有此文件,与之对应的是/ect/bash.bashrc bash.bashrc 是交互式shell的初始化文件. (3)~/.profile 某个用户读取的配置. 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~ /.bash_login,若前两者不存在,读取~ /.prof…
linux 初始化系统配置(centos6) (2013-04-03 13:19:15) 转载▼   分类: linux 这篇博文是从别处转来的,原文地址http://zhoualine.iteye.com/blog/1587086 linux 初始化系统配置(centos6)  在配置服务器之前一般都需要根据自己的需要对系统进行初始化的一些工作,我自己在配置服务器之前都会做些初始化的配置这里主要包括5个设置: 1.  限制某些用户使用su命令 2.  限制只能wheel组能使用sudo命令 3…
转载:http://blog.csdn.net/beatbean/article/details/8448623 1. Compile宏控制 位于include/linux/init.h /* These are for everybody (although not all archs will actually discard it in modules) */ #define __init      __section(.init.text) __cold notrace #define …
start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. machine_specific_memory_setup max_low_pfn = setup_memory(); paging_init zone_sizes_init 然后我们还要看 build_all_zonelists(); mem_init(); //处理内存图,最后保存在e820中 char * __init machine_specific_memory_setup(void) { ...…
Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进程 6 读取inittab配置文件,执行/etc/rc.d/rc.sysinit,/ect/rc.d/rc等脚本 7 启动mingetty进程,进入系统登陆界面 Linux系统运行级别一般为0-6 0 关机模式 1 单用户模式 2 无NFS的多用户模式 3 文本模式 4 无用 5 图形化 6 重启模…
一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可执行程序和驱动程序.在linux初始化的初级阶段,它提供了一个基本的运行环境.当成功加载磁盘文件系统后,系统将切换到磁盘文件系统并卸载initrd. 如果是嵌入式设备,那么最终的文件系统就是initrd. 二.cpio文件格式 initrd常用的的文件格式是cpio,cpio格式记录了文件系统的结构和内容. cpio格式具…
一.目的 上文详细介绍了CPIO格式的initrd文件,本文从源代码角度分析加载并解析initrd文件的过程. initrd文件和linux内核一般存储在磁盘空间中,在系统启动阶段由bootload负责把磁盘上的内核和initrd加载到指定的内存空间中:然后,再由内核读取和解析initrd文件,在VFS(目前只有rootfs的根目录)中新建目录.常规文件.符号链接文件以及特殊文件:这样VFS就从根目录"/"成长为一棵枝繁叶茂的大树了. 二.函数调用过程 initrd详细的加载过程在in…
1)/etc/profile   登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash.bashrc bash.bashrc 是交互式shell的初始化文件.   (3)~/.profile  某个用户读取的配置. 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~ /.bash_login,若前两者不存在,读取~ /.profile. 另外,…
执行init程序 一.目的 内核加载完initrd文件后,为挂载磁盘文件系统做好了必要的准备工作,包括挂载了sysfs.proc文件系统,加载了磁盘驱动程序驱动程序等.接下来,内核跳转到用户空间的init程序,由init完成创建磁盘设备文件.加载磁盘文件系统.从rootfs切换到磁盘根文件系统等工作. 由于在不同的linux发行版中,init的实现方式差异很大,不能将所有的发行版都分析一遍,因此本文选取ubuntu12.04发行版来描述如何从rootfs切换到磁盘根文件系统. 二.创建磁盘设备文…
一.目的 内核加载完initrd文件后,为挂载磁盘文件系统做好了必要的准备工作,包括挂载了sysfs.proc文件系统,加载了磁盘驱动程序驱动程序等.接下来,内核跳转到用户空间的init程序,由init完成创建磁盘设备文件.加载磁盘文件系统.从rootfs切换到磁盘根文件系统等工作. 由于在不同的linux发行版中,init的实现方式差异很大,不能将所有的发行版都分析一遍,因此本文选取ubuntu12.04发行版来描述如何从rootfs切换到磁盘根文件系统. 二.创建磁盘设备文件 init程序使…
转自:http://www.cnblogs.com/super-king/p/3291120.html start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. machine_specific_memory_setup max_low_pfn = setup_memory(); paging_init zone_sizes_init 然后我们还要看 build_all_zonelists(); mem_init(); //处理内存图,最后保存在e820中 cha…
一.前言 经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init.当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系统内存地址映射这部分代码实现,也就是解析paging_init中的map_mem函数. 同样的,我们选择的是4.4.6的内核代码,体系结构相关的代码来自ARM64. 二.准备阶段 在进入实际的代码分析之前,我们首先回头看看目前内存的状态.偌大的物理地址空间中,系统内存占据了一段或者几段地址空间,这些…
一.前言 同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务.具体的cpu体系结构选择的是ARM64. 二.memory type region的构建 memory type是一个memblock模块(内核初始化阶段的内存管理模块)的术语,memblock将内存块分成两种类型:一种是memory type,另外一种是reserved type,分别用数组来管理系统中的…
一.前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程.想要了解一些概述性的.框架性的东西可以参考内存初始化文档. 本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARMv8中翻译表描述符的格式. 二.create_table_entry 这个宏定义主要是用来创建一个中间level的translation table中的描述符.如果用linux的术语,就是创建PGD.…
一.前言 一直以来,我都非常着迷于两种电影拍摄手法:一种是慢镜头,将每一个细节全方位的展现给观众.另外一种就是快镜头,多半是反应一个时代的变迁,从非常长的时间段中,截取几个典型的snapshot,合成在十几秒的镜头中,可以让观众很快的了解一个事物的发展脉络.对应到技术层面,慢镜头有点类似情景分析,把每一行代码都详细的进行解析,了解技术的细节.快镜头类似数据流分析,勾勒一个过程中,数据结构的演化.本文采用了快镜头的方法,对内存初始化部分进行描述,不纠缠于具体函数的代码实现,只是希望能给大家一个概略…
boot 的起源: the term bootstrap refers to a person who tries to stand up by pulling her own boots. (Understanding The Linux Kernel) 西方谚语:  拽着自己的鞋带站起来  (类似于我们说的:用手拽着自己的头发把自个拎起来). 对于系统的启动犹如上面的谚语:即用自己的引导程序把自己启动起来.引导程序在硬盘分区中,引导程序必须加载到内存中才能被CPU 执行并完成后续内核的初始化…
sysinit文件写法详解 sysinit文件是linux初始化文件系统时执行的第一个脚本文件.它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块. 具体执行的脚本由inittab文件中的action为sysinit的一行确定.如LFS中为如下一行: si::sysinit:/etc/rc.d/init.d/rc sysinit 这代表init初始化程序执行的第一个脚本为/etc/rc.d/init.d/rc,并传入sys…
系统的初始化和服务 1. Linux 系统启动流程 打开计算机,从主板 BIOS(Basic Input/Out System)读取其中所存储的程序,引导你找到存储系统的硬件(如光盘.硬盘等) 接下来,机械手臂读取硬盘中起始的 512 bytes 程序,这个叫作 主引导记录MBR(master boot record),MBR 会引导你找到该硬盘中存储系统的分区(partiton),并找到加载系统的程序 boot loader Boot Loader 存储系统的相关信息,如系统名称.系统内核(k…
转自:http://blog.51cto.com/19055/1144600 1)/etc/profile   登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash.bashrc bash.bashrc 是交互式shell的初始化文件.   (3)~/.profile  某个用户读取的配置. 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~…
主机刚安装完系统,会做一些配置上的优化. 修改时区 通过命令将时区设置为亚洲/上海. timedatectl set-timezone Asia/Shanghai #centos7 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #centos6 关闭seLinux 修改配置文件 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config setenforce 0 关…
2012-01-08 22:11:38 目的:我需要掌握spi驱动相关数据结构关系,及在哪部分函数中把这些数值进行底层寄存器赋值的.结合应用层函数完成spi驱动的代码测试.已达到灵活修改的目的. 按顺序看probe函数中 if (!pdata->set_cs) 则              hw->set_cs = s3c24xx_spi_gpiocs; gpio_direction_output(pdata->pin_cs, 1); 由于我的platform_device.platfo…
鸟哥的Linux 私房菜 Linux常用命令大全     http://www.cnblogs.com/yjd_hycf_space/p/7730690.html 安装看锋哥教程   可能最后网卡出错  修改网络适配器   桥接模式- -> NAT模式 桥接模式是会直接连到外部局域网,问题在于当把网线拔掉的时候网就断了NAT模式指和自己电脑共享网卡,好处是可以上网.需要互联网的时候用这种方式 仅用主机方式 相当于两台电脑直接拿一根网线连上,和外部网络没有关系,拔不拔网线效果一样子网ip需要改为2…