Woobuntu woobuntu_build.sh hacking
# 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的更多相关文章
- OK335xS psplash make-image-header.sh hacking
/***************************************************************************** * OK335xS psplash mak ...
- ti processor sdk linux am335x evm setup.sh hacking
#!/bin/sh # # ti processor sdk linux am335x evm setup.sh hacking # 说明: # 本文主要对TI的sdk中的setup.sh脚本进行解读 ...
- 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 ...
- 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中 ...
- ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking
#!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...
- 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 ...
- 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中 ...
- 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 ...
- 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 ...
随机推荐
- trie树(前缀树)
问题描述: Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优 ...
- 【BZOJ】【3295】【CQOI2011】动态逆序对
树套树 Orz zyf神犇 时光倒流……逆序处理,将删点改为加点,动态维护序列. 由于是动态,要加点,所以用树状数组:同时又需要求序列中求比当前元素大/小的元素个数,所以要用平衡树. 所以方法就是在树 ...
- Unity3D研究院之脚本批量打包渠道包研究
原地址:http://www.xuanyusong.com/archives/2418#comments 最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的 ...
- AJAX请求也会重新刷新整个页面?
由于对HTML的一些内置行为不理解,所以面对今天的AJAX请求也会重新绘页面百思不得其解. 后来,请教跟伟哥同属前端组的杨成之后,才知道是由于button的默认行为导致的. 需要阻止这种标签行为,才可 ...
- hdu 3441 Rotation
总的来说,这题要2次用到polya定理. 由题目条件A*A=B*B+1,变形为(A-1)*(A+1)=K*B*B; 分别分解A-1和A+1的质因数,在合并在一起. 第一步:搜索B,对B*B的正方形涂色 ...
- Win7-其中的文件夹或文件已在另一个程序中打开
Win7-其中的文件夹或文件已在另一个程序中打开 如何解决Win7系统在删除或移动文件时提示,“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开,请关闭该文件夹或文件,然后重试”. 步骤阅 ...
- Java传入参数个数不确定可用(Type ... values)
/** * 可变长的参数. * 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法: * 1. 重载,多重载几个方法,尽可能的满足参数的个数.显然这不是什么好办法. ...
- SpringMVC学习总结(一)——SpringMVC入门
摘要: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求 ...
- s3cmd的安装与配置
安装包链接:http://files.cnblogs.com/files/litao0505/s3.rar 安装S3cmd1. tar -zxf s3cmd-1.0.0.tar.gz2. mv s3c ...
- MIT算法导论——第五讲.Linear Time Sort
本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...