N21_第10周_作业

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

系统启动流程:POST -> BootSequence(BIOS)-> BootLoader(MBR)-> Kernel(ramdisk)-> rootfs(readonly)-> /sbin/init()

2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;
  (1) 为硬盘新建两个主分区;并为其安装grub;
  (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;
  (3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;
  (4) 为grub提供配置文件;
  (5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;

[root@www boot]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
First cylinder (1-522, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-522, default 522): +200M

 

Command (m for help): n
Partition number (1-4): 2
First cylinder (27-522, default 27): 
Using default value 27
Last cylinder, +cylinders or +size{K,M,G} (27-522, default 522): +3G

 

Command (m for help): p
Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 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: 0xb38f53ee

 

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          26      208813+  83  Linux
/dev/sdb2              27         419     3156772+  83  Linux

 

Command (m for help): w
The partition table has been altered!
[root@www boot]# cat /proc/partitions
major minor  #blocks  name

 

   8        0    8388608 sda
   8        1     204800 sda1
   8        2    6144000 sda2
   8        3     614400 sda3
   8       16    4194304 sdb
   8       17     208813 sdb1
   8       18    3156772 sdb2
[root@www ~]# mke2fs -t ext4 /dev/sdb1
[root@www ~]# mke2fs -t ext4 /dev/sdb2
[root@www ~]# mkdir /mnt/boot
[root@www ~]# mount /dev/sdb1 /mnt/boot
[root@www ~]# grub-install --root-directory=/mnt /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/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
[root@www ~]# cd /mnt
[root@www mnt]# ll
总用量 5
drwxr-xr-x  4 root root 1024 8月  16 22:14 boot
drwxr-xr-x. 4 root root 4096 8月  14 19:21 sysroot
[root@www mnt]# ll boot
总用量 13
drwxr-xr-x 2 root root  1024 8月  16 22:14 grub
drwx------ 2 root root 12288 8月  16 22:08 lost+found 
[root@www mnt]# cp /boot/vmlinuz-2.6.32-642.el6.i686 /mnt/boot/vmlinuz-2.6.32-l42.el6.i686
[root@www mnt]# cp /boot/initramfs-2.6.32-642.el6.i686.img /mnt/boot/initramfs-2.6.32-642.el6.i686.img
[root@www mnt]# vi /mnt/boot/grub/grub.conf
  编辑如下:
defaut=0
timeout=5
title CenOS
        root (hd0,0)
        kernel /vmlinuz-2.6.32-l42.el6.i686 ro root=/dev/sda2 selinux=0 init=/bin/bash
        initrd /initramfs-2.6.32-642.el6.i686.img
[root@www boot]#[root@www ~]# mount -t ext4 /dev/sdb2 /mnt/sysroot 
[root@www boot]#[root@www ~]# cd /mnt/sysroot
[root@www sysroot]# mkdir -p bin sbin usr tmp root dev proc sys var mnt media lib lib64 home 
[root@www sysroot]# ll
总用量 56
drwxr-xr-x. 2 root root 4096 8月  14 19:25 bin
drwxr-xr-x  2 root root 4096 8月  16 22:32 dev
drwxr-xr-x  2 root root 4096 8月  16 22:32 home
drwxr-xr-x. 2 root root 4096 8月  14 19:21 lib
drwxr-xr-x  2 root root 4096 8月  16 22:32 lib64
drwxr-xr-x  2 root root 4096 8月  16 22:32 media
drwxr-xr-x  2 root root 4096 8月  16 22:32 mnt
drwxr-xr-x  2 root root 4096 8月  16 22:32 proc
drwxr-xr-x  2 root root 4096 8月  16 22:32 root
drwxr-xr-x  2 root root 4096 8月  16 22:32 sbin
drwxr-xr-x  2 root root 4096 8月  16 22:32 sys
drwxr-xr-x  2 root root 4096 8月  16 22:32 tmp
drwxr-xr-x  2 root root 4096 8月  16 22:32 usr
drwxr-xr-x  2 root root 4096 8月  16 22:32 var        
 运用题8中的脚本把bashlscat复制到/mnt/sysroot,我这里把它编辑为了脚本shell25.sh
[root@www ~]# bash shell25.sh
please input a command which you want to cp to /mnt/sysroot,and "quit" is over:bash
Another command(quit): ls
Another command(quit): cat
Another command(quit): quit
然后退出当前虚拟机,新建一个虚拟机,然后在BIOS处设定该硬盘为第一启动项,启动。

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

系统安装完成后,anaconda一般都会在root 家目录生成一个当前系统的kickstart 文件,我参考这个文件制作我自己的kickstart文件。
[root@www ~]# cp anaconda-ks.cfg myks.cfg
[root@www ~]# vi myks.cfg 
下面是myks.cfg 内容:
# Kickstart file automatically generated by anaconda.and I modify it by myself

 

#version=DEVEL
install
cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$IjI6cJDojRCvIVR6$I59v2xYd8ikloSXoQH6MVZdUv/ikm0yNqBhrO8jXrlHY7iqbnE86sPPJ8sg.yfqs6oYCuG8TvogX.kjGY15nI1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all

 

part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --size=6000
part swap --size=600

  

repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

 

%packages --nobase
@core
%end

 

制作引导镜像的过程:
1.把安装光盘放入光驱
2.
[root@www ~]# mkdir /media/cdrom
[root@www ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@www ~]# ls /media/cdrom
CentOS_BuildTag  GPL     isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL
EULA             images  Packages  repodata                  RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Testing-6
[root@www ~]# mkdir /tmp/myiso
[root@www myiso]#cd /tmp/myiso
[root@www myiso]# cp /media/cdrom/isolinux /tmp/myiso -a -r
[root@www myiso]# cp -r -a /root/myks.cfg /tmp/myiso
[root@www myiso]# ll
总用量 8
dr-xr-xr-x. 2 root root 4096 5月  22 12:17 isolinux
-rw-------. 1 root root  903 8月  17 19:20 myks.cfg
[root@www myiso]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 x86_64 
boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
这样我们就在/root目录下创建了名为boot.iso的光盘引导镜像

4、写一个脚本
  (1) 能接受四个参数:start, stop, restart, status
   start: 输出“starting 脚本名 finished.”
   …
  (2) 其它任意参数,均报错退出;

5、写一个脚本,判断给定的用户是否登录了当前系统;
  (1) 如果登录了,则显示用户登录,脚本终止;
  (2) 每3秒钟,查看一次用户是否登录;

6、写一个脚本,显示用户选定要查看的信息;

   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;

7、写一个脚本
  (1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;
  (2) 提示用户输入一个用户名或输入“quit”退出;
    当输入的是用户名,则调用函数显示用户信息;
    当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit:

8、写一个脚本,完成如下功能(使用函数)
   (1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;
   (2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;
   (3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求;


原创文章,作者:365,如若转载,请注明出处:/58890

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达开户  万达主管QQ  guoqibee.com  万达开户  万达招商  万达娱乐登录  万达招商QQ  测试  万达娱乐平台