Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1867188
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2010-06-24 14:45:16

Debootstrap可以用来安装一个debian系统,而不需要安装盘,但是你也需要一个debian环境去chroot。这个创建的完整(最小化的)debian安装可以被用来测试。

 

Debootstrap/usr/sbin/debootstrap的运行脚本,加上/usr/share/debootstrap/functions/usr/share/debootstrap/scripts/下的对应脚本组成,其中/usr/share/debootstrap/scripts/下按照不用的版本号来区分,例如karmic,hardy,lenny等。

 

近来分析了一下debootstrap的脚本,主要过程如下:

1.       设置版本号,镜像地址,默认目录,临时目录等前期准备工作。

2.       读入debootstrap的选项,配 置设置,并根据选项选择/usr/share/debootstrap/scripts/下的不同版本的脚本。

3.       设置系统的架构$ARCH, $CHROOT_CMD,检查目录权限,创建$TARGET/debootstrap目录,设置输出信息的管道。

4.       如果有设置--unpack-tarball 或 --make-tarball,创建解压缩包。

5.       以karmic为例:

download_indices函数从取 得下载的deb目录,然后运行work_out_debs函数,该函数定义在/usr/share/debootstrap/scripts/下的karmic脚本中。

6.       work_out_debs的主要功能为:

中获取Priority: important的包为base package,并根据依赖关系生成required package。

7.       进入first_stage:

创建/etc /dev/

8.       进入second_stage:

安装下载的deb包,其中又分为:core packages、required packages、base packages三部分。

a)         core packages包括:base-files base-passwd dpkg libc6 perl-base mawk debconf,并设置时区"$TARGET/sbin/ldconfig" "$TARGET/var/lib/dpkg/diversions" "$TARGET/usr/bin/ldd"

b)        base packages包括:base-files base-passwd bash bsdutils coreutils dash debconf debconf-i18n debianutils diff dpkg e2fslibs e2fsprogs findutils gcc-4.4-base grep gzip hostname initscripts insserv libacl1 libattr1 libblkid1 libc-bin libc6 libcomerr2 libdb4.7 libdbus-1-3 libgcc1 liblocale-gettext-perl libncurses5 libpam-modules libpam-runtime libpam0g libselinux1 libsepol1 libslang2 libss2 libssl0.9.8 libstdc++6 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libudev0 libuuid1 locales login lsb-base lzma makedev mawk mount mountall ncurses-base ncurses-bin passwd perl-base procps python-minimal python2.6-minimal sed sysv-rc sysvinit-utils tar tzdata upstart util-linux zlib1g

c)        required packages包括:adduser apt apt-utils aptitude busybox-initramfs bzip2 ca-certificates console-setup console-terminus cpio dhcp3-client dhcp3-common dmidecode dmsetup eject file gnupg gpgv ifupdown initramfs-tools iproute iputils-ping kbd klibc-utils laptop-detect less libatm1 libbz2-1.0 libc6-i686 libcap2 libclass-accessor-perl libcurl3-gnutls libcwidget3 libdevmapper1.02.1 libept0 libfribidi0 libgcrypt11 libgdbm3 libglib2.0-0 libglib2.0-data libgnutls26 libgpg-error0 libgpm2 libgssapi-krb5-2 libidn11 libio-string-perl libk5crypto3 libkeyutils1 libklibc libkrb5-3 libkrb5support0 libldap-2.4-2 liblockfile1 libmagic1 libncursesw5 libnewt0.52 libparse-debianchangelog-perl libpcre3 libpopt0 libreadline6 libsasl2-2 libsasl2-modules libsigc++-2.0-0c2a libsqlite3-0 libsub-name-perl libtasn1-3 libtimedate-perl libusb-0.1-4 libxapian15 libxml2 lockfile-progs lsb-release make mime-support module-init-tools net-tools netbase netcat netcat-traditional ntpdate openssl perl perl-modules python python-central python2.6 readline-common rsyslog sgml-base shared-mime-info sudo tasksel tasksel-data ubuntu-keyring ubuntu-minimal ucf udev vim-common vim-tiny whiptail xkb-data xml-core

9.       最后系统完成。

 

建立一个完整sid版 本的debian base system的方法:

main # cd / ; mkdir /sid-root

main # debootstrap sid /sid-root

 [ ... watch it download the whole system ]

main # echo "proc /sid-root/proc proc defaults 0 0" >> /etc/fstab

main # mount proc /sid-root/proc -t proc

main # echo "sysfs /sid-root/sys sysfs defaults 0 0" >> /etc/fstab

main # mount sysfs /sid-root/sys -t sysfs

main # cp /etc/hosts /sid-root/etc/hosts

main # chroot /sid-root /bin/bash

chroot # dselect

[ you may use aptitude, install mc and vim ... ]

main # echo "8:23:respawn:/usr/sbin/chroot /sid-root " \

"/sbin/getty 38400 tty8"  >> /etc/inittab

 [ define a login tty that will use this system ]

main # init q

[ reload init ]

阅读(1978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~