根據自己喜好定制Linux系統
1、修改Linux系統的啟動菜單的背景圖片
默認情況下,Linux系統啟動時,grub菜單的背景圖片為/boot/grub/splash.xpm.gz,啟動時如圖1所示,我們可以修改linux系統的grub菜單背景圖片,此處我們修改為windos系統圖片(具體可以根據自己的喜好修改)。
圖一
在使用前需要將圖片轉化為Linux系統支持的圖片格式.xpm,需要使用convert命令轉化,如果系統沒有convert命令則需要安裝軟件包ImageMagick。轉化過程如下:
[[email protected] grub]# cd /boot/grub/
[[email protected] grub]# convert -resize 640x480 -colors 14 1.jpgwin.xpm
[[email protected] grub]# gzip win.xpm
[[email protected] 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加密,先生成加密字符串:
[[email protected] ~]# grub-md5-crypt
Password:
Retype password:
$1$35.oF/$UVcZ.CXw0MPuie76eaJw5/
加密字符串生成後,那我們就將grub密碼設置為加密的密碼,如圖8所示。
圖八
聽說md5加密算法已經被人破解了,感覺有點不安全,我麽我們幹脆用SHA512加密,同時再設置一個進入系統的密碼,同樣,我們先生成加密字符串:
[[email protected] ~]# 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。操作如下
[[email protected] ~]# mount /dev/sdb2 /mnt/sysroot/
[[email protected] ~]# mkdir -p/mnt/sysroot/{bin,boot,dev,etc,home,lib,lib64,media,mnt,opt,proc,root,ssbin,srv,sys,tmp,usr,var}
[[email protected] ~]# mount /dev/sdb1 /mnt/sysroot/boot/
(2)安裝grub及相關的內核文件
[[email protected] ~]# grub-install --root-directory=/mnt/sysroot/dev/sdb
[[email protected] ~]# cp /boot/vmlinuz-2.6.32-642.el6.x86_64/mnt/sysroot/boot/vmlinuz
[[email protected] ~]# cp /boot/initramfs-2.6.32-642.el6.x86_64.img/mnt/sysroot/boot/initramfs
[[email protected] ~]# ls /mnt/sysroot/boot/
grub initramfs lost+found vmlinuz
[[email protected] ~]# 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文件
[[email protected] ~]# vim /mnt/sysroot/boot/grub/grub.conf
default 0
timeout 3
title dayi123linux
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
(4)創建/etc/fstab文件
[[email protected] ~]# 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過去的命令。
[[email protected] ~]# 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
[[email protected] ~]# 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文件,並加入執行權限,這樣我們就可以以我們定制的系統單獨啟動了!!!,啟動後如圖十五所示。
[[email protected] ~]# vim /mnt/sysroot/sbin/init
#!/bin/sh
echo "welcome dayiliunx"
[[email protected] ~]# chmod +x /mnt/sysroot/sbin/init
圖十五
6、編譯安裝內核
(1)編譯安裝前準備工作:
編譯安裝前先安裝下開發包組“DevelopmentTools”,這樣可以避免在編譯安裝的時候出現很多問題,安裝前要確保你編譯安裝的目錄至少有10G的空閑空間,。同時需要到Linux內核官網(https://www.kernel.org/)下載內核並解壓,我的系統為centos7.3,我下載了最新的內核4.11,具體操作如下:
[[email protected] data]# yum groupinstall "DevelopmentTools" -y
[[email protected] data]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.11.tar.xz
[[email protected] data]# tar -xf linux-4.11.tar.xz
[[email protected] data]# du -sh linux-4.11
780M linux-4.11
(2)設置編譯安裝
基本準備工作完成後,我們就開始編譯安裝,首先我們先準備文本的配置文件,文本配置文件內容包括各種模塊的安裝,設置太多了,所以我們就幹脆將/boot目錄下的文本配置文件拷貝過來。其此,我們安裝一些基本的依賴包,以免在安裝時報錯,配置文件都是老司機安裝時總結出得,但未必適合你的系統,我們先安裝下。在安裝的過程中,還有依賴錯誤,我們再去安裝,具體操作如下:
[[email protected] data]#cd linux-4.11
[[email protected] linux-4.11]# cp /boot/config-3.10.0-514.el7.x86_64.config
[[email protected] linux-4.11]# yum install ncurses-devel -y
[[email protected] linux-4.11]#yum install openssl-devel
[[email protected] linux-4.11]#yum install bc –y
基本設置完成後,我們配置內核選項,根據我們的需求選擇需要的模塊及安裝方式(以模塊的方式安裝還是打入到內核中)。我們通過make menuconfig配置內核選項
[[email protected] 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文件中搜索查看。如下所示:
[[email protected] 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性能開啟多個進程,這樣會快些。
[[email protected] data]#cd /data/linux-4.11 #進到解壓目錄
[[email protected] linux-4.11]#make –j 2 #編譯以2個進程進行
編譯完成後,我們執行命令“make modules install”安裝模塊
[[email protected] linux-4.11]#make modules_install #安裝模塊
模塊安裝完成後,我們執行命令”make install”安裝內核相關的模塊:
[[email protected] linux-4.11]#make install
安裝內核後會在boot目錄下生成相關的內核文件,同時也會生成相關的模塊文件,如下所示:
[[email protected] 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你的電腦(也可以用下面的方法來實現):
#將配置寫入配置文件
[[email protected] ~]# echo "net.ipv4.icmp_echo_ignore_all =1" >>/etc/sysctl.conf
#使配置立即生效
[[email protected] ~]# /sbin/sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
[[email protected] ~]# sysctl -w net.ipv4.route.flush=1
net.ipv4.route.flush = 1
本文出自 “dayi123” 博客,請務必保留此出處http://dayi123.blog.51cto.com/12064061/1925349
根據自己喜好定制Linux系統