實戰操做自制一個小Linuxbash
概述:經過前面的系統啓動流程,咱們大體知道了Linux系統啓動時都須要哪些文件和步驟,知道了這些理論內容,如今咱們能夠本身動手製做一個本身的小Linux。ide
實踐步驟:oop
一、在已有的Linux添加新的硬盤測試
二、對此新的硬盤進行分區,兩個分區分別爲/boot和/分區( 爲自制的Linux下所準備的)ui
三、將剛剛的分區格式化並掛載至兩個目錄上(我這裏爲/mnt/boot和/mnt/sysroot)spa
四、在此新硬盤上安裝grub而且編寫grub配置文件3d
五、將vmlinuz文件和initramfs文件拷貝至/mnt/boot目錄下blog
六、在/mnt/sysroot下建立小Linux的根文件系統ip
七、拷貝bash以及一些經常使用的命令及其對應的庫文件至/mnt/sysroot下對應的目錄下get
八、新開一個Linux並使用剛剛那塊磁盤啓動測試
具體操做:
一、在已有的Linux添加新的硬盤
二、對此新的硬盤進行分區,兩個分區分別爲/boot和/分區( 爲自制的Linux下所準備的)
三、將剛剛的分區格式化並掛載至兩個目錄上(我這裏爲/mnt/boot和/mnt/sysroot)
四、在此新硬盤上安裝grub而且編寫grub配置文件(grub配置文件可copy本機的grub.conf文件,將內容改成如下內容便可)
五、將vmlinuz文件和initramfs文件拷貝至/mnt/boot目錄下
六、在/mnt/sysroot下建立小Linux的根文件系統
七、拷貝bash以及一些經常使用的命令及其對應的庫文件至/mnt/sysroot下對應的目錄下
[root@localhost ~]# cat copycmd.sh #!/bin/bash ch_root="/mnt/sysroot" //此目錄與上面的/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
八、新開一個Linux並使用剛剛那塊磁盤做爲新的Linux的啓動硬盤
謝謝瀏覽...