这是我前几天在马哥的带领下写的6个脚本,他们串起来就可以实现(一)篇一所有的功能,很方便吧我们以后要通过不断倒腾这个小linux,来由浅入深的学习linux的系统构架和调优,最后实现编译内核,真正意义上打造自己的Linux,如果你有兴趣,那我一起学习吧强烈建议自己动手写出这六个脚本,对脚本的学习帮助非常大。
这六个脚本其实就是(一)篇的几个步骤组合起来,它们连在一起就可以完全实现(一)篇的目的,六个脚本如下:
一、写一个脚本,实现将一个硬盘中原有分区信息全部删除,并重新将其分为三个区:
1、提示用户指定要操作的磁盘;如果此硬盘中有新区,显示分区信息,并判断此中分区是否仍然处于挂载状态;
如果是,则显示分区和对应的挂载点;否则,则说明分区没有挂载;
2、提示用户接下来操作会破坏硬盘上的所有数据,并询问用户是否继续进行;形如:Continue(y/N)?
如果用户选择继续,则抹除此硬盘上的所有分区信息(如果是仍处理挂载状态的分区,则需要先卸载);否则退出;
3、将此硬盘分为三个主分区:
第一个主分区,50M,ext3文件系统
第二个主分区,512M,ext3文件系统
第三个主分区,256M,swap文件系统
要求:上面第2和第3步要求用函数实现;函数执行结束要有返回值;
二、写一个脚本,实现将上述步骤中创建的分区挂载至某目录:
1、写一个函数,接受两个参数,完成以下功能:
参数1为/boot分区对应的设备,传递至函数之后将其挂载至/mnt/boot;
参数2为/分区对应的设备,传递至函数之后将其挂载至/mnt/sysroot;
说明:上述的挂载点/mnt/boot和/mnt/sysroot如果事先不存在,需要先创建;如果事先存在,
且已经被某设备挂载使用,则需要先卸载原来挂载的设备;
2、将第一个脚本中实现的分区1和分区2传递给些函数执行;三、写一个脚本,初始化rootfs
1、写一个函数,接受一个参数(参数为第二步骤中挂载的/mnt/sysroot),完成以下功能;
1)判断/mnt/sysroot是否存在并且如果存在是否是挂载的一个独立的分区,如果是,则继续后面的操作;否则,则提示用户错误信息,而后询问是否继续;
2)在/mnt/sysroot目录中创建如下子目录:
boot, proc, sys, dev, home, root, etc/{rc.d,sysconfig,init.d}, bin, sbin, lib, usr/{bin,sbin,lib,include}, var/{log,run}, tmp, mnt, opt, media;
3)将上面创建的tmp目录的权限设置为1777;
4)创建文件/mnt/sysroot/etc/inittab,内容如下:
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
5)创建文件/mnt/sysroot/etc/rc.d/rc.sysinit,内容如下:
#!/bin/bash
echo -e "\t\tWelcome to \033[31;1mLittle\033[0m Linux..."
mount -n -o remount,rw /
mount -n -a
/bin/bash
而后给此文件以执行权限;
6)创建文件/mnt/sysroot/etc/fstab,内容如下:
/dev/sda2 /ext3 defaults 0 0
/dev/sda1 /boot ext3 defaults 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
2、执行此函数四、写一个脚本,实现二进制命令及对应库文件的拷贝:
1、写一个函数,接受两个参数(参数1为要复制的命令,参数2为复制命令对应的目标位置,如/mnt/sysroot),完成以下功能:
1)判断参数1所对应的命令是否存在;如果存在:
取得其目录路径,及命令对应的文件的名字;
而后将此命令复制到参数2对应的路径下,跟此命令原来的目录路径相同的子目录中;
比如,如果参数2为/mnt/sysroot,而命令路径为/bin/ls,则需要将ls复制到/mnt/sysroot/bin目录;如果命令路径为/usr/bin/man,则需要将man复制至/mnt/sysroot/usr/bin/中去;
2)复制命令的同时,判定此命令所依赖的库文件,而后对每一个库文件做如下操作:
取得其目录路径,及命令对应的文件的名字;
而后将此命令复制到参数2对应的路径下,跟此命令原来的目录路径相同的子目录中;但如果此库文件已经复制过,则不需要再次复制;
2、执行此函数;五、写一个脚本,实现引导分区的设定:
1、写一个函数,接受一个参数(参数为目标Linux的boot目录),实现以下功能:
1)创建一个临时目录/tmp/litte.XX;
2)将宿主机的/boot/initrd-`uname -r`.img文件展开至临时目录;
3)修改展开而来的init文件:
a)注释掉如下行:
echo Scanning and configuring dmraid supported devices
echo Scanning logical volumes
lvm vgscan --ignorelockingfailure
echo Activating logical volumes
lvm vgchange -ay --ignorelockingfailure vol0
resume LABEL=SWAP-sda3
b)将如下行中的设备修改为你所需要的:
mkrootdev -t ext3 -o defaults,ro /dev/vol0/root
4)将修改好的内容重新封闭为cpio的归档文件,并gzip压缩后存放至参数所指定的目录;
5)复制/boot/vmlinuz-`uname -r`至参数所指定的目录,并重命令为vmlinuz;
2、执行此函数;
3、说明:此处的`uname -r`只是为了引用当前系统正在使用的内核和initrd文件,但这并非是必须。即如果你有其它内核和对应的initrd文件,也可使用。六、写一个脚本,为目标主机所以磁盘设定grub:
1、写一个函数,接受四个参数(参数1为目标磁盘,参数2为引导分区的挂载点,参数3为内核文件名,参数4为initrd文件名),完成以下功能:
1)判断挂载点路径的基名是否为boot,如果不是,则停止执行,并提示用户修改;否则,则继续下面的操作;
2)向目标磁盘安装grub;
3)在参数3中的子目录grub下建立文件grub.conf;内容类似如下内容:
default=0
timeout=10
title Little Linux
root (hd0,0)
kernel /$3
initrd /$4
2、执行此函数
好了,就是这6个脚本~写出来后对自己的帮助非常大!
下篇预告:打造自己的专属Linux(三):给小linux添加网络模块,实现关机重启,登录界面
分享到:
相关推荐
Linux运维自动化运维脚本.zip,自动化运维脚本 介绍 Linux系统运维中各种一键脚本 使用教程 openssh一键升级脚本,支持centos6、centos7、centos8。 Linux运维自动化运维脚本.zip,自动化运维脚本 介绍 Linux系统...
此脚本功能主要是远程服务器进行日常巡检,比如CPU型号,内存,网络,系统版本,系统名称,登录错误日志,当前登录的数量,以及dmesg错误日志,会输入到表格中,适合运维人员,需要在此脚本的目录下创建名为"Linux监控信息.xlsx...
sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对Linux服务器的监控。本文介绍一下使用Python脚本实现对Linux...
操作系统实验:使用脚本编译重装Linux内核,并增加一个打印缺页数的系统调用.zip 操作系统实验:使用脚本编译重装Linux内核,并增加一个打印缺页数的系统调用.zip 操作系统实验:使用脚本编译重装Linux内核,并增加...
kettle在linux状态下调用的脚本文件,自动化,一键运行,便于实施。
Linux常用命令 2 1.1 su用户切换 2 1.2 useradd 添加用户 2 1.3 passwd修改口令 2 1.4 ls查看文件/目录 3 1.5 cd改变工作目录 4 1.6 pwd显示工作目录 4 1.7 mkdir创建目录 5 1.8 rmdir删除空目录 5 1.9 cp文件/目录...
经典的自动化运维脚本 checkNmp abiao原创,可以实现在nginx宕机时候杀死进程让它自动重启,在php挂掉或者502状态时候,自动检测到服务资源异常,杀死进程重启服务,MySQL重启服务等等、、、
linux bash shell脚本文件.sh,自动输入sudo的密码 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码
Linux命令与shell 脚本大全,内容丰富,包含了shell脚本的技术命令 以及大量的实践内容
第一次接触linux系统,之前写的数据导出不好使了。原因是程序放在root用户下,要runtime执行exp的话,root不认exp命令;找了好多资料,最后决定写个shell脚本;没接触过shell脚本,网上大部分例子都写的挺复杂的;贴...
Linux下自动备份Mysql文件shell脚本。
本文主要对linux-shell脚本命令中的grep命令进行简介,希望对您有所帮助。
直接执行压缩包里面的mysql.sh即可,附带my.cnf配置文件,数据库版本5.6
交互方式修改密码 1. ssh 远程到主机; 2. 切换到root账号; [一般都是切换到root进行... 3. passwd username ... 使用该命令会有提示,即进入了交互界面,输入密码即可。...echo password | passwd testuser --stdin > /dev
bat脚本实现将Windows文件上传至Linux服务器 不同选项实现具体功能、检查资源存在 、 确认上传
linux脚本基本命令
针对suse linux定制开发,主要解决手动添加路由信息重启后丢失的问题,使用该脚本增加修改路由可以一劳永逸,试用下吧,欢迎交流。 Usage: proute {add|del|refresh|show|sync} HOST Netmask Gateway Modify routing...
教程名称:Linux搭建网络服务命令脚本合集课程目录:【】在linux中通过脚本安装apache网站web服务(完善版)【】在linux中通过脚本安装lamp架构(完善版)【】在linux中通过脚本安装mysql数据库服务(完善版)【】在...
sh格式,执行 sh linuxinspect.sh即可。...支持linux系统(centos)进行自动化的安全检测,包括账号策略检查、重要文件权限检查、ssh配置检查、日志检查等。 最终输出检查结果到目录:/tmp/out_.txt