• Android x86 镜像分析之三


    接第一篇,当android系统在启动时我们没有传入install参数,则继续执行下面的内容:

    load_modules
    mount_data
    mount_sdcard
    setup_tslib
    setup_dpi
    post_detect
    find_network_dev_name
    
    if [ 0$DEBUG -gt 1 ]; then
            echo -e "
    Use Alt-F1/F2/F3 to switch between virtual consoles"
            echo -e "Type 'exit' to enter Android...
    "
    
            debug_shell debug-late
    fi
    
    [ -n "$DEBUG" ] && SWITCH=${SWITCH:-chroot}
    
    # We must disable mdev before switching to Android
    # since it conflicts with Android's init
    echo > /proc/sys/kernel/hotplug
    
    exec ${SWITCH:-switch_root} /android /init
    
    # avoid kernel panic
    while :; do
            echo
            echo '  Android-x86 console shell. Use only in emergencies.'
            echo
            debug_shell fatal-err
    done
    

    开头的几个函数主要是挂载分区,加载模块等,我们主要看一下最后调用init这一段,也就是这一句

    exec ${SWITCH:-switch_root} /android /init
    

    这一句的调用意味着我们的系统内核已经启动程序,开始启动系统程序,这个调用的是ramdisk.img中的init文件,这个文件是一个init二进制文件,是从android的init.c 编译而来的,这就是linux系统所谓的init进程。到这里我们总结一下以上的流程,完事咱们在继续往下看,在这里我将画一个流程图。

    接下来我们将分析系统的init文件。

  • 相关阅读:
    Mac连接远程Linux管理文件(samba)
    centos6 防火墙iptables操作整理
    安装postgresql
    linux CentOS6.5 yum安装mysql 5.6
    centos--git搭建之Gogs安装
    查看mysql 默认端口号和修改端口号
    centos之mysql安装配置使用
    流媒体服务器SRS部署
    redis配置文件参数说明
    redis 安装
  • 原文地址:https://www.cnblogs.com/jjxxjnzy/p/3370125.html
Copyright © 2020-2023  润新知