<>

4.3. 需要的脚本

这是一个良好的习惯: 将复杂的命令集合到脚本中, 之后的操作只和这几个脚本打交道. 本文中会用到以下三个脚本:

  • $WORK/openlfslivecd

    此脚本用于加载 $WORK/root.ext2$WORK/root/

    cat > $WORK/openlfslivecd << "EOF"
    #!/bin/sh
    
    cd $WORK
    
    # remount
    mount -o loop $WORK/root.ext2 $WORK/root
    
    mkdir $WORK/root/build
    mount --bind /usr/src $WORK/root/build
    
    mount -t proc proc $WORK/root/proc
    mount -t sysfs sysfs $WORK/root/sys
    mount -t devpts devpts $WORK/root/dev/pts
    mount -t tmpfs tmpfs $WORK/root/dev/shm
    EOF
    chmod +x $WORK/openlfslivecd
    
  • $WORK/closelfslivecd

    此脚本用于卸载 $WORK/root/

    cat > $WORK/closelfslivecd << "EOF"
    #!/bin/sh
    
    #umount
    umount $WORK/root/dev/shm
    umount $WORK/root/dev/pts
    umount $WORK/root/sys
    umount $WORK/root/proc
    umount $WORK/root/build && rmdir $WORK/root/build
    
    #remove history
    [ -f $WORK/root/root/.bash_history ] && rm $WORK/root/root/.bash_history
    [ -f $WORK/root/root/.viminfo ] && rm $WORK/root/root/.viminfo
    
    #umount
    umount $WORK/root
    EOF
    chmod +x $WORK/closelfslivecd
    
  • $WORK/mklfslivecd

    此脚本用于卸载 $WORK/root/; 压缩 $WORK/root.ext2$WORK/iso/root.ext2; 加载 $WORK/root.ext2 以便继续修改

    cat > $WORK/mklfslivecd << "EOF"
    #!/bin/sh
    
    export WORK=/mnt/lfslivecd
    cd $WORK
    
    # umount
    ./closelfslivecd
    
    # compress
    mkzftree -v -F $WORK/root.ext2 iso/root.ext2
    
    # burn cd
    cd $WORK/iso
    mkisofs -z -R -l --allow-leading-dots -D -o \
        ../lfslivecd-x86-6.3-r2160-custom.iso -b boot/isolinux/isolinux.bin \
        -c boot/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
        -V "lfslivecd-x86-6.3-r2160" ./
    
    # transfer
    cd $WORK
    
    # you can then use ftp to upload the ISO if you configured ~/.netrc
    #ftp ftpserver
    
    # remount
    ./openlfslivecd
    EOF
    chmod +x $WORK/mklfslivecd