>> >> >> Reference << << << <<<<<<Ref>>>>>>
>> >> >> Indexer << << << <<<<<<Idx>>>>>>
Matched: 0

Tags

    Categories

      Types

        Top Results

          boot
          M: 2026-01-14 -

          Linux Boot

          Linux系统的启动流程大致可以分为以下几个阶段

          1. 硬件启动和BIOS/UEFI阶段

          • 开机时,CPU会首先执行BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)中的代码
          • BIOS/UEFI负责初始化硬件,如CPU、内存、硬盘、显卡等,完成基本的硬件检测(POST, Power-On Self Test)
          • BIOS/UEFI会加载系统的引导程序(bootloader)。如果使用的是UEFI,通常会加载EFI文件系统中的启动项;如果是传统的BIOS,则会查找MBR(主引导记录)

          2. 引导加载程序(Bootloader)

          • 在UEFI或BIOS初始化后,控制权交给了引导加载程序,常见的引导加载程序有:
            • GRUB(GNU GRUB)是最常见的Linux引导加载程序
            • LILO(Linux Loader)是旧版的引导加载程序
          • 引导加载程序的任务是加载操作系统内核,并将控制权传递给它。它会根据配置文件提供的选项,选择内核及相应的参数

          3. 内核启动(Kernel Boot)

          • 引导加载程序加载内核映像(通常是vmlinuz文件),并将内核控制权交给内核
          • 内核首先会进行一些基本初始化工作
            • 初始化硬件:包括设备驱动程序的加载
            • 内存管理:内核会管理和分配系统内存
            • 文件系统挂载:内核会挂载根文件系统(/),这个根文件系统通常是一个磁盘分区
            • 启动设备驱动:内核会加载需要的设备驱动,以便访问硬件设备(如硬盘、网络卡等)
          • 在此阶段,内核会初始化所有核心系统功能,包括调度、进程管理等

          初始化进程(Init Process)

          • 内核加载完成后,控制权会交给地一个用户级进程,即init进程(在较新的系统中,init可能是systemdupstartSysVinit等)
          • init进程是所有其他用户进程的父进程。它会根据配置文件(如/etc/inittab/etc/systemd/system)来确定系统的运行级别和启动的服务

          系统服务和守护进程(System Services and Daemons)

          • init进程的控制下,系统会启动多个守护进程(daemons)。这些守护进程负责后台运行,提供系统服务,如网络管理、日志记录、打印服务等
          • systemd是现代Linux系统最常用的初始化系统,它会读取服务单元(unit)文件并启动相应的服务。它还负责进程管理、系统日志、设备管理等任务
          • 各种系统服务(如网络服务、显示管理器等)会启动并初始化系统的其他功能

          用户登录界面(Login Interface)

          • 如果配置了图形界面(如通过X Window System或Wayland),在此阶段,系统会启动显示管理器(如GDM、LightDM、SDDM等)
          • 显示管理器提供一个图形化的登录界面,用户可以输入用户名和密码
          • 对于没有图形界面的系统,登录过程会通过终端进行,用户需要通过命令行输出用户名和密码登录

          用户环境加载(User Environment Setup)

          • 用户登录后,系统会加载用户的shell环境(如bashzsh等)
          • 用户的登录shell会执行用户的配置文件(如~/.bashrc~/.profile等),设置用户环境变量和启动自定义的程序

          ~/.bashrc

          ~/.bashrc是一个用户级的配置文件,主要用于设置与Bash shell相关的环境和行为。它位于用户的家目录中(例如/home/username/.bashrc),在每次启动一个新的Bash shell会话时自动执行。它是Bash shell的“初始化文件”之一,通常用于设置环境变量、别名、命令提示符、函数定义等

          作用

          当打开一个新的终端窗口时,Bash会加载并执行~/.bashrc文件中的内容。这个文件的主要作用包括

          • 设置环境变量(如PATH, EDITOR等)
          • 创建命令别名(例如,alias ll='ls -l'
          • 配置命令提示符(PS1,定义终端显示的提示符样式)
          • 定义自定义函数
          • 启动某些程序(如自动启动虚拟环境)
          • 配置Shell行为(如禁用历史记录记录某些命令)

          文件结构

          一个标准的~/.bashrc文件可能包含以下内容

          • 环境变量设置 可以在.bashrc中设置环境变量
          export PATH=$PATH:/opt/myapp/bin # 添加自定义路径到 PATH 环境变量
          export EDITOR=vim # 设置默认文本编辑器为 vim 
          
          • 命令别名 别名用于简化常用命令的输入
          alias ll='ls -l' # 使用 ll 命令代替 ls -l 
          alias gs='git status' # 使用 gs 查看 git 状态
          
          • 定义自定义函数 可以在.bashrc中定义一些便捷的自定义函数,例如
          # 自定义函数:快速进入某个目录
          cdproject() {
            cd /path/to/project && ls 
          }
          
          • 配置命令提示符(PS1) Bash提示符的外观和样式是可以自定义的,通常通过设置PS1环境变量来控制。可以让提示符显示用户名、主机名、当前路径等信息
          # 设置命令提示符,显示用户名、主机名和当前目录
          PS1='[\u@\h \w]\$ '
          
          • 启动某些程序 在某些情况下,可能希望在每次启动一个新的终端时自动运行一些程序或命令。例如,可以自动激活虚拟环境
          # 自动激活某个 Python 虚拟环境
          if [ -f "$HOME/myenv/bin/activate" ]; then 
              source "$HOME/myenv/bin/activate"
          fi 
          

          修改.bashrc

          可以使用任何文本编辑器编辑~/.bashrc文件
          在文件中进行修改后,保存并关闭文件。为了使更改生效,需要“重新加载”.bashrc文件,可以使用以下命令

          source ~/.bachrc
          

          或者也可以关闭当前的终端窗口并重新打开一个新的终端窗口,.bashrc文件的更改会自动生效

          .bashrc的重要性

          • 自定义环境:它允许根据个人需求自定义终端环境,比如设置合适的PATH,设置别名和快捷命令
          • 提高工作效率:通过自定义环境变量、命令别名和函数,可以显著提升工作效率,减少重复输入
          • 个性化终端:通过修改.bashrc,可以个性化Bash提示符,增加一些趣味或便于区分不同的工作环境