#DO-IT

重复就是罪恶
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

diylinux/mkiso

Posted on 2013-07-03 23:32  大唐歲月  阅读(218)  评论(0)    收藏  举报

近些天在制作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!!!"