linux系统作业,求代码过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统作业,求代码过程相关的知识,希望对你有一定的参考价值。

谢谢!
Linux内核配置系统由三部组别:
?Makefile:布 Linux 内核源代码 Makefile定义 Linux 内核编译规则;
?配置文件(config.in):给用户提供配置选择功能;
?配置工具:包括配置命令解释器(配置脚本使用配置命令进行解释)配置用户界面(提供基于字符界面、基于 Ncurses 图形界面及基于 Xwindows 图形界面用户配置界面各自应于 Make config、Make menuconfig make xconfig)
些配置工具都使用脚本语言 Tcl/TK、Perl 编写(包含些用 C 编写代码)本文并配置系统本身进行析介绍何使用配置系统所除非配置系统维护者般内核发者须解原理需要知道何编写 Makefile 配置文件所本文我 Makefile 配置文件进行讨论另外凡涉及与具体 CPU 体系结构相关内容我都 ARM 例仅讨论问题明确化且内容本身产影响
2. Makefile
2.1 Makefile 概述
Makefile 作用根据配置情况构造需要编译源文件列表别编译并目标代码链接起终形 Linux 内核二进制文件
由于 Linux 内核源代码按照树形结构组织所 Makefile 布目录树Linux 内核 Makefile 及与 Makefile 直接相关文件:

?Makefile:顶层 Makefile整内核配置、编译总体控制文件
?.config:内核配置文件包含由用户选择配置选项用存放内核配置结( make config)
?arch/*/Makefile:位于各种 CPU 体系目录 Makefile arch/arm/Makefile针特定平台 Makefile
?各目录 Makefile:比 drivers/Makefile负责所目录源代码管理
?Rules.make:规则文件所 Makefile 使用
用户通 make config 配置产 .config顶层 Makefile 读入 .config 配置选择顶层 Makefile 两主要任务:产 vmlinux 文件内核模块(module)达目顶层 Makefile 递归进入内核各目录别调用位于些目录 Makefile至于底进入哪些目录取决于内核配置顶层 Makefile 句:include arch/$(ARCH)/Makefile包含特定 CPU 体系结构 Makefile Makefile 包含平台相关信息
位于各目录 Makefile 同根据 .config 给配置信息构造前配置需要源文件列表并文件 include $(TOPDIR)/Rules.make
Rules.make 文件起着非重要作用定义所 Makefile 共用编译规则比需要本目录所 c 程序编译汇编代码需要 Makefile 编译规则:
%.s: %.c
$(CC) $(CFLAGS) -S $< -o $@

目录都同要求需要各自 Makefile 包含编译规则比较麻烦 Linux 内核则类编译规则统放置 Rules.make 并各自 Makefile 包含进 Rules.make(include Rules.make)避免 Makefile 重复同规则于面例 Rules.make 应规则:
%.s: %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F)) $(CFLAGS_$@) -S $< -o $@

2.2 Makefile 变量
顶层 Makefile 定义并向环境输许变量各目录 Makefile 传递些信息些变量比 SUBDIRS仅顶层 Makefile 定义并且赋初值且 arch/*/Makefile 作扩充
用变量几类:
1) 版本信息
版本信息:VERSIONPATCHLEVEL, SUBLEVEL, EXTRAVERSIONKERNELRELEASE版本信息定义前内核版本比 VERSION=2PATCHLEVEL=4SUBLEVEL=18EXATAVERSION=-rmk7共同构内核发行版本KERNELRELEASE:2.4.18-rmk7
2) CPU 体系结构:ARCH
顶层 Makefile 用 ARCH 定义目标 CPU 体系结构比 ARCH:=arm 等许目录 Makefile 要根据 ARCH 定义选择编译源文件列表
3) 路径信息:TOPDIR, SUBDIRS
TOPDIR 定义 Linux 内核源代码所根目录例各目录 Makefile 通 $(TOPDIR)/Rules.make 找 Rules.make 位置
SUBDIRS 定义目录列表编译内核或模块顶层 Makefile 根据 SUBDIRS 决定进入哪些目录SUBDIRS 值取决于内核配置顶层 Makefile SUBDIRS 赋值 kernel drivers mm fs net ipc lib;根据内核配置情况 arch/*/Makefile 扩充 SUBDIRS 值参见4)例
4) 内核组信息:HEAD, CORE_FILES, NETWORKS, DRIVERS, LIBS
Linux 内核文件 vmlinux 由规则产:
vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs
$(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o
--start-group
$(CORE_FILES)
$(DRIVERS)
$(NETWORKS)
$(LIBS)
--end-group
-o vmlinux
看vmlinux 由 HEAD、main.o、version.o、CORE_FILES、DRIVERS、NETWORKS LIBS 组些变量( HEAD)都用定义连接 vmlinux 目标文件库文件列表其HEADarch/*/Makefile 定义用确定先链接进 vmlinux 文件列表比于 ARM 系列 CPUHEAD 定义:
HEAD := arch/arm/kernel/head-$(PROCESSOR).o
arch/arm/kernel/init_task.o
表明 head-$(PROCESSOR).o init_task.o 需要先链接 vmlinux PROCESSOR armv 或 armo取决于目标 CPU CORE_FILESNETWORKDRIVERS LIBS 顶层 Makefile 定义并且由 arch/*/Makefile 根据需要进行扩充 CORE_FILES 应着内核核文件 kernel/kernel.omm/mm.ofs/fs.oipc/ipc.o看些组内核重要文件同arch/arm/Makefile CORE_FILES 进行扩充:
# arch/arm/Makefile
# If we have a machine-specific directory, then include it in the build.
MACHDIR := arch/arm/mach-$(MACHINE)
ifeq ($(MACHDIR),$(wildcard $(MACHDIR)))
SUBDIRS += $(MACHDIR)
CORE_FILES := $(MACHDIR)/$(MACHINE).o $(CORE_FILES)
endif
HEAD := arch/arm/kernel/head-$(PROCESSOR).o
arch/arm/kernel/init_task.o
SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe
CORE_FILES := arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
LIBS := arch/arm/lib/lib.a $(LIBS)

5) 编译信息:CPP, CC, AS, LD, ARCFLAGSLINKFLAGS
Rules.make 定义编译通用规则具体特定场合需要明确给编译环境编译环境变量定义针交叉编译要求定义 CROSS_COMPILE比:
CROSS_COMPILE = arm-linux-
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
......
CROSS_COMPILE 定义交叉编译器前缀 arm-linux-表明所交叉编译工具都 arm-linux- 所各交叉编译器工具前都加入 $(CROSS_COMPILE)组完整交叉编译工具文件名比 arm-linux-gcc
CFLAGS 定义传递给 C 编译器参数
LINKFLAGS 链接 vmlinux 由链接器使用参数LINKFLAGS arm/*/Makefile 定义比:
# arch/arm/Makefile
LINKFLAGS :=-p -X -T arch/arm/vmlinux.lds

6) 配置变量CONFIG_*
.config 文件许配置变量等式用说明用户配置结例 CONFIG_MODULES=y 表明用户选择 Linux 内核模块功能
.config 顶层 Makefile 包含形许配置变量每配置变量具确定值:y 表示本编译选项应内核代码静态编译进 Linux 内核;m 表示本编译选项应内核代码编译模块;n 表示选择编译选项;根本没选择配置变量值空
2.3 Rules.make 变量
前面讲Rules.make 编译规则文件所 Makefile 都包括 Rules.makeRules.make 文件定义许变量重要些编译、链接列表变量
O_OBJSL_OBJSOX_OBJSLX_OBJS:本目录需要编译进 Linux 内核 vmlinux 目标文件列表其 OX_OBJS LX_OBJS "X" 表明目标文件使用 EXPORT_SYMBOL 输符号
M_OBJSMX_OBJS:本目录需要编译装载模块目标文件列表同MX_OBJS "X" 表明目标文件使用 EXPORT_SYMBOL 输符号
O_TARGETL_TARGET:每目录都 O_TARGET 或 L_TARGETRules.make 首先源代码编译 O_OBJS OX_OBJS 所目标文件使用 $(LD) -r 链接 O_TARGET 或 L_TARGETO_TARGET .o 结尾 L_TARGET .a 结尾
参考技术A

你网上随便搜一下Linux文件权限,主要是chmod,chown这两个命令看一看就明白了!

    mkdir test

    touch file1

    chmod o+w file1

    chmod g-r file1

    chmod 755 file1

    chmod 400 file1

二、

    chmod 744 backup.tar.gz

    chmod 777 backup.tar.gz

    chmod 755 backup.tar.gz

    chgrp adm backup.tar.gz

    chown adm backup.tar.gz

Linux系统管理第六周作业Linux微职位

1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)

CentOS系统启动流程如下:

POST --> Boot Sequence(BIOS) --> Boot Loader(MBR) --> GRUB --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init --> 


(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端


每个过程具体工作内容说明如下:

1.加电自检POST(Power On Self Test)

主机加电开机后,首先进行硬件自检。主机通电后,主板会自动读取ROM中的程序,并从CMOS中加载BIOS信息,检查各种硬件设备是否完整,如内存,硬盘、显卡及各种I/O设备等。如遇到硬件故障的话将按两种情况进行处理:对于严重故障(致命性故障)则直接停机,此时由于各种初始化操作未完成,不能给出任何提示或信号;对于非严重故障,则会给出相应的提示或声音报警信号,等待用户处理。如果没有遇到故障,则加电自检通过,将后续工作交接给BIOS处理。

       

2.启动顺序Boot Sequence

POST完成后,系统控制权转交到BIOS(Basic Input/Output System),BIOS通过预设的参数识别基础硬件设备,启动硬件初始化;同时按照系统启动顺序依次查找各引导设备,第一个有引导程序的设备即为本次启动用到设备(一般为本地硬盘)。BIOS完成相关工作后,将后续工作交接给MBR中的Bootloader处理。

       

3.启动加载BootLoader

硬盘上第0头0道第1扇区被称为MBR(Master Boot Record),即主引导记录。虽然MBR仅有512个字节,但却存放了前446个字节的启动加载器(Bootloader,其中装有GRUB)、中间64个字节的磁盘分区表(Disk Partition Table)以及最后2个字节的结束标识(Magic Number)。启动设备读取MBR中前个446字节的Bootloader寻找GRUB,接着读取MBR后的扇区来识别磁盘分区表DPT以及内核Kernel所在的区域,最后启动GRUB。        


4.引导加载器GRUB(GRand Uniform Bootloader)

第1阶段(stage 1)

读取磁盘设备上第0头0道第1扇区的MBR;用来加载第2阶段, 只存放了Bootloader的部分代码

第1.5阶段(stage 1.5)

读取MBR之后的扇区,让第1阶段中的Bootloader能够识别到第2阶段所在分区上的文件系统

第2阶段(stage 2)

找到grub的配置文件(/boot/grub/grub.conf <-- /etc/grub.conf或/boot/grub2/grub.cfg),并根据其中的预设内容给用户提供一个可选择的菜单,用于选择想要启动的系统或内核版本。同时stage2即/boot/目录下还提供了Linux系统内核文件(vmlinuz文件)和虚拟文件系统文件(initramfs)等其它核心文件。

最后,GRUB把用户选定的启动系统或内核装载到内存中的特定空间中解压、展开,并把系统控制权移交给内核Kernel。


5.加载Kernel

自身初始化        

探测可识别到的所有硬件设备;

加载硬件驱动程序(有可能会借助于ramdisk加载驱动);

以只读方式挂载根文件系统rootfs;

切换至根文件系统switchroot;

运行用户空间的第一个应用程序:/sbin/init

至此,内核初始化完成,后续任务交给用户空间程序,只在模式切换或系统发生中断时,内核才会参与。


6.初始化init

/sbin/init最主要的功能就是准备系统运行环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其他服务的启动等

init程序的类型:

CentOS 5:SysV init

配置文件:/etc/inittab


CentOS 6:Upstart init

配置文件:/etc/inittab, /etc/init/*.conf


CentOS 7:Systemd systemd

配置文件:/usr/lib/systemd/system, /etc/systemd/system


7.配置文件/etc/inittab,设置默认运行级别

运行级别:为了系统的运行或维护等应用目的而设定;

0-6:7个级别

0:关机

1:单用户模式(root, 无须登录), single, 维护模式;

2: 多用户模式,会启动网络功能,但不会启动NFS;维护模式;

3:多用户模式,正常模式;文本界面;

4:预留级别;可同3级别;

5:多用户模式,正常模式;图形界面;

6:重启


8.配置文件/etc/rc.d/rc.sysinit,运行系统初始化脚本,完成系统初始化

(1) 设置主机名;    

(2) 设置欢迎信息;    

(3) 激活udev和selinux;     

(4) 挂载/etc/fstab文件中定义的文件系统;    

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;    

(6) 设置系统时钟;    

(7) 激活swap设备;    

(8) 根据/etc/sysctl.conf文件设置内核参数;    

(9) 激活lvm及software raid设备;    

(10) 加载额外设备的驱动程序;    

(11) 清理操作;

    

9.对应脚本程序,关闭需要关闭的服务,启动需要启动服务 

根据运行级别的不同,系统会运行/etc/rc.d/rc0.d到/etc/rc.d/rc6.d中的响应的脚本程序,来完成相应服务的关闭和启动,并执行用户自定义开机启动程序脚本/etc/rc.d/rc.local。


10.配置文件/sbin/mingetty,设置启动终端

mingetty会调用/etc/login程序,登入成功后,整个系统启动流程完成。  



2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;

(1) 为硬盘新建两个主分区;并为其安装grub;

[[email protected] Desktop]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xac72d6fd
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263         524     2104515   83  Linux
Command (m for help): q
[[email protected] Desktop]# mke2fs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] Desktop]# mke2fs -t ext4 /dev/sdb2
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526128 blocks
26306 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] Desktop]# mkdir -p /mnt/myboot /mnt/myroot
[[email protected] Desktop]# mount /dev/sdb1 /mnt/myboot/
[[email protected] Desktop]# mount /dev/sdb2 /mnt/myroot/
[[email protected] Desktop]# ls /mnt/myboot/
lost+found
[[email protected] ~]# grub-install --root-directory=/mnt/myboot /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt/myboot/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.
(fd0)/dev/fd0
(hd0)/dev/sda
(hd1)/dev/sdb
[[email protected] ~]# ls /mnt/myboot/boot/
grub


(2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;

[[email protected] ~]# cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /mnt/myboot/boot/vmlinuz
[[email protected] ~]# cp /boot/initramfs-2.6.32-573.el6.x86_64.img /mnt/myboot/boot/initramfs.img
[[email protected] ~]# ls /mnt/myboot/boot/grub  initramfs.img  vmlinuz
[[email protected] ~]# mkdir -pv /mnt/myroot/{bin,dev,etc/{rc.d/init.d,sysconfig/network-
scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
mkdir: created directory `/mnt/myroot/bin‘
mkdir: created directory `/mnt/myroot/dev‘
mkdir: created directory `/mnt/myroot/etc‘
mkdir: created directory `/mnt/myroot/etc/rc.d‘
mkdir: created directory `/mnt/myroot/etc/rc.d/init.d‘
mkdir: created directory `/mnt/myroot/etc/sysconfig‘
mkdir: created directory `/mnt/myroot/etc/sysconfig/network-scripts‘
mkdir: created directory `/mnt/myroot/lib‘
mkdir: created directory `/mnt/myroot/lib/modules‘
mkdir: created directory `/mnt/myroot/lib64‘
mkdir: created directory `/mnt/myroot/proc‘
mkdir: created directory `/mnt/myroot/sbin‘
mkdir: created directory `/mnt/myroot/sys‘
mkdir: created directory `/mnt/myroot/tmp‘
mkdir: created directory `/mnt/myroot/usr‘
mkdir: created directory `/mnt/myroot/usr/local‘
mkdir: created directory `/mnt/myroot/usr/local/bin‘
mkdir: created directory `/mnt/myroot/usr/local/sbin‘
mkdir: created directory `/mnt/myroot/var‘
mkdir: created directory `/mnt/myroot/var/lock‘
mkdir: created directory `/mnt/myroot/var/log‘
mkdir: created directory `/mnt/myroot/var/run‘


(3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;

[[email protected] ~]# cp `ldd /bin/{bash,ls,cat} | grep -oe "/lib.*[[:space:]]" | sort -u` /mnt/myroot/lib64/
[[email protected] ~]# chroot /mnt/myroot/
bash-4.1# ls
bin  dev  etc  lib  lib64  lost+found  proc  sbin  systmp  usr  var
bash-4.1# exit
exit
[[email protected] ~]# sync


(4) 为grub提供配置文件;

[[email protected] ~]# vim /mnt/myboot/boot/grub/grub.conf
[[email protected] ~]# cat /mnt/myboot/boot/grub/grub.conf
default=0
timeout=5
title MyCentOS6
root hd(0,0)
kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs.img


(5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;

[[email protected] ~]# init 6

重启后进入bios设置 调整硬盘启动顺序后保存退出。



3、制作一个kickstart文件以及一个引导镜像。描述其过程。

1.制作一个kickstart文件

一般通过system-config-kickstart工具(默认系统不自带,需要另行安装)或手动编辑(可参考/root/anaconda-ks.cfg)来创建ks.cfg的kickstart文件

关键字段说明如下:

#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
# 安装介质,可以是光驱或指定URL路径(http或ftp)
cdrom
# Run the Setup Agent on first boot
# 首次引导禁用代理
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
# 键盘样式
keyboard --vckeymap=us --xlayouts=‘us‘
# System language
# 系统语言
lang en_US.UTF-8
# Network information
network  --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto
network  --hostname=localhost.localdomain
# Root password
# 加密后的root密码
rootpw --iscrypted $6$vrl5aUHW0KQkjl36$NKJRP/JGTiPV65ZAHKsa.T2jREHzBeQLUU1VHQHfLdAj2Zin4P74Mg6o96Ac3nKJnDDW2vvQ4KiSW7wT8X2tj.
# System timezone
# 系统时区
timezone Asia/Shanghai --isUtc
# X Window System configuration information
xconfig  --startxonboot
# System bootloader configuration
# 系统引导配置,在MBR安装引导程序
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
# 清空所有磁盘内容并初始化
clearpart --all --initlabel
# Disk partitioning information
# 自定义分区
part /boot --fstype="ext4" --size=500
part swap --fstype="swap" --size=2000
part / --fstype="ext4" --grow --size=1
# Firewall configuration
# 防火墙设置为关闭
firewall --disabled
# SELinux configuration
# SElinux设置为禁用
selinux --disabled
# 程序包段
%packages
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end


2.准备系统ISO镜像(RHEL7),并复制到自己要创建的引导镜像

[[email protected] ~]# mount /dev/cdrom /media/cdrom/
[[email protected] ~]# cd /media/cdrom/
[[email protected] ~]# mkdir /mnt/iso
[[email protected] cdrom]# ls -al
total 819
dr-xr-xr-x. 10 root root   4096 May  7  2014 .
drwxr-xr-x.  3 root root     18 Aug  2  2016 ..
dr-xr-xr-x.  4 root root   2048 May  7  2014 addons
-r--r--r--.  1 root root     48 May  7  2014 .discinfo
dr-xr-xr-x.  3 root root   2048 May  7  2014 EFI
-r--r--r--.  1 root root   8266 Apr  4  2014 EULA
-r--r--r--.  1 root root  18092 Mar  6  2012 GPL
dr-xr-xr-x.  3 root root   2048 May  7  2014 images
dr-xr-xr-x.  2 root root   2048 May  7  2014 isolinux
dr-xr-xr-x.  2 root root   2048 May  7  2014 LiveOS
-r--r--r--.  1 root root    108 May  7  2014 media.repo
dr-xr-xr-x.  2 root root 774144 May  7  2014 Packages
dr-xr-xr-x. 24 root root   6144 May  7  2014 release-notes
dr-xr-xr-x.  2 root root   4096 May  7  2014 repodata
-r--r--r--.  1 root root   3375 Apr  1  2014 RPM-GPG-KEY-redhat-beta
-r--r--r--.  1 root root   3211 Apr  1  2014 RPM-GPG-KEY-redhat-release
-r--r--r--.  1 root root   1568 May  7  2014 TRANS.TBL
-r--r--r--.  1 root root   2166 May  7  2014 .treeinfo
[[email protected] cdrom]# cp -a * /mnt/iso/
[[email protected] cdrom]# cp .discinfo /mnt/iso/


3.将制作完成的ks文件与镜像文件整合

[[email protected] cdrom]# cp /root/ks.cfg /mnt/iso/isolinux/
[[email protected] cdrom]# cd /mnt/iso/isolinux/
[[email protected] isolinux]# ll
total 72840
-r--r--r--. 1 root root     2048 May  7  2014 boot.cat
-r--r--r--. 1 root root       84 May  7  2014 boot.msg
-r--r--r--. 1 root root      321 May  7  2014 grub.conf
-r--r--r--. 1 root root 35544564 May  7  2014 initrd.img
-r--r--r--. 1 root root    24576 May  7  2014 isolinux.bin
-r--r--r--. 1 root root     3166 May  7  2014 isolinux.cfg
-rw-------. 1 root root     1044 Jun 21 00:48 ks.cfg
-r--r--r--. 1 root root   176500 Jan  2  2014 memtest
-r--r--r--. 1 root root      186 Mar  3  2014 splash.png
-r--r--r--. 1 root root     2438 May  7  2014 TRANS.TBL
-r--r--r--. 1 root root 33744152 May  7  2014 upgrade.img
-r--r--r--. 1 root root   155792 Feb 28  2014 vesamenu.c32
-r-xr-xr-x. 1 root root  4902000 May  5  2014 vmlinuz


修改isolinux.cfg配置文件,在append initrd=initrd.img添加ks文件读取路径inst.ks=cdrom:/isolinux/ks.cfg

[[email protected] isolinux]# vim isolinux.cfg 
[[email protected] isolinux]# cat isolinux.cfg | grep ks
  append initrd=initrd.img inst.ks=cdrom:/isolinux/ks.cfg inst.stage2=hd:LABEL=RHEL7 quiet


4.创建引导光盘

[[email protected] isolinux]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "RHEL 7.0 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/RHEL7.iso /mnt/iso/
[[email protected] isolinux]# ll /root/RHEL7.iso 
-rw-r--r--. 1 root root 3843938304 Jun 21 01:11 /root/RHEL7.iso

以上是关于linux系统作业,求代码过程的主要内容,如果未能解决你的问题,请参考以下文章

寒假作业03

2017-2018-1 20179215《Linux内核原理与分析》第九周作业

Linux内核分析第五周作业

Linux系统管理第六周作业Linux微职位

Linux系统管理第六周作业Linux微职位

实验四:Linux系统与应用