LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11950|回复: 34

定制debian安装盘 --就这样简单

[复制链接]
发表于 2007-3-17 19:21:19 | 显示全部楼层 |阅读模式
定制debian安装盘 --就这样简单
http://www.linuxsir.cn/bbs/showthread.php?t=295282
by ccwufu @ linuxsir.cn

请修改 :

0)请修改附件的133、152行:调整你需要的软件包
(基本中文: ttf-arphic-uming fcitx im-switch )
1)如果不要代理的话,请注释掉  #export http_proxy=http://192.168.213.1:5865/

2)请修改到你的快速mirror
debootstrap etch /tmp/cdi/etchbootstrap http://debian.linux.org.tw/debian/

3)下载附件: 另存为: auto_cdi.sh
4) (root )   sh ./auto_cdi.sh
生成的cdi.iso 在 /tmp/cdi/cdi.iso (默认)

#################################
# Notes : It's for the Etch
# Notes : please modify the mirror and the package  as you need
# line 133 : package included into customized d-i image
# line 152 : package auto-installed during installation
# Step 0 : install tools needed
apt-get update
apt-get install mkisofs debootstrap unionfs-modules-`uname -r`

# Step 1 : make directory
export workdir=/tmp/cdi
mkdir -p $workdir/{roiso,rwiso,newiso,scripts,bootstrap}

# Step 2 : download the d-i image and make it(iso) writable with unionfs
cd $workdir
#export http_proxy=http://192.168.213.1:5865/
wget http://debian.linux.org.tw/debian-testing-cdimage/daily-builds/etch_d-i/current/i386/iso-cd/debian-testing-i386-netinst.iso
#wget http://debian.linux.org.tw/debian-testing-cdimage/daily-builds/etch_d-i/20070316-1/i386/iso-cd/debian-testing-i386-netinst.iso
#wget ftp://192.168.213.1/debian-testing-i386-netinst.iso
mount -o loop $workdir/debian-testing-i386-netinst.iso $workdir/roiso
mount -t unionfs -o dirs=$workdir/rwiso=rwworkdir/roiso/=ro unionfs $workdir/newiso

# Step 3a : download the indices file ( to update the pool)
cd $workdir/scripts/
wget http://debian.linux.org.tw/debian/indices/override.etch.contrib.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.contrib.src.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.extra.contrib.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.extra.main.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.extra.non-free.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.main.debian-installer.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.main.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.main.src.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.non-free.gz
wget http://debian.linux.org.tw/debian/indices/override.etch.non-free.src.gz
gunzip *.gz

#export http_proxy=

# Step 3b : create the configration for the apt-ftparchive
cd $workdir/scripts/
cat >>apt.conf <<EOF
APT {
       FTPArchive {
         Release {
             Origin "Debian";
             Label "Debian";
             Suite "testing";
             Version "4.0";
             Codename "etch";
             Architectures "i386";
             Components "main contrib";
             Description "Debian Testing distribution - Not Released";
         };
       };
    };
EOF

cat >>config_binary <<EOF
Dir {
    ArchiveDir "$workdir/newiso/";
    OverrideDir "$workdir/scripts/";
    CacheDir "$workdir/";
};

TreeDefault {
    Directory "pool/";
};

BinDirectory "pool/main" {
    Packages "dists/etch/main/binary-i386/Packages";
    BinOverride "override.etch.main";
    ExtraOverride "override.etch.extra.main";
};

BinDirectory "pool/control" {
    Packages "dists/etch/contrib/binary-i386/Packages";
    BinOverride "override.etch.contrib";
    ExtraOverride "override.etch.extra.contrib";
};


Default {
    Packages {
        Extensions ".deb";
        Compress ". gzip";
    };


Contents {
         Compress "gzip";
     };
};
EOF


cat >>config_installer <<EOF
Dir {
    ArchiveDir "$workdir/newiso/";
    OverrideDir "$workdir/scripts/";
    CacheDir "$workdir/";
};
            
TreeDefault {
    Directory "pool/";
};
                     
BinDirectory "pool/main" {
    Packages "dists/etch/main/debian-installer/binary-i386/Packages";
    BinOverride "override.etch.main";
    ExtraOverride "override.etch.extra.main";
};
                                    
Default {
    Packages {
        Extensions ".udeb";
        Compress ". gzip"
    };
   Contents {
        Compress "gzip"
   };
};
EOF

# Step 4 : build the bootstrap and download the extra package
#          move the downloaded deb to the d-i ISO 's pool

cd $workdir
#debootstrap etch $workdir/bootstrap http://debian.linux.org.tw/debian/
debootstrap etch $workdir/bootstrap http://127.0.0.1:9999/debian/

chroot $workdir/bootstrap apt-get update
chroot $workdir/bootstrap apt-get -y install apt-move
chroot $workdir/bootstrap apt-get clean
chroot $workdir/bootstrap apt-get -y install --download-only eject file sudo vim-tiny console-common kbd locales gdm xfce4 desktop-base x-window-system-core xresprobe
chroot $workdir/bootstrap apt-move update

cp -a $workdir/bootstrap/mirrors/debian/pool $workdir/newiso/

chroot $workdir/bootstrap apt-get clean

# Step 5 : update Release file and indices
cd $workdir/newiso
apt-ftparchive -c $workdir/scripts/apt.conf generate $workdir/scripts/config_installer
apt-ftparchive -c $workdir/scripts/apt.conf generate $workdir/scripts/config_binary
apt-ftparchive -c $workdir/scripts/apt.conf release dists/etch > ./dists/etch/Release

# Step 6a : create the preseed.cfg to auto-install the extra packages

cd $workdir/newiso/.disk/

cat >>preseed.cfg <<EOF
# Individual additional packages to install
d-i pkgsel/include string eject file sudo vim-tiny console-common kbd locales gdm xfce4 desktop-base x-window-system-core xresprobe

tasksel tasksel/first multiselect standard, xfce-desktop

EOF

# Step 6b : append the boot parameter to include the preseed.cfg
cd $workdir/newiso/isolinux
#sed isolinux.cfg to append : preseed/file=/cdrom/preseed.cfg
cp isolinux.cfg isolinux.cfg.org
sed -e '15,28s:gz:gz preseed/file=/cdrom/.disk/preseed.cfg:g' isolinux.cfg.org > isolinux.cfg

# Step 7 : create the ISO
cd $workdir

mkisofs -o ./cdi.iso -r -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./newiso/

# Step 8 : clean
umount $workdir/newiso $workdir/roiso
#mv $workdir/cdi.iso ~
#rm -rf $workdir

######################################

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-3-17 19:57:51 | 显示全部楼层
能否解释一下?或者详细点?这样没头没脑的让人很迷惑。
回复 支持 反对

使用道具 举报

发表于 2007-3-17 20:12:54 | 显示全部楼层
没注析的没什么动力看啊!

留着先!
回复 支持 反对

使用道具 举报

发表于 2007-3-18 13:15:28 | 显示全部楼层
楼主写的一个高度自动化的脚本?
回复 支持 反对

使用道具 举报

发表于 2007-3-18 14:05:09 | 显示全部楼层
LZ是台湾人?
有些字输错了吧!
回复 支持 反对

使用道具 举报

发表于 2007-3-19 11:00:16 | 显示全部楼层
原来是这样,受教了,谢谢LZ分享
回复 支持 反对

使用道具 举报

发表于 2007-3-19 11:14:43 | 显示全部楼层
Post by sunnyseckt
原来是这样,受教了,谢谢LZ分享

解释解释?我怎么做不成功?装到一半就报错,说不能mount /target什么的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-19 12:35:11 | 显示全部楼层
Post by 12345678abc
解释解释?我怎么做不成功?装到一半就报错,说不能mount /target什么的。


script log.txt
sh cdi.sh
exit (如果sh cdi死掉: ctrl-c)

cat log.txt
贴出log.txt

(是不是http:// 中的...作怪 ,
http:// 中的 ... 已修正  )
回复 支持 反对

使用道具 举报

发表于 2007-3-19 14:47:56 | 显示全部楼层
Post by ccwufu
script log.txt
sh cdi.sh
exit (如果sh cdi死掉: ctrl-c)

cat log.txt
贴出log.txt

(是不是http:// 中的...作怪 ,
http:// 中的 ... 已修正  )

用cdi.sh生成iso文件没有问题,可以成功,也可以mount(我改了一些,因为发现最新的testing的netinst.iso有些东西和脚本的不一样)。就是用生成的iso安装时,到具体安装包那一步的时候说不能mount  /target,还有/proc什么的出错。
回复 支持 反对

使用道具 举报

发表于 2007-3-19 18:34:22 | 显示全部楼层
这是我生成iso后安装过程中的报错,请各位看看怎么回事?那里错了?左边的图是最开始的报错,右边的是切换到另外一个终端后的内容。谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表