以Linux的啓動流程來製作,預備條件:宿主機,獨立硬盤(也可以用鏡像文件)
第一步:分區,掛載,以下是分區腳本
#!/bin/bash
#DifinedVariable
#
BootPart=500M
RootPart=2G
read-p"Inputyourdiskthatneedtoformat:"Disk
(
/sbin/fdisk$Disk<<EOF
n
p
1
n
p
2
w
EOF
)&>/dev/null
mkfs.ext4${Disk}2&>/dev/null
第二步:安裝GRUB及其配置文件,以下是處理腳本
#
GrubRD=/mnt
read-p"Inputyourdiskforinstallinggrub:"Gbdisk
grub-install--root-directory=$GrubRD$Gbdisk
cd$GrubRD/boot/grub
cat>grub.conf<<EOF
timeout=5
default=0
titleWelcometousetinylinux(2.6.32)
root(hd0,0)
kernel/vmlinuzroroot=/dev/sda2selinux=0
initrd/initramfs.img
EOF
cp/boot/vmlinuz*/$GrubRD/boot/vmlinuz
cp/boot/initramfs*/$GrubRD/boot/initramfs.img
#
read-p"inputrealrootfs'spathfortinylinux:"Sysroot
cd${Sysroot:-/mnt/sysroot}
mkdir-pprocsysdevetc/{init,rc.d}lib/moduleslib64binsbinusr/{lib,lib64}var/{log,run,lock}
cat>./etc/init/rcS.conf<<EOF
startonstartup
consoleoutput
exec/etc/rc.d/rc.sysinit
EOF
#!/bin/bash
#
echo-e"\tWelcometocome\033[5;31mTinyLinux\033[0m"
/bin/bash
EOF
chmod+x./etc/rc.d/rc.sysinit
#!/bin/bash
#
DEST=/mnt/sysroot
libcp(){
LIBPATH=${1%/*}
[!-d$DEST$LIBPATH]&&mkdir-p$DEST$LIBPATH
[!-e$DEST${1}]&&cp-a$1*$DEST$LIBPATH&&echo"copylib$1finished."
}
CMDPATH=${1%/*}
[!-d$DEST$CMDPATH]&&mkdir-p$DEST$CMDPATH
[!-e$DEST${1}]&&cp$1$DEST$CMDPATH
if["$LIB"="/lib64/ld-linux-x86-64"];then
LIB=`echo$LIB|grep-o"/.*lib\(64\)\{0,1\}/[^-]\{1,\}"`
fi
libcp$LIB
done
}
until[$CMD=='q'];do
!which$CMD&&echo"Wrongcommand"&&read-p"Inputagain:"CMD&&continue
COMMAND=`which$CMD|grep-v"^alias"|grep-o"[^[:space:]]\{1,\}"`
bincp$COMMAND
echo"copy$COMMANDfinished."
read-p"Continue:"CMD
done
1.cp-a/etc/init/rc.conf.
2.建立rc腳本
#!/bin/bash
#
#creatercscript
#
Tiny_etc_dir=/mnt/sysroot/etc
[-d${Tiny_etc_dir}/rc.d]||mkdir-p${Tiny_etc_dir}/rc.d
cat>${Tiny_etc_dir}/rc.d/rc<<EOF
#!/bin/bash
#
RunLevel_Dir=/etc/rc.d/rc$1
foriin${RunLevel_Dir}/K*;do
if[-x$i];then
$istop
fi
done
if[-x$i];then
$istart
fi
done
EOF
chmod+x${Tiny_etc_dir}/rc.d/rc
mkdir-p/mnt/sysroot/etc/{init.d,rc0.d,rc6.d}
vim/mnt/sysroot/etc/init.d/halt
#!/bin/bash
#
case$0in
*halt)
echo"haltingthesystem......."
/sbin/halt-p
;;
*reboot)
echo"rebootingthesystem......"
/sbin/reboot
;;
*)
;;
esac
chmod+x/mnt/sysroot/etc/init.d/halt
cdrc0.d
ln-sv../init.d/haltS01halt
cdrc6.d
ln-sv../init.d/haltS01reboot
cat>/mnt/sysroot/etc/passwd<<EOF
root:x:0:0:root:/root:/bin/bash
EOF
cp-a/lib64/libnss_files*/mnt/sysroot/lib64/
1.拷貝init程序處理過程中與終端有關的配置文件
cp-a/etc/init/{tty.conf,start-ttys.conf,prefdm.conf}/mnt/sysroot/etc/init/
mkdir/mnt/sysroot/etc/{pam.d,security,sysconfig}
cp/etc/pam.d/{login,system-auth}/mnt/sysroot/etc/pam.d
cp/etc/security/{limits.conf,namespace.conf}/mnt/sysroot/etc/security/
cp/etc/sysconfig/init/mnt/sysroot/etc/sysconfig
mkdir/mnt/sysroot/lib64/security
foriin`awk'grep-o'pam.*so'/etc/pam.d/login`;docp-a/lib64/security/$i/mnt/sysroot/lib64/security/;done
foriin`awk'$3~"so$"{print$3}'/etc/pam.d/system-auth`;docp-a/lib64/security/$i/mnt/sysroot/lib64/security/;done
#!/bin/bash
#
#sethostname
./etc/sysconfig/network
/bin/hostname$HOSTNAME
mount-n-oremount,rw/
echo-e"\tWelcometocome\033[5;31mTinyLinux\033[0m"
#/bin/bash
1.建立運行級別"1"的目錄
mkdir/mnt/sysroot/etc/rc.d/rc1.d
2.拷貝宿主機的/etc/rc.d/init.d/single
cp/etc/rc.d/init.d/single/mnt/sysroot/etc/rc.d/init.d
cp/etc/rc.d/rc1.d/S99single/mnt/sysroot/etc/rc.d/rc1.d
cp/etc/init/rcS-sulogin.conf/mnt/sysroot/etc/init/
5.使用第四步腳本,拷貝rcS-sulogin.conf文件中出現的命令及其庫文件。