首页 > 代码库 > 根据自己喜好定制Linux系统
根据自己喜好定制Linux系统
1、修改Linux系统的启动菜单的背景图片
默认情况下,Linux系统启动时,grub菜单的背景图片为/boot/grub/splash.xpm.gz,启动时如图1所示,我们可以修改linux系统的grub菜单背景图片,此处我们修改为windos系统图片(具体可以根据自己的喜好修改)。
图一
在使用前需要将图片转化为Linux系统支持的图片格式.xpm,需要使用convert命令转化,如果系统没有convert命令则需要安装软件包ImageMagick。转化过程如下:
[root@dayi123 grub]# cd /boot/grub/
[root@dayi123 grub]# convert -resize 640x480 -colors 14 1.jpgwin.xpm
[root@dayi123 grub]# gzip win.xpm
[root@dayi123 grub]# grep -i "s#splashimage=(hd0,0)/grub/splash.xpm.gz#splashimage=
(hd0,0)/grub/win.xpm.gz#g" /boot/grub/grub.conf
改变后的grub引导菜单如图二所示:
图二
2、将Linux系统的运行级别改为6,然后恢复
Linux系统运行级别6级别为重启,如果将系统运行级别改为6,则系统无法正常启动,开机后一直处于重启的死循环中(如果同学或者朋友的系统Linux系统,可以恶搞一下,然后帮忙回复)。
更改系统运行级别为6(修改/etc/inittab文件最后一行数字为6,如图三所示):
图三
修改完成后下一次启动系统时系统会时,系统会一直处于重启的死循环中,无法正常启动起来。既然,能让系统启动不起来,那自然有办法让系统正常启动起来。那下面我们就来修复。
由于系统无法启动起来,所以我们不能通过正常的流程来修复;在系统启动的过程总,我们进入grub引导界面(在系统刚启动时的等待界面,我们按下任意键进入会进入grub菜单界面)如图四所示;此时,我们根据提示按下‘e’键,编辑grub,我们选择第二项内核,再次按下“e”进行编辑。在最后输入single或者1(如图五所示)意思为此次进入系统的1级别;修改完成后我们按下回车返回到上一级,在上一级我们按下“b”键让从当前的设置引导启动系统。由于我们设置系统的运行级别为1,所有在进入系统时不需要密码,系统启动完成后会直接进入系统,如图6所示。
图四
图五
图六
进入系统后,我们继续修改/etc/inittab将运行级别改回来(改为3或5),既然系统可以正常启动了,此时进入系统没有要求输入密码,我们是不是又可以搞点别的破坏了,比如,偷偷给root用户设置一个别的密码呢?
3、对grub加密
既然Linux系统这么不安全,别人在不知道我们系统密码的情况下,随便进入我们的修通,修改我们系统的密码。我们是不是应该做点防护措施了。既然,他们是通过修改编辑grub进入我们的系统,那我们干脆就将grub加密。
对grub加密,也就是设置密码文件,在/boot/grub/grub.conf配置文件的第三行设置密码,如图七所示。
图七
但是,按上面方法设置的密码是明文的,让别人随便瞄一眼就知道你的grub密码了,既然这样,那我们就给密码加密。我们使用md5加密,先生成加密字符串:
[root@dayi123 ~]# grub-md5-crypt
Password:
Retype password:
$1$35.oF/$UVcZ.CXw0MPuie76eaJw5/
加密字符串生成后,那我们就将grub密码设置为加密的密码,如图8所示。
图八
听说md5加密算法已经被人破解了,感觉有点不安全,我么我们干脆用SHA512加密,同时再设置一个进入系统的密码,同样,我们先生成加密字符串:
[root@dayi123 ~]# grub-crypt
Password:
Retype password:
$6$aaX9ZQMAZZrbDwiZ$nhx6gc1s9ICXeKtBMM41d3LtDTyY4Jnbg2Gp2JXALATFl.25DSuAEsYplSvQwBpayc6j0QUs17VhSkRiXNRkB0
生成完成后我们就设置密码,如图9所示:
图九
当设置密码后,我们编辑grub时需要密码,选择grub菜单进入系统是提示也要输入密码。这下,我们的系统密码不会轻易被人修改了。
4、删除/boot下所有及/etc/fstab
上面的几种玩法,感觉不好玩,不够刺激,那我们现在来点更刺激的,那我们进入系统后,执行下rm –rf /* ,这万万可使不得,如果真的这么做了,真的该跑路了。既然不能那样,那我们就这样,我们把执行如下命令:rm –rf /boot/* /etc/fstab,我们这样做相当于把硬盘的挂载文件,所有的与系统相关的引导文件都删除了。这样做后想让系统启动起来真的难啊!如果真的这么做了就要想办法恢复了......
(1)首先要修复fstab文件
我们先通过光盘修复模式进入一个bash,通过“fdisk -l”命令查看磁盘分区信息,然后建立挂载点,将分区挂载到挂载点(如果是逻辑卷,先要使用命令” vgchange -ay”激活逻辑卷),分别查看是分区分别属于哪个挂载点。然后挂载到系统根目录下,如图10所示,挂载后通过ls命令可以判断/dev/sda1为根目录(目录下的内容已被删除),/dev/sda3为根目录。
图10
挂载完成后我们需要在/mnt/sda3/etc/下新建fstab文件,将磁盘挂载信息写入其中,配置文件内容如图11所示,并重启,重新进入光盘修复模式。
图11
(2)修复引导文件
重新进入光盘修复模式后,确保分区已经正确挂载,此时,我们开始修复系统引导文件。修复过程如图12所示:
图十二
引导文件修复后我们需要生成内核文件vmlinuz和虚拟文件系统initramfs。我们可以通过安装内核来生成,安装内核前需要挂载光盘。具体安装过程如图十三所示。
图十三
安装完成户我们要新建/boot/grub/grub.conf文件,/boot/grub/grub.conf文件的配置如图十四所示,grub.conf文件生成后我们重新系统,如果不出意外,系统就可以正常启动了。
图十四
5、我们自制一个Linux系统,安装在自己的U盘中
(1)准备工作:找一个U盘,分两个区,文件系统格式化为ext4。分别用于挂载/boot和根/。格式化完成后创建根挂载点”/mnt/sysroot”,挂载根目录并在根目录下创建其他必须的目录,并挂载/boot。操作如下
[root@dayi123 ~]# mount /dev/sdb2 /mnt/sysroot/
[root@dayi123 ~]# mkdir -p/mnt/sysroot/{bin,boot,dev,etc,home,lib,lib64,media,mnt,opt,proc,root,ssbin,srv,sys,tmp,usr,var}
[root@dayi123 ~]# mount /dev/sdb1 /mnt/sysroot/boot/
(2)安装grub及相关的内核文件
[root@dayi123 ~]# grub-install --root-directory=/mnt/sysroot/dev/sdb
[root@dayi123 ~]# cp /boot/vmlinuz-2.6.32-642.el6.x86_64/mnt/sysroot/boot/vmlinuz
[root@dayi123 ~]# cp /boot/initramfs-2.6.32-642.el6.x86_64.img/mnt/sysroot/boot/initramfs
[root@dayi123 ~]# ls /mnt/sysroot/boot/
grub initramfs lost+found vmlinuz
[root@dayi123 ~]# ls /mnt/sysroot/boot/grub/
device.map iso9660_stage1_5 stage1 xfs_stage1_5
e2fs_stage1_5 jfs_stage1_5 stage2
fat_stage1_5 minix_stage1_5 ufs2_stage1_5
ffs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
(3)创建/mnt/sysroot/boot/grub下的grub.conf文件
[root@dayi123 ~]# vim /mnt/sysroot/boot/grub/grub.conf
default 0
timeout 3
title dayi123linux
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
(4)创建/etc/fstab文件
[root@dayi123 ~]# cat /mnt/sysroot/etc/fstab
UUID=605ccf9b-725b-4383-a0ac-a145072b3a80 /boot ext4 defaults 0 0
UUID=d8ebedaa-e6e8-4f90-8c70-cda8c5e122a0 / ext4 defaults 0 0
(5)copy所需要的命令及相关的库文件(我们通过脚本实现,在copy命令的,但是一定要记得不要忘了copy最重要的bash),copy完成后我们可以将根切换过去,使用我们copy过去的命令。
[root@dayi123 ~]# sh copycmd.sh
Please input a command: bash
Please input a command or quit: ip
Please input a command or quit: mv
Please input a command or quit: cp
Please input a command or quit: rm
Please input a command or quit: vi
[root@dayi123 ~]# chroot /mnt/sysroot/
bash-4.1# ls
bin dev home lib64 media opt root srv sys usr
boot etc lib lost+found mnt proc sbin ssbin tmp var
copy命令时我们通过脚本实现,脚本内容如下:
#!/bin/bash ch_root="/mnt/sysroot" [ ! -d $ch_root ] && mkdir $ch_root bincopy() { if which $1 &>/dev/null; then local cmd_path=`which --skip-alias $1` local bin_dir=`dirname $cmd_path` [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir} [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir} return 0 else echo "Command not found." return 1 fi } libcopy() { local lib_list=$(ldd `which --skip-alias $1` | grep -Eo ‘/[^[:space:]]+‘) for loop in $lib_list;do local lib_dir=`dirname $loop` [ -d ${ch_root}${lib_dir} ] || mkdir -p ${ch_root}${lib_dir} [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir} done } read -p "Please input a command: " command while [ "$command" != "quit" ];do if bincopy $command ;then libcopy $command fi read -p "Please input a command or quit: " command done
(6)为我们定制的Linux系统创建init文件,并加入执行权限,这样我们就可以以我们定制的系统单独启动了!!!,启动后如图十五所示。
[root@dayi123 ~]# vim /mnt/sysroot/sbin/init
#!/bin/sh
echo "welcome dayiliunx"
[root@dayi123 ~]# chmod +x /mnt/sysroot/sbin/init
图十五
6、编译安装内核
(1)编译安装前准备工作:
编译安装前先安装下开发包组“DevelopmentTools”,这样可以避免在编译安装的时候出现很多问题,安装前要确保你编译安装的目录至少有10G的空闲空间,。同时需要到Linux内核官网(https://www.kernel.org/)下载内核并解压,我的系统为centos7.3,我下载了最新的内核4.11,具体操作如下:
[root@localhost data]# yum groupinstall "DevelopmentTools" -y
[root@localhost data]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.11.tar.xz
[root@localhost data]# tar -xf linux-4.11.tar.xz
[root@localhost data]# du -sh linux-4.11
780M linux-4.11
(2)设置编译安装
基本准备工作完成后,我们就开始编译安装,首先我们先准备文本的配置文件,文本配置文件内容包括各种模块的安装,设置太多了,所以我们就干脆将/boot目录下的文本配置文件拷贝过来。其此,我们安装一些基本的依赖包,以免在安装时报错,配置文件都是老司机安装时总结出得,但未必适合你的系统,我们先安装下。在安装的过程中,还有依赖错误,我们再去安装,具体操作如下:
[root@localhost data]#cd linux-4.11
[root@localhost linux-4.11]# cp /boot/config-3.10.0-514.el7.x86_64.config
[root@localhost linux-4.11]# yum install ncurses-devel -y
[root@localhost linux-4.11]#yum install openssl-devel
[root@localhost linux-4.11]#yum install bc –y
基本设置完成后,我们配置内核选项,根据我们的需求选择需要的模块及安装方式(以模块的方式安装还是打入到内核中)。我们通过make menuconfig配置内核选项
[root@localhost linux-4.11]# make menuconfig
首先,我们选择我们编译安装的版本号,在页面中我们先选择“General setup”菜单,按下回车,然后选择第三行“local version– append to kernel release”回车,输入编译安装版本号信息,然后退出保存,操作如图十六所示。
图十六
其次,我们既然编译安装,那我们不妨在操作的时候选择一些其他功能,Linux默认不支持ntfs格式的文件系统,ext4文件系统驱动是以模块的方式安装到“/lib/modules/3.10.0-514.el7.x86_64/kernel/fs/ext4/ext4.ko”,我们不放在编译的时候设置ext4驱动直接打到内核中,并设置以模块的方式安装ntfs文件系统驱动。
我们首先设置将ext4文件系统驱动打到内核中,我们在图十六出现的第一个菜单中,找到“File systems”菜单,按下回车。如图十七所示,我们找到“TheExtended 4 (ext4)filesystem”按下空格,前面的“M”会变为“*”,如图十八所示。也就意味着编译安装时,ext4驱动会被打到内核中。
图十七
图十八
我们继续在图十七所示的界面中找到“NTFS file system support”,按下空格,前面会出现“M”号,如图十九所示。也就意味着在安装系统时以模块的方式安装NTFS文件系统的驱动,同时在选中下面出现的两项,也就是选中按下空格,前面出现“*”即可。设置完成后我们保存退出
十九
设置完成后我们可以检查下是不是选择了所需要的模块,可以在.config文件中搜索查看。如下所示:
[root@localhost linux-4.11]# grep -i ntfs .config
CONFIG_NTFS_FS=m
CONFIG_NTFS_DEBUG=y
CONFIG_NTFS_RW=y
(3)设置完成后我们就开始编译安装内核,需要在解压目录下
先执行命令” make –j 2”进行编译,编译非常耗时,编译时我们先查看下cpu,根据cpu性能开启多个进程,这样会快些。
[root@localhost data]#cd /data/linux-4.11 #进到解压目录
[root@localhost linux-4.11]#make –j 2 #编译以2个进程进行
编译完成后,我们执行命令“make modules install”安装模块
[root@localhost linux-4.11]#make modules_install #安装模块
模块安装完成后,我们执行命令”make install”安装内核相关的模块:
[root@localhost linux-4.11]#make install
安装内核后会在boot目录下生成相关的内核文件,同时也会生成相关的模块文件,如下所示:
[root@localhost boot]# ls /lib/modules/4.11.0-1.0dayilinux123/kernel/fs/nfs/
blocklayout filelayout flexfilelayout nfs.ko nfsv3.ko nfsv4.ko objlayout
config-3.10.0-514.el7.x86_64
grub
grub2
initramfs-0-rescue-24a2cfa5360f487e87dfb1ed47f3d34f.img
initramfs-3.10.0-514.el7.x86_64.img
initramfs-3.10.0-514.el7.x86_64kdump.img
initramfs-4.11.0-1.0dayilinux123.img
initrd-plymouth.img
symvers-3.10.0-514.el7.x86_64.gz
System.map
System.map-3.10.0-514.el7.x86_64
System.map-4.11.0-1.0dayilinux123
vmlinuz
vmlinuz-0-rescue-24a2cfa5360f487e87dfb1ed47f3d34f
vmlinuz-3.10.0-514.el7.x86_64
vmlinuz-4.11.0-1.0dayilinux123
至此我们的内核也就编译安装完成了,我们重新启动系统,在进入系统的时候,我门在grub菜单除选择我们自己编译安装的内核进入系统,进入系统后我们查看我们当前系统内核为我们编译安装的内核,如图20所示:
图20
(4)卸载编译安装的内核:
在编译安装内核之前,感觉编译安装内核很高大上;但是,在安装完成后,感觉也没什么卵用,况且我们系统自带的内核都是经过操作系统发行的官方测试过的,稳定性,兼容性都是不错的,既然没什么卵用,那我们干脆卸了吧!
清理操作(根据自己的需求选择清理):
make clean:清理大多数编译生成的文件,但会保留config文件等
make mrproper: 清理所有编译生成的文件、config及某些备份文件
make distclean:mrproper、patches以及编辑器备份文件
卸载操作:
1)删除/lib/modules/目录下不需要的内核库文件
2)删除/usr/src/linux/目录下不需要的内核源码
3)删除/boot目录下启动的内核和内核映像文件
4)更改grub的配置文件,删除不需要的内核启动列表
7、Linux系统的神奇目录/proc目录
(1)/proc目录:
1)作用:内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出
2)查看常用的信息
/proc/sys/fs/file-max该文件指定了可以分配的文件句柄的最大数目
/proc/cpuinfocpu 存放cpu信息
/proc/filesystems 内核当前支持的文件系统类型
/proc/mdstat多硬盘,RAID配置信息(md=multiple disks)
/proc/meminfoRAM使用的相关信息
/proc/modules所有加载到内核的模块列表
/proc/mounts系统中使用的所有挂载
/proc/stat所有的CPU活动信息
/proc/uptime系统已经运行了多久
/proc/swaps交换空间的使用情况
/proc/versionLinux内核版本和gcc版本
/proc/net网卡设备信息
/proc/ttytty设备信息
/proc/net/dev显示网络适配器及统计信息
/proc/vmstat虚拟内存统计信息
/proc/zoneinfo显示内存空间的统计信息
3)通过修改/proc来临时启用关闭系统某功能
修改主机名:echo "dayi123" > /proc/sys/kernel/hostname
禁ping(不允许别人ping你的主机):echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
(2)跟/proc目录相关的sysctl命令:
1)作用:sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中
2)配置文件:/etc/sysctl.conf
3)用法:
设置某参数 sysctl-w parameter=VALUE
通过读取配置文件设置参数 sysctl-p[/path/to/conf_file]
查看所有生效参数 sysctl -a
设置禁止别人ping你的电脑(也可以用下面的方法来实现):
#将配置写入配置文件
[root@localhost ~]# echo "net.ipv4.icmp_echo_ignore_all =1" >>/etc/sysctl.conf
#使配置立即生效
[root@localhost ~]# /sbin/sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
[root@localhost ~]# sysctl -w net.ipv4.route.flush=1
net.ipv4.route.flush = 1
本文出自 “dayi123” 博客,请务必保留此出处http://dayi123.blog.51cto.com/12064061/1925349
根据自己喜好定制Linux系统