实战操做自制一个小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的启动硬盘
谢谢浏览...