Woobuntu woobuntu_build.sh hacking

简介: # Woobuntu woobuntu_build.sh hacking # 说明: # 有时候因为一些需求,我们需要定制一些系统,包括Ubuntu系统,于是 # 我们自然需要知道如何去解包一个Ubuntu镜像,如何合成一个Ubuntu镜像。
#               Woobuntu woobuntu_build.sh hacking
# 说明:
#     有时候因为一些需求,我们需要定制一些系统,包括Ubuntu系统,于是
# 我们自然需要知道如何去解包一个Ubuntu镜像,如何合成一个Ubuntu镜像。
# 当然这也有助于后续对Linux整套系统的定制。
#
#                                   2016-4-27 深圳 南山平山村 曾剑锋
# 
#
# 参考文档:
#     1. linux 下如何制作 iso 格式的启动镜像
#         https://www.v2ex.com/t/252789
#     2. Ubuntu下制作iso文件的简单方法
#         http://www.xuebuyuan.com/1292033.html
#     3. Mount ISO Read/Write
#         http://www.linuxquestions.org/questions/linux-software-2/mount-iso-read-write-329688/
#     4. 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 [ $# = 0 ]
then
    show_help
    exit 0
fi

# 解析命令行参数
while getopts "h?f:o:xguNV" opt; do
    case "$opt" in
    h|\?)
        show_help
        exit 0
        ;;
    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"

 

目录
相关文章
|
21天前
|
Shell 开发工具 Android开发
详解sh ndk-build.cmd command not found
【4月更文挑战第2天】
如何解决安装hexo init blog 时,出现WARN Failed to install dependencies. Please run ‘npm install‘ in “E:\tests
如何解决安装hexo init blog 时,出现WARN Failed to install dependencies. Please run ‘npm install‘ in “E:\tests
如何解决安装hexo init blog 时,出现WARN Failed to install dependencies. Please run ‘npm install‘ in “E:\tests
|
Ubuntu
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
546 0
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
|
Linux
LINUX编译x265:make-Makefiles.bash: ccmake: not found
LINUX编译x265:make-Makefiles.bash: ccmake: not found
137 0
"\Tools\QtCreator\bin\clangbackend.exe" could not be started
"\Tools\QtCreator\bin\clangbackend.exe" could not be started
353 0
|
Ubuntu 关系型数据库 MySQL
How to Install and Configure Icinga2 Monitoring Tool on Ubuntu 16.04
In this tutorial, we will explore how to install Docker on Alibaba Cloud and learn some important Docker commands to help you deploy and manage your container services.
3005 0
How to Install and Configure Icinga2 Monitoring Tool on Ubuntu 16.04
You must install &#39;hg&#39; on your build machine
/***************************************************************************************** * You must install 'hg' on your build machine * 说明: * 在buildroot添加package的时候,遇到这个报错,记录一下解决办法。
932 0
|
Linux 开发工具 git
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的sdk中的unshallow-repositories.sh脚本进行解读,是为了了解 # 其工作机制。
1013 0
|
Linux 开发工具 Shell
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 # 说明: # 本文主要对TI的sdk中的setup-package-install.sh脚本进行解读,是为了了解 # 其工作机制。
777 0

热门文章

最新文章