近些天在制作Linux的rootfs根文件系统时,需要频繁修改rootfs中的目录结构及配置(以在根文件系统中加入系统运行所需的模块与配置文件),但同时每次修改完毕后又要给普通文件夹rootfs制作为可启动的文件系统镜像rootfs.gz并且联合bzImage一起制作成标准光盘ISO镜像,以方便放在虚拟机中测试每次更改效果,因此萌发了用Shell自动完成提高效率,遂编写了mkiso脚本。
项目文件夹名称为diylinux,其目录结构如下:
diylinux
|--------rootcd
|--------rootfs
|--------src
| |---------linux2.6.20
| |---------busybox1.2.2
| |---------syslinux3.35
| |---------slitaz-tools-1.1
|---------slitaz-cooking.iso
|---------mkiso
mkiso Shell 脚本内容如下:
#!/bin/sh
# ~/Projects/diylinux/mkiso: make slitaz.iso for rootfs
#
# define variable
DIYLINUX=~/Projects/diylinux
ROOTFS=$DIYLINUX/rootfs
ROOTCD=$DIYLINUX/rootcd/boot
#check command execute success or faild
status()
{
STATUS=$?
#echo -en "\033[68G"
if [ "$STATUS" -eq 0 ] ; then
echo "\033[1m[OK]\033[0m"
else
echo "\033[1m[Failed]\033[0m"
fi
}
echo "make slitaz.iso begin..."
cd $ROOTCD
if [ -f rootfs.gz ] ; then
echo "$DIYLINUX/rootfs.gz already exists and will be delete..."
rm -f rootfs.gz
status
fi
#generate rootfs.gz in directory rootcd
cd $ROOTFS
echo "$ROOTCD/rootfs.gz is generating..."
find . -print | cpio -o -H newc | gzip -9 > $ROOTCD/rootfs.gz
status
cd $DIYLINUX
if [ -f slitaz-cooking.iso ] ; then
echo "$ROOTCD/slitaz-cooking.iso already exists and will be delete..."
rm -f slitaz-cooking.iso
status
fi
echo "$ROOTCD/slitaz-cooking.iso is generating..."
mkisofs -R -o slitaz-cooking.iso -b boot/isolinux/isolinux.bin \
-c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd
status
echo "sucessfully!!!"
浙公网安备 33010602011771号