LinuxSir.cn,穿越时空的Linuxsir!

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

Stage 1 NPTL on a Stage 3 Tarball

[复制链接]
发表于 2005-1-15 11:31:39 | 显示全部楼层 |阅读模式
这次重新构建 gentoo 参考了 Hauser MM 和 Bob P 的帖子,收获很大,不知大家有没有同样感受,简单归纳了一下,留下备查吧。
在此向  Hauser 和 Bob P 致敬!

1。起动到一个 linux 环境,不管是已有的 linux 系统或是 Ibox 等 LiveCD 都可以,我是在 debian 上开始的。

2。打开硬盘 DMA
  1. hdparm -d1c1u1m16 /dev/hda
复制代码


3。分区、建立文件系统、挂载 swap,不多言了,版中兄弟应该驾轻就熟了

4。挂载 gentoo 分区
  1. mount /dev/hda9 /mnt/gentoo
  2. mkdir /mnt/gentoo/{boot,home}
  3. mount /dev/hda6 /mnt/gentoo/home
  4. mount /dev/hda7 /mnt/gentoo/boot
复制代码


5。弄个 stage3 tarball 解开到 gentoo root 分区
  1. wget http://gentoo.ccccom.com/releases/x86/2004.3/stages/pentium4/stage3-pentium4-2004.3.tar.bz2
  2. tar -xvjpf stage3-pentium3-2004.3.tar.bz2 -C /mnt/gentoo
复制代码


6。安装 portage 树
  1. wget http://gentoo.ccccom.com/snapshots/<most_recent_snapshot>.tar.bz2
  2. tar -xvjf <most_recent_snapshot>.tar.bz2 -C /mnt/gentoo/usr
复制代码


7。安装 gentoo 基本系统
7.1。拷贝 DNS 信息
  1. cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
复制代码


7.2。挂载 proc
  1. mount -t proc none /mnt/gentoo/proc
复制代码


7.3。Chroot 进 gentoo 系统
  1. chroot /mnt/gentoo /bin/bash
  2. env-update && source /etc/profile
复制代码


7.4。设置系统时间
  1. rm /etc/localtime
  2. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
复制代码


7.5。设置 make.conf
  1. mkdir -p /var/log/portage
  2. mkdir -p /home/ftp/pub/gentoo/distfiles
  3. mkdir -p /usr/local/{portage,glc}
复制代码

下面是我的 make.conf
  1. CFLAGS="-O3 -march=pentium4 -fomit-frame-pointer"
  2. CHOST="i686-pc-linux-gnu"
  3. CXXFLAGS="${CFLAGS}"
  4. ACCEPT_KEYWORDS="x86"
  5. DISTDIR="/home/ftp/pub/gentoo/distfiles"
  6. PORT_LOGDIR="/var/log/portage"
  7. PORTDIR_OVERLAY="/usr/local/portage /usr/local/glc"
  8. #FETCHCOMMAND='/usr/bin/proz --no-getch --no-search -k=5 --retry-delay=1 ${URI} -P ${DISTDIR}'
  9. GENTOO_MIRRORS="http://gentoo.ccccom.com http://ftp.gentoo.or.kr/ ftp://mirror.averse.net/pub/gentoo http://mirror.pacific.net.au/gentoo/"
  10. RSYNC_RETRIES="3"
  11. FEATURES="sandbox ccache distlocks"
  12. CCACHE_SIZE="512M"
  13. USE="glc nls cjk apache2 mysql maildir imap acpi truetype nptl freetype pam pthreads python userlocales screensaver"
复制代码

请根据本机实际更改。

7.6。为构建 gcc 3.4.3 平台作准备

  1. echo "sys-devel/gcc ~x86" >> /etc/portage/package.keywords
  2. echo "sys-devel/gcc-config ~x86" >> /etc/portage/package.keywords
  3. echo "sys-libs/libstdc++-v3 ~x86" >> /etc/portage/package.keywords
  4. echo "sys-libs/glibc ~x86" >> >> /etc/portage/package.keywords
复制代码


7.7。更新 portage 树
  1. emerge --sync
复制代码


7.8。安装 prozilla 为 emerge 加速
目前 prozilla 被 mask 了,只好如此:
  1. echo "www-client/prozilla ~x86" >> /etc/portage/package.keywords
  2. echo ">=www-client/prozilla-1.3.6-r1" >> /etc/portage/package.unmask
  3. emerge prozilla
复制代码

取消 /etc/make.conf 中的 FECHCOMMAND 一行注释。

7.9。打开 user locales ,为 glibc 减肥
  1. echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
复制代码

修改 /etc/locales.build ,设置需要编译的 locales :
  1. en_US.ISO-8859-1
  2. en_US.UTF-8/UTF-8
  3. zh_CN/GB18030
  4. zh_CN.GB2312/GB2312
  5. zh_CN.UTF-8/UTF-8
复制代码


8。构建新工具链
8.1。重新编译 glibc 及 gcc
为了打开 nptl ,我们不得不卸载 linux-headers。
  1. env-update && suorce /etc/profile
  2. emerge -C linux-headers
  3. emerge linux26-headers
  4. emerge gcc-config glibc binutils gcc
复制代码

这是个比较漫长的过程,不过值得等待...

8.2。现在我们用 gcc 3.3.4 及其工具链重新编译了 gcc 3.4.3,下面我们需要启用新的 gcc 来重新构建整个工具链和系统。
8.2.1。首先我参考 Bob P 的帖子修改了 make.conf,目前没发现什么问题,不喜欢的朋友可以不修改。
  1. CFLAGS="-O3 -march=pentium4 -mtune=pentium4 -fforce-addr -momit-leaf-frame-pointer -fomit-frame-pointer -ftracer -pipe"
  2. CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden -fvisibility=hidden"
复制代码


8.2.2。切换到 gcc 3.4.3
  1. gcc-config -l
  2. [1] i686-pc-linux-gnu-3.3.4 *
  3. [2] i686-pc-linux-gnu-3.4.3
  4. [3] i686-pc-linux-gnu-3.4.3-hardened
  5. [4] i686-pc-linux-gnu-3.4.3-hardenednopie
  6. [5] i686-pc-linux-gnu-3.4.3-hardenednossp
复制代码

我们看到,虽然我们安装了 gcc 3.4.3,但系统默认的编译器仍然是 gcc 3.3.4,如果没什么疑问,我们来切换到 gcc 3.4.3。
  1. gcc-config 2
  2. env-update && source /etc/profile
复制代码

gcc -v 看一下,现在默认的编译器应该是 gcc 3.4.3 了。

8.2.3。重新编译整个工具链
  1. emerge glibc binutils gcc portage
复制代码


8.2.4。现在我们的工具链是最新的了,下面我们要用这个工具链来重新编译整个系统,这是个更为漫长的过程,作好思想准备
  1. emerge -e system
复制代码


8.3。完成系统的其他安装工作
8.3.1。安装基本工具

  1. emerge syslog-ng grub vixie-cron reiserfsprogs sysfsutils udev dhcpcd hotplug coldplug gentoolkit gentoolkit-dev genlop esearch telnet-bsd vim
复制代码
  1. rc-update add syslog-ng default
  2. rc-update add vixie-cron default
  3. rc-update add sshd default
  4. rc-update add hotplug default
  5. rc-update add coldplug default
  6. rc-update add acpid default
复制代码


8.3.2。修改 rc.conf
  1. CLOCK="local"
  2. EDITOR="/usr/bin/vim"
复制代码


9。安装内核
我准备采用 2.6.10-nitro4,下载 ebuild 到 PORTDIR_OVERLAY。
  1. emerge nitro-sources
复制代码

内核配置不多讲了,目前大家普遍关注的如 udev,gensplash,reiser4,win4lin 这个内核都有,如果需要 unicon 支持,找到 sunmoon 提供的补丁 patch 一下即可。
需要注意的是要开启 udev 支持,要修改 /etc/conf.d/rc 脚本,加入
  1. RC_DEVICES="udev"
  2. RC_DEVICE_TARBALL="no"
复制代码


10。配置系统
10.1。配置网络
我的网络连接是 pppoe adsl,所以先来安装 rp-pppoe
  1. USE="-X" emerge rp-pppoe
  2. adsl-setup
  3. rc-update add rp-pppoe default
复制代码


10.2。配置主机及域名服务
  1. echo "microweb" >> /etc/hostname
  2. echo "3322.org" >> /etc/dnsdomainname
  3. echo "microweb.3322.org" >> /etc/nisdomainname
  4. rc-update add domainname default
复制代码


10.3。安装和配置 gensplash
如果不喜欢 gensplash 可跳过。
  1. emerge splashutils
  2. splash_geninitramfs -v -g /boot/fbsplash-emergence-1024x768 -r 1024x768 emergence
  3. rc-update add splash default
复制代码


10.4。安装配置 grub
这个不多说了,下面是我的 grub.conf
  1. # For booting Gentoo
  2. title Gentoo 2004.3
  3. root (hd0,6)
  4. kernel (hd0,6)/vmlinuz-2.6.10-nitro4 ro root=/dev/hda9 video=vesafb:mtrr,ywrap,mpipal,1024x768-16@85 splash=silent
  5. initrd (hd0,6)/fbsplash-emergence-1024x768
复制代码

安装 grub 到 MBR
  1. grub
  2. grub> root (hd0,6)
  3. grub> setup (hd0)
  4. grub> quit
复制代码


10.5。配置 fstab。
  1. /dev/hda7  /boot  ext3  noauto,noatime  1 1
  2. /dev/hda9  /   reiserfs   noatime   0 0
  3. /dev/hda6  /home  reiserfs  noatime  0 0
  4. /dev/hda8  none   swap   sw  0 0
  5. /dev/hdb7  none   swap   sw  0 0
  6. /dev/cdroms/cdrom0  /mnt/cdrom  iso9660     noauto,ro   0 0
复制代码


10.6。配置 hdparm
  1. nano -w /etc/conf.d/hdparm
  2.    disc0_args="-d1c1u1m16"
  3.    cdrom0_args="-d1c1u1"
  4. rc-update add hdparm boot
复制代码


10.7。设置用户信息
设置 root 密码
  1. passwd
  2. New password: (Enter your new password)
  3. Re-enter password: (Re-enter your password)
复制代码


增加一个普通用户

  1. useradd -m -G users,wheel,audio,video,tty,portage,games,cdrw max
  2. passwd max
  3. New password: (Enter max's password)
  4. Re-enter password: (Re-enter max's password)
复制代码


10.8。设置 numlock 状态服务
  1. rc-updae add numlock default
复制代码


10.9。退出 chroot 环境。
  1. exit
  2. cd ~
  3. umount /mnt/gentoo/proc /mnt/gentoo/home /mnt/gentoo/boot /mnt/gentoo
复制代码


11。重启系统,一个崭新的 gentoo box 正在欢迎你!
发表于 2005-1-15 12:16:41 | 显示全部楼层
好帖
应该加精!!!!!!!!!

有空我也试试
回复 支持 反对

使用道具 举报

发表于 2005-1-15 13:42:21 | 显示全部楼层
这样装和从stage1开始用的时间应该差不多吧?
升级gcc后emerge gcc-config glibc binutils gcc类似bootstrap,emerge -e system则类似emerge system。
回复 支持 反对

使用道具 举报

发表于 2005-1-17 08:09:43 | 显示全部楼层
你贴下你的结果。这次我的NPTL不出来了,不知道为什么。
/lib/libc.so.6
GNU C Library 20041102 release version 2.3.4, by Roland McGrath et al.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7).
Compiled on a Linux 2.6.8 system on 2005-01-15.
Available extensions:
        GNU libio by Per Bothner
        crypt add-on version 2.1 by Michael Glad and others
        linuxthreads-0.10 by Xavier Leroy
        The C stubs add-on version 2.1.2.
        GNU Libidn by Simon Josefsson
        BIND-8.2.3-T5B
        libthread_db work sponsored by Alpha Processor Inc
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

没有啊,奇怪。还要让我再干一次。上次也是的,不出来NPTL。 :ask
回复 支持 反对

使用道具 举报

发表于 2005-1-17 08:20:14 | 显示全部楼层
更怪的事情是。
/lib/tls/libc.so.6
GNU C Library 20041102 release version 2.3.4, by Roland McGrath et al.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7).
Compiled on a Linux 2.6.8 system on 2005-01-15.
Available extensions:
        GNU libio by Per Bothner
        crypt add-on version 2.1 by Michael Glad and others
        Native POSIX Threads Library by Ulrich Drepper et al
        The C stubs add-on version 2.1.2.
        GNU Libidn by Simon Josefsson
        BIND-8.2.3-T5B
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

这个里边有NPTL。怪了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-17 11:02:27 | 显示全部楼层
如果只想要 nptl 请用 USE="nptlonly"
回复 支持 反对

使用道具 举报

发表于 2005-1-20 03:08:30 | 显示全部楼层
你安装过kde和gnome吗?我现在一个都安装去起来。晕了。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 00:21:14 | 显示全部楼层
blackwhite到底有没有nptl
回复 支持 反对

使用道具 举报

发表于 2005-10-9 23:51:25 | 显示全部楼层
经典,好好收藏
回复 支持 反对

使用道具 举报

发表于 2005-10-10 01:20:20 | 显示全部楼层
如果没加nptlonly,那要用的话,如何切换?
回复 支持 反对

使用道具 举报

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

本版积分规则

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