#               Woobuntu woobuntu_build.sh hacking
# 说明:
# 有时候因为一些需求,我们需要定制一些系统,包括Ubuntu系统,于是
# 我们自然需要知道如何去解包一个Ubuntu镜像,如何合成一个Ubuntu镜像。
# 当然这也有助于后续对Linux整套系统的定制。
#
# -- 深圳 南山平山村 曾剑锋
#
#
# 参考文档:
# . linux 下如何制作 iso 格式的启动镜像
# https://www.v2ex.com/t/252789
# . Ubuntu下制作iso文件的简单方法
# http://www.xuebuyuan.com/1292033.html
# . Mount ISO Read/Write
# http://www.linuxquestions.org/questions/linux-software-2/mount-iso-read-write-329688/
# . Woobuntu
# https://github.com/woolabs/Woobuntu #!/bin/bash #Author : woolabs team
#Maintainer : lxj616@wooyun chroot_args="-c" # 帮助信息
show_help() { echo " __ __ _ _ ";
echo "/ / /\ \ \___ ___ | |__ _ _ _ __ | |_ _ _ ";
echo "\ \/ \/ / _ \ / _ \| '_ \| | | | '_ \| __| | | |";
echo " \ /\ / (_) | (_) | |_) | |_| | | | | |_| |_| |";
echo " \/ \/ \___/ \___/|_.__/ \__,_|_| |_|\__|\__,_|";
echo " "; echo "Usage:"
echo "-f The ubuntu base image you wanna use for woobuntu build"
echo "-o The output woobuntu image"
echo "-x Xubuntu optimization for zh_CN & pre-configuration"
echo "-g gnome-ubuntu optimization for zh_CN & pre-configuration"
echo "-u Ubuntu original optimization for zh_CN & pre-configuration"
echo "-N Pre-install NVIDIA driver (Use with causion)"
echo "-V Pre-install Virtualbox-guest additions (Use with causion)"
echo ""
echo "Example:"
echo ""
echo "./woobuntu_build.sh -f xubuntu-15.10-desktop-amd64.iso -o woobuntu-current-amd64.iso -x" } # 参数为0的时候显示帮助信息
if [ $# = ]
then
show_help
exit
fi # 解析命令行参数
while getopts "h?f:o:xguNV" opt; do
case "$opt" in
h|\?)
show_help
exit
;;
f) input_iso=$OPTARG
;;
o) output_iso=$OPTARG
;;
x) chroot_args="$chroot_args -x"
;;
g) chroot_args="$chroot_args -g"
;;
u) chroot_args="$chroot_args -u"
;;
N) chroot_args="$chroot_args -N"
;;
V) chroot_args="$chroot_args -V"
;;
esac
done echo "You need following packages to continue:squashfs-tools dchroot"
#Depends on dchroot to create iso
# 依赖root权限生成iso文件
sudo apt-get install squashfs-tools dchroot mkisofs -y
#Create temp folder to mount origin iso
# 创建temp文件夹用于挂载源iso文件
mkdir /tmp/livecd
#Mount origin iso to temp folder to extract squashfs file
# 挂载源iso文件到/tmp/livecd目录
sudo mount -o loop $input_iso /tmp/livecd
#Create temp folder to store iso image files
# 创建temp目录来存放iso镜像文件
mkdir -p livecd/cd
#Don't copy squashfs file as we will repack this file later
# --exclude: 指定不需要拷贝的文件;
# /casper/filesystem.squashfs文件使用后面合成的文件,所以这里可以忽略拷贝
rsync --exclude=/casper/filesystem.squashfs -a /tmp/livecd/ livecd/cd
#Create temp folder to mount squashfs file & copy everything out for modification
# 创建temp文件夹,用于挂载squashfs文件,并且拷贝出所有的内容用于修改
mkdir livecd/squashfs livecd/custom
#Need to load before use
# 在使用squashfs工具之前,需要加载一下
sudo modprobe squashfs
#Mount the squash file
# 挂载squash文件系统
sudo mount -t squashfs -o loop /tmp/livecd/casper/filesystem.squashfs livecd/squashfs/
#Copy everything out for modification(squashfs file itself is read-only)
# 将squash文件系统内的文件全部拷贝出来,主要是由于squashfs是一个只读文件系统
sudo cp -a livecd/squashfs/* livecd/custom
#Enable network related configuration inside chroot env
# 使能网络功能,因为后续要使用网络更新程序
sudo cp /etc/resolv.conf /etc/hosts livecd/custom/etc/
#Copy wooyun-firefox user-profile into chroot env
# 拷贝wooyun-firefox user-profile到chroot目录,供后续使用
sudo cp -r .mozilla livecd/custom/root
#Drop the chroot install script inside
# 拷贝woobuntu_chroot_build.sh文件到chroot目录
sudo cp woobuntu_chroot_build.sh livecd/custom/root
#Execute the install script inside chroot env
# 执行chroot相关的脚本
sudo chroot livecd/custom /bin/bash -x /root/woobuntu_chroot_build.sh $chroot_args
#Everything should be done except re-check the mount points
sudo umount -lf livecd/custom/proc
sudo umount -lf livecd/custom/sys #Renew the manifest
chmod +w livecd/cd/casper/filesystem.manifest
#chmod +w livecd/cd/preseed/xubuntu.seed
#cat > livecd/cd/preseed/xubuntu.seed <<EOF
#d-i debian-installer/locale string zh_CN
#d-i mirror/http/mirror select CN.archive.ubuntu.com
#d-i clock-setup/utc boolean false
#d-i time/zone string Asia/Shanghai
#d-i clock-setup/ntp boolean true
#tasksel tasksel/first multiselect xubuntu-desktop
#d-i pkgsel/update-policy select none
#d-i finish-install/reboot_in_progress note
#EOF
sudo chroot livecd/custom dpkg-query -W --showformat='${Package} ${Version}\n' > livecd/cd/casper/filesystem.manifest
sudo cp livecd/cd/casper/filesystem.manifest livecd/cd/casper/filesystem.manifest-desktop #Repack the squashfs file
# 重新打包squashfs文件系统
sudo mksquashfs livecd/custom livecd/cd/casper/filesystem.squashfs #Re-create the md5 file
# 重新计算md5文件
sudo rm livecd/cd/md5sum.txt
sudo bash -c 'cd livecd/cd && find . -type f -exec md5sum {} +' > livecd/cd/md5sum.txt #Repack iso file
# 重新生成iso文件
cd livecd/cd
sudo mkisofs -r -V "Woobuntu-Live" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o output.iso .
mv output.iso ../../
cd ../../
mv output.iso $output_iso #Umount and clean
# 卸载相关内容
sudo umount livecd/squashfs/
sudo umount /tmp/livecd
#sudo rm -fr livecd/ echo "build finished"

Woobuntu woobuntu_build.sh hacking的更多相关文章

  1. OK335xS psplash make-image-header.sh hacking

    /***************************************************************************** * OK335xS psplash mak ...

  2. ti processor sdk linux am335x evm setup.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm setup.sh hacking # 说明: # 本文主要对TI的sdk中的setup.sh脚本进行解读 ...

  3. ti processor sdk linux am335x evm /bin/setup-host-check.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-host-check.sh hacking # 说明: # 本文主要对TI的sdk ...

  4. ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking # 说明: # 本文主要对TI的sdk中 ...

  5. ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...

  6. ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking # 说明: # 本文主要对T ...

  7. ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking # 说明: # 本文主要对TI的sdk中 ...

  8. ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking # 说明: # 本文主要对TI的sdk中的s ...

  9. ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking # 说明: # 本文主要对TI的s ...

随机推荐

  1. ios 框架学习笔记

    ios主要的系统层次: 一.Cocoa Touch 层:创建应用程序主要使用的框架. 1.关键技术: AirDrop:实现应用间通信. Text Kit:处理文本和排版. UIKit Dynamics ...

  2. SQL Server 之 解锁

    下图,制作了一个可以维持1分钟的表锁: 下图,可以查询出被锁的表,其中 spid 是锁定表的进程ID(也是 session_id): 可以通过 select connect_time from sys ...

  3. uva 10859

    刘书例题  树形dp #include <cstdio> #include <cstdlib> #include <cmath> #include <map& ...

  4. Ubuntu12.04 + 虚拟机VMware 9 + Secure CRT + EditPlus 本地C++开发环境搭建

    1.1  软件准备 虚拟机VMware 9 Ubuntu 12.04 Secure CRT EditPlus 1.2  安装VMware 9与Ubuntu 12.04 这两个软件安装,按部就班,这里就 ...

  5. php数组函数序列之array_unshift() 在数组开头插入一个或多个元素

    array_unshift() 函数在数组开头插入一个或多个元素.被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样 array_unshift()定义和用法 array_uns ...

  6. intellij idea 12、13 win8 下 中文输入覆盖的问题(搜狗输入法或者其他输入法)

    最近升级到idea12,发现中文输入存在问题,输入中文的时候会出现空格,并且覆盖后面的字符,这个问题让我很郁闷. 假设idea的安装位置为:D:\Program Files\JetBrains\Int ...

  7. DP:LCS(最长公共子串、最长公共子序列)

    1. 两者区别 约定:在本文中用 LCStr 表示最长公共子串(Longest Common Substring),LCSeq 表示最长公共子序列(Longest Common Subsequence ...

  8. lintcode 中等题:Intersection of Two Linked Lists 两个链表的交叉

    题目 两个链表的交叉 请写一个程序,找到两个单链表最开始的交叉节点. 样例 下列两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始交 ...

  9. C 语言学习guideline

    Kernighan和Ritchie的<The C Programming Language>(中译名<C程序设计语言>)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标 ...

  10. MIT算法导论——第一讲.Analysis of algorithm

    本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...