zoukankan      html  css  js  c++  java
  • 为Linux用ISO制作U盘启动及基本原理

    制作成功后的基本最简文件夹文件图


    一、系统的基本引导流程:

    首先系统要引导isolinux.bin可执行程序,此程序是移动介质上引导用的,isolinux.bin执行成功后会载入其配置文件syslinux.cfg,该文件里定义了vmlinuz和initrd.img的调用方式。

    vmlinuz是vmlinux的压缩版。二者都是linux内核。

    isolinux.bin依据其配置方式中定义的initrd.img的參数传给vmlinuz即Linux内核并载入内核。然后Linux内核会依据获得的initrd.img的调用參数调用initrd.img。initrd.img的基本功能就是root路径挂载器。其存在的意义是省去了不同root路径硬件下vmlinuz内核的重编译工作。initrd.img依据调用參数去參数路径中找系统启动程序(这里使用的就是iso的安装镜像),系统便启动起来了。

    二、引导盘的基本制作过程:

    第一步:提取制作引导镜像所需的文件,这些文件在Linux安装盘的isolinux文件夹中,这个文件夹就是个微型Linux系统。


    第二步:编辑isolinux.bin的运行配置文件syslinux.cfg的原文件isolinux.cfg。

    default vesamenu.c32
    timeout 600
    这里定义的默认者是vesamenu.c32c,这个vesamenu.32c的作用就是启动菜单外观绘制拓展工具。以下定义的timeout是指用户选择时间上限。

    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS quiet
    label check
      menu label Test this ^media & install CentOS 7
      menu default
      kernel vmlinuz
      append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS rd.live.check quiet
    
    menu separator # insert an empty line
    
    # utilities submenu
    menu begin ^Troubleshooting
      menu title Troubleshooting
    
    label vesa
      menu indent count 5
      menu label Install CentOS 7 in ^basic graphics mode
      text help
    	Try this option out if you're having trouble installing
    	CentOS 7.
      endtext
      kernel vmlinuz
      append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS xdriver=vesa nomodeset quiet
    
    label rescue
      menu indent count 5
      menu label ^Rescue a CentOS system
      text help
    	If the system will not boot, this lets you access files
    	and edit config files to try to get it booting again.
      endtext
      kernel vmlinuz
      append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS rescue quiet
    
    label memtest
      menu label Run a ^memory test
      text help
    	If your system is having issues, a problem with your
    	system's memory may be the cause. Use this utility to
    	see if the memory is working correctly.
      endtext
      kernel memtest
    
    menu separator # insert an empty line
    
    label local
      menu label Boot from ^local drive
      localboot 0xffff
    
    menu separator # insert an empty line
    menu separator # insert an empty line
    
    label returntomain
      menu label Return to ^main menu
      menu exit
    
    menu end
    这些是每项菜单的详细定义,即定义了每一个菜单相应的调用vmlinuz和initrd.img的方式。

    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS quiet
    label是标签。类似于grub的title 。

    kernel项代表要载入的内核。append是后缀參数,相当于为了好看换行的作用。initrd=initrd.img是定义内核的挂在器是initrd.img,后面參数inst.stage2=hd:LABEL=CENTOS quiet 就是载入的root路径。inst.stage2是指载入安装程序文件的路径。hd:LABEL=CENTOS是指root的路径在卷标为CENTOS的储存设备中。即U盘,所以该引导镜像的名字和U盘卷标必须是CENTOS。

    此处假设不想用菜单方式显示,直接载入安装文件。能够省去vesamenu.32c 把开头的default vesamenu.32c改成default linux 即默认载入label linux的定义。

    第三步:制作引导镜像文件CENTOS.iso


    改动镜像文件名称字与syslinux.cfg中的root路径卷标一致。把isolinux.bin设置成引导文件,勾选生成启动信息表。这个启动信息表就是最后文件夹中的ldlinux.sys启动信息文件。

    第四步:保存该镜像并通过启动-》写入硬盘映像来写到U盘中。这时候UItral So会自己主动的把syslinux.cfg文件盒ldlinux.sys文件生成在U盘上,而其它的文件也会拷贝到U盘上,这时候U盘里的isolinux.cfg能够删除掉,最后把安装系统的镜像拷到根文件夹下。

    注:U盘中没介绍的文件都是一些背景或者其它安装选项中调用的linux的检測工具。

  • 相关阅读:
    hibernate事务管理
    oracle的中文排序问题
    hibernate一级缓存
    Hibernate的实体规则、主键生成策略、对象状态
    【SVN】命令行忽略不必要的文件和文件夹
    【SVN】SVN的trunk、branches、tag的使用以及分支的概念
    hibernate介绍及环境搭建
    敏捷实践:比每日会议更疯狂的半日会议!
    Android开发之有效获取状态栏(StatusBar)高度
    jquery判断输入文字个数的统计代码
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5085947.html
Copyright © 2011-2022 走看看