linux live bin,linux-live的build脚本

#!/bin/bash

#

# run this script to create a LiveCD in /tmp/live_data_1234

#

# Author: Tomas M.

# 这里,重新定义变量PATH,注意覆盖了原来系统的PATH变量。

export PATH=.:./tools:../tools:/usr/sbin:/usr/bin:/sbin:/bin:/

# 这三行,是要确保脚本执行的目录是 build脚本 所在的目录,

# 如果执行 "./build " , 则目录就是当前目录

# 如果执行 “/home/xxx/linix-live/build", 则会 “cd /home/xxx/linux-live"

CHANGEDIR=$(dirname $(readlink -f $0))

echo "Changing current directory to $CHANGEDIR"

cd $CHANGEDIR

# 导入/执行 tools/liblinuxlive,这个脚本中是全局变量、函数的定义,从名字就看出来了"lib"嘛

# 整个工程所用的许多工具函数什么的都在这里定义

# 导入失败则退出

. liblinuxlive || exit 1

# 导入/执行 .config 脚本, 这个脚本里是一些用户可以定制的参数,可以看一下。

. ./.config || exit 1

# only root can continue, because only root can read all files from your system

# 在tools/liblinuxlive中定义,必须以root执行build脚本

allow_only_root

# live CD name

# 让你自己给liveCD起个名字,默认名在.config中定义,为"mylinux"

echo -ne "Name of your live distro [hit enter for $LIVECDNAME]: "

read NEWLIVECDNAME

if [ "$NEWLIVECDNAME" != "" ]; then LIVECDNAME=$NEWLIVECDNAME; fi

LIVECDNAME=$(echo $LIVECDNAME | tr -d ' ')# 删去空格,保证没有空格

# 安装linux-live到 $ROOT/usr 中

# 特别的,把 tools/liblinuxlive 放到 $ROOT/usr/lib/ 下

# 把 tools/ 下面的其它可执行文件放到 $ROOT/usr/bin 下

# $ROOT 在 .config 中定义, 默认为 根 "/"

. ./install# 如果没有改.config中的$ROOT,执行这一句时,$ROOT为空,将安装的当前运行的系统中,这对于当前运行系统与要制作的live系统不一样时有区别。

if [ "$ROOT" -a "$ROOT" != "/" ]; then

. ./install $ROOT

fi

# search for kernel

# 搜索内核文件 vmlinuz。一般的发行版本现在都是vmlinuz-2.6.3x.xx. ,即会带着内核信息,需要自己作个链接吧。

VMLINUZ=$ROOT/boot/vmlinuz

if [ -L "$VMLINUZ" ]; then VMLINUZ=$(readlink -f $VMLINUZ); fi

echo -ne "Enter path for the kernel you'd like to use [hit enter for $VMLINUZ]: "

read NEWKERNEL

if [ "$NEWKERNEL" != "" ]; then VMLINUZ="$NEWKERNEL"; fi

if [ "$(ls $VMLINUZ 2>>$DEBUG)" = "" ]; then echo "cannot find $VMLINUZ"; exit 1; fi

header "Creating LiveCD from your Linux"

echo "some debug information can be found in $DEBUG"

# 创建目标文件夹

mkdir -p $CDDATA/$LIVECDNAME/{base,modules,optional,rootcopy,tools}

# 把 cd-root/boot 文件夹中的内容拷贝到 $CDDATA, 并修改几个文件的内容,改为 $LIVECDNAME 的定制信息

echo "copying cd-root to $CDDATA, using kernel from $VMLINUZ"

cp -R cd-root/boot $CDDATA

for i in isolinux syslinux; do

cat cd-root/boot/$i/$i.cfg | sed -r "s/LABEL linux/LABEL $LIVECDNAME/" | sed -r "s/Run linux/Run $LIVECDNAME/" > $CDDATA/boot/$i/$i.cfg

done

mv $CDDATA/boot/dos/linux.bat $CDDATA/boot/dos/${LIVECDNAME:0:8}.bat

cat cd-root/boot/dos/readme.txt | sed -r "s/LINUX.BAT/"${LIVECDNAME:0:8}.bat"/" > $CDDATA/boot/dos/readme.txt

# 拷贝文件

mkdir -p $CDDATA/$LIVECDNAME

cp -R cd-root/linux/* $CDDATA/$LIVECDNAME

cp tools/* $CDDATA/$LIVECDNAME/tools

cp -R DOC/LICENSE $CDDATA/$LIVECDNAME

cp $VMLINUZ $CDDATA/boot/vmlinuz

# 用 initrd/initrd_create 来创建initrd.gz, 并拷贝到$CDDATA/boot/initrd.gz

echo "creating initrd image..."

echo "Using kernel modules from $ROOT/$LMK"

cd initrd

./initrd_create $LIVECDNAME

if [ "$?" -ne 0 ]; then exit; fi

cd ..

cp initrd/initrd.gz $CDDATA/boot/initrd.gz

rm initrd/initrd.gz

echo "creating compressed images..."

# 把 $MKMOD(在.config中定义)中的每个文件夹都用 create_module(在liblinuxlive中定义) 压缩/模块化

for dir in $MKMOD; do

if [ -d $ROOT/$dir ]; then

echo "base/$dir.lzm ..."

echo -ne > exclude.txt

for i in $EXCLUDE; do

part=$(echo "x/$i" | tr -s / | sed -r "s:x/[^/]+/::")

if [ -e "$ROOT/$dir/$part" ]; then echo "$ROOT/$dir/$part" >> exclude.txt; fi

done

cat exclude.txt

create_module $ROOT/$dir $CDDATA/$LIVECDNAME/base/$dir.lzm -keep-as-directory -ef exclude.txt

if [ $? -ne 0 ]; then exit; fi

rm exclude.txt

echo

fi

done

# 后续还有一些工作,创建iso文件,或制作启动USB等。

cd $CDDATA/$LIVECDNAME

echo "--------done----------"

echo

echo "* run $CDDATA/$LIVECDNAME/make_iso.bat to create ISO image"

echo "* or copy content of $CDDATA to your USB device"

echo "and run ./boot/bootinst.sh (from the device!) to setup boot sector"

echo

echo "Now press Enter..."

read junk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值