百度
360搜索
搜狗搜索

linux加载之后如何启动详细介绍

Linux 系统在完成内核加载后,启动流程将进入用户空间初始化阶段,这一过程涉及多个关键环节的协同工作。以下是详细的启动步骤和技术解析:

一、内核初始化阶段(Kernel Initialization)

  1. 硬件检测与驱动加载

    • 内核通过start_kernel()函数启动,依次执行trap_init()(中断处理初始化)、mm_init()(内存管理初始化)、sched_init()(调度器初始化)等核心模块初始化。
    • 使用dmesg命令可查看内核硬件检测日志,例如:bash
          

  2. 根文件系统挂载

    • 内核通过vfs_caches_init()初始化虚拟文件系统,并加载initramfs(内存盘)。initramfs包含临时根文件系统和必要的驱动程序。
    • 示例:bash
      lsinitrd    

  3. 启动第一个用户进程

    • 内核通过kernel_thread()创建进程 ID 为 1 的init进程,该进程将接管后续的系统初始化工作。

二、用户空间初始化(User Space Initialization)

(一)Systemd 初始化系统(现代 Linux 发行版)

  1. 目标(Target)机制

    • 取代传统运行级别,使用systemd管理服务启动。例如:
      • multi-user.target → 多用户命令行模式
      • graphical.target → 图形界面模式

    • 查看当前目标:bash
      systemctl get-default

  2. 服务启动流程

    • systemd并行启动服务,通过单元文件(.service)定义依赖关系。例如:bash
      systemctl list-units service

  3. 日志与调试

    • 使用journalctl查看系统日志:bash
      journalctl   

      journalctl sshd.service

(二)SysVinit 初始化系统(旧版 Linux)

  1. 运行级别(Runlevel)机制

    • 0-6 共 7 个运行级别,例如:
      • 3 → 多用户命令行
      • 5 → 图形界面

    • 查看当前运行级别:bash
      runlevel

  2. 脚本启动流程

    • 执行/etc/rc.d/rc.sysinit脚本完成系统初始化,然后根据运行级别执行/etc/rcN.d/目录下的启动脚本。
    • 示例:bash
       /etc/rc3.d/  

三、系统服务初始化(Service Initialization)

  1. 关键服务启动

    • 网络服务systemd-networkd(systemd)或network(SysVinit)
    • 日志服务rsyslogsystemd-journald
    • 安全服务firewalldiptables

  2. 服务管理命令

    • systemd:bash
      systemctl startstoprestartdisable 服务名

    • SysVinit:bash
       服务名 startstoprestart

四、用户登录与会话启动

  1. 终端登录

    • 启动getty服务(如tty1-tty6),用户输入用户名密码登录。
    • 示例:bash
      systemctl status getty@tty1.service

  2. 图形界面登录

    • 启动display-manager(如gdmlightdm),加载桌面环境(如 GNOME、KDE)。
    • 示例:bash
      systemctl status gdm.service

  3. 用户环境加载

    • 执行/etc/profile(全局配置)和~/.bash_profile(用户配置)。

五、常见问题排查

  1. 启动失败诊断

    • GRUB 救援模式:通过e键编辑启动项,添加single进入单用户模式。
    • 文件系统修复:bash
        /dev/sda1  

  2. 服务启动故障

    • 查看依赖关系:bash
      systemctl list-dependencies sshd.service

    • 禁用服务:bash
      systemctl disable 服务名

  3. 内核参数优化

    • 编辑/etc/default/grub,添加参数(如quiet splash),然后更新 GRUB:bash
      grub2-mkconfig  /boot/grub2/grub.cfg

六、性能优化建议

  1. 并行启动优化

    • systemd 默认并行启动服务,可通过systemd-analyze分析启动耗时:bash
      systemd-analyze blame  

  2. 精简启动服务

    • 禁用非必要服务:bash
      systemctl disable cups.service  

  3. 使用 tmpfs 临时文件系统

    • /tmp挂载到内存,减少磁盘 IO:bash
         /etc/fstab

七、不同发行版的差异

发行版 初始化系统 默认运行级别 / 目标 服务管理工具
CentOS 7+ systemd graphical.target systemctl
Ubuntu 16.04 upstart runlevel 5 service/initctl
Debian 9 sysvinit runlevel 3 service

八、高级技巧

  1. 自定义启动服务

    • systemd:创建/etc/systemd/system/myservice.service,内容:ini

    • 启用服务:bash
      systemctl  myservice.service

  2. 内核调试

    • 添加debug参数到 GRUB 启动项,启用内核调试日志。

总结

Linux 系统启动是一个多层级、多阶段的复杂过程,从硬件自检到用户登录涉及 BIOS/UEFI、GRUB、内核、init 系统、服务管理等多个组件。理解各阶段的工作原理和关键技术点,有助于系统管理员快速定位和解决启动问题,同时通过优化服务配置和内核参数提升系统性能。

阅读更多 >>>  什么叫linux发行版

网站数据信息

"linux加载之后如何启动"浏览人数已经达到21次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux加载之后如何启动的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!