Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
让你的 Gentoo 快若刀锋 (20050216.done)
View unanswered posts
View posts from last 24 hours

Goto page 1, 2, 3, 4  Next  
Reply to topic    Gentoo Forums Forum Index 中文 (Chinese)
View previous topic :: View next topic  
Author Message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Thu Dec 16, 2004 8:48 am    Post subject: 让你的 Gentoo 快若刀锋 (20050216.done) Reply with quote




* 20051204: 注意, 这篇文章里涉及一些具体步骤的操作已经过时了, 所以请不要再按步就班地跟着做. 但是, 里面一些内容, 比如分区的考虑, 配置 make.conf 的思路等, 还是可以参考的. 我正在准备 "让你的 gentoo 快若刀锋 v2.0", 希望能为大家带来一些不会过时的, 通用的安装指引, 敬请期待 ;)




更新:
* 20050522: 哇塞, 在 11:31 的这一刻, 这篇帖子的点击数已达 101608! 前天还只是 97000! 过十万了, 纪念一下! 谢谢大家的支持!! :D :D
* 20050427: gcc 4.0 早已 release, 等五月我的住处开通网络之后, 就开始折腾用 gcc 4.0 来 "快若刀锋" ;) (噢, 还有, 我已经 "卖身求生" 了, 所以, 下面这个求职信息已失效 8) )
* 20050216: 我明天 (17 号) 要去武汉陪 gf 几天, 顺便找找工作 (如果你有武汉的工作信息, 记得一定给我发信或者直接联系我! 非常非常感谢先!!), 可能有几天上不来了, 所以赶紧把这帖子搞定啦! 大家有啥想法/意见的就跟帖提, 我回来改 :D
* 20050215: 完成内核安装/内核模块安装/Utopia, 系统信息/网络信息配置等.
* 20050207: 和我一样已经使用了旧的 gcc34 profile 的朋友, 在 emerge sync 之后, emerge 任何东西时可能都会出现一个提示信息说你的 profile 已经被 deprecated, 这时只需按照提示信息里所说的步骤更新 profile 即可:

Code:

!!! Your current profile is deprecated and not supported anymore.
!!! Please upgrade to the following profile if possible:
        default-linux/x86/2004.2/gcc34

        To upgrade do the following steps:
        # emerge -n '>=sys-apps/portage-2.0.51'
        # cd /etc/
        # rm make.profile
        # ln -s ../usr/portage/profiles/default-linux/x86/2004.2/gcc34 make.profile


* 20050206: 紧急更新 - /usr/portage/profiles/gcc34-x86-2004.2/ 这一 profile 已经不再建议使用 (deprecated), 已更新为: /usr/portage/profiles/default-linux/x86/2004.2/gcc34
* 20050129: 系统时间配置与安装内核源码部分完成



让你的 Gentoo 快若刀锋
- by Eric Hsu

一. 前言 - 我的兔兔历程

半年多前开始了我与兔兔的亲密接触. 以我一贯保守作风稳中求进的做法, 最初先是在 Fedora Core 上用 vmware 装成功一次 stage3, 接着一次 stage1 (装到 X 成功起来加上一个 Enlightenment), 然后以积累的经验大胆地往硬盘最后面的空闲分区里成功实装了一次 stage1, 这一次, 让我得以对兔兔进行较深入的摸索, 同时因为 FC 还在, 既不影响我正常的工作学习, 又能有个参照对象, 以便我逐一确认 FC 下我的需求在兔兔里都能满足.

在确认兔兔足以完全取代 FC 之后, 我开始了大迁移 - 彻底转向兔兔. 于是 2004 年 05 月 31 日 17:57 stage1 开始, 装到 2004 年 06 月 02 日 18:33 完成一个基本可用的系统, 其间做了大量手写的笔记, 包括每一步骤及其耗时, 每一个遇到的问题及其解决办法, 每一个软件包的安装/卸载, 每一个配置的变动/更新...

这一次的 stage1 安装, 让我一直使用到了十一月底, 累积的笔记达到 25 页 A4 纸. 经验的积累与知识的扩张让我一直心痒痒想把其间学到的点滴经验与知识来一次大整合. gf 的要求与我对 QQ 游戏泡泡大战的需求成了这次重装的契机: 我要把 XP 弄回来, 更重要的是 - 我要打造一个在我现有硬件基础上最为 bleeding edge 的兔兔!

于是我开了这个帖子, 向 gentoo 论坛上的人们逐一请教, 探讨, 试验并解决了数个问题. 在最后一个关于分区方案的问题被解决之后, 时机成熟, 我开始了全面刻盘备份...

2004 年 12 月 05 日 13:44, 这次旨在打造最为 bleeding edge 的兔兔的 stage1 安装开始了...

前言小结:
如果你现在还是其他发行版的用户, 而你又对兔兔跃跃欲试, 不妨参考我的稳中求进的做法:

  1. 用虚拟机装成功一次 stage3
  2. 在 stage3 成功经验的基础上, 用虚拟机成功安装一次 stage1
  3. 在虚拟机成功安装 stage1 的基础上, 往硬盘的空闲分区实装一次 stage1, 并与你原有系统双启动. (注意, 为了避免任何数据丢失的惨剧发生, 请务必在实装前, 彻底备份你原系统里的所有重要数据! 因为在进行 fdisk 分区或 mkfs 格式化分区时, 任何一个字符打错, 有可能就让你原有分区彻底丢失, 或是指向错误设备, 格式化掉了存有重要数据的分区 - 例如你把 /dev/hdd5 打成 /dev/hda5...)
  4. 利用此次实装对 gentoo 进行方方面面探索, 等你觉得确实了解 gentoo 了, 则可以考虑彻底往 gentoo 迁移.

(成功的标准可以定在: 让 X 起来, 毕竟这是桌面应用的基础. 当然, 你可以选择别的标准)

随时准备着把同一件事情再做一次, 因为那时你一定可以做得更好!

二. 正题 - 打造快若刀锋 (bleeding edge) 的 gentoo

. 目标:
(1) 合理的分区结构
(2) 使用目前本星球上最快的 Reiser4 文件系统
(3) 以 gcc 3.4 编译整个系统, nptl 支持
(4) Utopia: udev, hotplug, dbus, hal, gnome-volume-manager.

. 敬告:
请做好心理准备, 要打造快若刀锋的 gentoo, 我们需要用到很多刀锋级别的东西, 像最新的技术, 最新的软件包, 这同时意味着我们肯定会遇到很多的问题 (有些很可能别人都没遇到过的). 因此, 在跟随本贴前, 请确认你的心脏不会太弱, 且有足够的勇气, 耐性与准备去面对可能的困难, 且要有自己解决问题的能力. 怕被刀割伤的话, 那就不要玩刀 ;)

不过呢, 至少你可以比我幸运一点, 因为我已经在前面给你死过一次了. 跟着我, 至少我能让你不至于死得像我那么难看 :lol:



  1. 准备工作

    • 分区方案
      这是一个很大的话题, 从来没有一个方案是万用的 (如果不算 /boot, swap, / 方案在内的话). 要获得最符合你需求的分区方案, 需要的是对 *nix 系统的理解与经验的积累.


      现在我仅以桌面应用为标准, 以及我的经验, 就分区方案给出如下个人建议:


      • 分区越少越好
        也许你已经读过 Gentoo Handbook: Designing a Partitioning Scheme 又或是 tldp: Linux Partition HOWTO. 你可能也和曾经的我一样迷惑于分区方案的设计... 在这里和仍旧迷惑的你说一声: 只有在 mission critical (任务繁重) 的服务器上才有考虑设计分区方案 (比如单独给出 /var, /tmp 分区) 的必要! 作为桌面用户, 请 KISS (Keep It Simple, Stupid!) ;) 且, 据知, 当只有一个分区时, 最频繁读/写的区域最终会自动集中到硬盘上最为临近的物理区域, 利于提高硬盘读/写的效率. 而分区多时, 就没有这个好处. 详细讨论可以看这个帖子: Quick Question: partition schema for a 60G disk? [done]

      • 单独给 /home 一个分区
        你一定会有重装系统的时候, 把 /home 单独分区, 就可以一口气格掉系统分区而不用担心自己 /home 里的数据/设置的备份问题. 重装系统后, fstab 里挂载回 /home 分区, 马上回到自己原来就配置好的, 熟悉的环境, 而无须一切从头.


      因此, 一般而言, 有四个分区足矣: /boot, /, swap, /home

      下面说说分区格式与大小的问题:


      • /boot
        ext2, 10M 足矣, 但是实际没法划那么小的分区, fdisk 里 +10M 的话, 最终出来大小大概是 16M.
      • /
        reiser4, 10G 足矣, 一个 gentoo 系统有 2G 左右就功能很全了. (Redhat/FC 这类预装了好多东西的系统不过也就 2G 多, 何况你完全可以定制的 gentoo). 之所以给到 10G, 那是我积累出来的经验, 我上个系统用了半年, 堆了一大堆东西 (尤其是 /usr/portage/distfiles 下面全是源码包), 全算在一起也不过用了 8.5G (注意, 系统本身大小还是 2G 左右, 其他空间是被非系统的数据所占).
      • swap
        如果你的内存 512M 或以下, 那就老规矩吧, 内存大小 x2 就是 swap 大小, 如果你的内存有 1G, swap 就不必 x2 了, 给个 256M 或 512M 估计就 OK, 我只有 256M 内存, 因此 1G 或以上的内存最合适给多少 swap 那就需要有经验的朋友给建议了 ;)
      • /home
        根据你的需求给大小. 如果你打算把重要数据放在 /home, 那么请使用岩石般稳定 (rock solid) 的 ext3 文件系统, reiser4 毕竟刚出, 拿自己的数据冒险没必要. 如果你非要像我一样 /home 也使用 reiser4 (我有时会以个人用户帐号在 /home 里装一些应用软件以保持系统本身的 "干净", 我又希望这些软件有最好的性能, 因此用 reiser4), 那建议你也和我一样, 再单独划一个 /data 分区, 且在 /data 分区里使用 ext3. 总之, 要保留重要数据的分区一定使用 ext3 这类稳定的文件系统, 要性能, 也不在乎出问题的地方, 那就直管用 reiser4!

      下面是我的分区方案, 以下的步骤中涉及分区的部分都以此为参照:
      Code:

      /dev/hda1      /boot          10M       ext2
      /dev/hda2      (For winxp)    5G        NTFS
      /dev/hda3      /              10G       reiser4
      /dev/hda4      extended
      /dev/hda5      swap           512M      swap
      /dev/hda6      /home          3G        reiser4
      /dev/hda7      /data          2G        ext3
      /dev/hda8      /share         20G       fat32
      /dev/hda9      (空闲空间以备将来使用, 例如可以用来作 stage4 备份的测试)


      解释: /boot, winxp 分区, /, swap, /home 我就不说了, 前面都解释过了. 我说说 /data, /share, 以及 /dev/hda9 的考虑:

      • /data
        顾名思义, 就是我专门存放重要数据的分区. 包括自己的项目数据, 系统配置文件的定期备份等等. 因为我的 /home 分区为了一些非 portage 的软件有最好的性能, 已经用了 reiser4 了, 因此不宜在 /home 里放重要数据. 所以, 我单独划出一个 /data 分区, 然后使用超稳定的 ext3 文件系统, 以存放重要的数据.
      • /share
        很间简单的考虑, 方便 linux 中的用户之间, 以及 linux 与 windows 之间的数据共享. 比如我里面就放了 n 多的 mp3.
      • /dev/hda9
        现在大家的硬盘都大了 (我的两年多前买的 60G), 留下一块空闲的空间是值得考虑的一件事情, 因为有一天你说不定就需要它! 比如我, 这个空闲分区整 20G, 迄今为止, 它至少为我作出过 3 个贡献:

        • 我的 stage4 备份的测试场地: 把整个系统打包, 然后解压到这里, 设置 grub, fstab, 从这里启动以确认系统的 stage4 备份是成功的.
        • 目前存了 n 多电影
        • 前些天算是救了我一次: 我用最近的 2.6.10-nitro4 内核, 这个版本的 nitro 有个不小的问题 (至少在我机器上), 就是关机时, "Deactivating swap" 步骤会卡在那里动不了. 那天情况出现, 我错误地摁了主机上的电源键数秒强制关机 (我应该按重启键就没事了!), 后来无法启动了. 因为强制关机导致 / 的 reiser4 文件系统出错, 需要重建文件系统 (--build-fs) 以修复. 由于我当时不清楚重建文件系统意味着什么, 我担心会把我的系统彻底毁了 (结果证明绝对不会! 只是当时不了解, 所以自然有疑虑). 于是, 我一贯的谨慎作风又来了: 做任何有潜在危险 (或不清楚/没把握) 的事情之前一定要做足安全措施 - 备份! 可是, 作为一个文件系统已经出错的分区, 当时是连 mount 都不行了, 唯一的备份方式就是 - 用 dd 把整个分区弄出来. 我的 / 足有 10G 大小, 这时大小为 20G 的 /dev/hda9 就发挥作用了, 我赶紧把一些电影删掉, 腾出 11G 多的空间, 把 / 整个 dd 到 /dev/hda9 里的一个文件中, 如此备份完毕之后, 我再安心地对原来的 / 进行文件系统的修复. 很幸运, 修复后一切正常 (当然还有个小问题, 现在 /lost+found 目录下有些奇怪的文件无法删除, reiser4 的一点问题吧, 目前考虑有时间的时候就打包整个系统, 重新格式化 /, 然后把系统解压回去). 所以, 如果遇到这种要备份出 10G 东西的情况, 没有一个足够大小的空闲分区时, 你会理解什么叫头疼的 :)



    • 获取并刻录一张支持 reiser4 的 LiveCD, 然后以它启动
      我使用的是 lxnayGentoo Minimal Reiser4 LiveCD

    • 创建与挂载分区
      Code:

      # mke2fs /dev/hda1
      # mkfs.reiser4 /dev/hda3
      # mkfs.reiser4 /dev/hda6
      # mke2fs -j /dev/hda7
         
      # mkswap /dev/hda5
      # swapon /dev/hda5
         
      # mount /dev/hda3 /mnt/gentoo
      # mkdir /mnt/gentoo/boot
      # mount /dev/hda1 /mnt/gentoo/boot   


    • 解压安装文件 (将创建系统目录树, 包括 /proc 与 /home)
      Code:

      # cd /mnt/gentoo
      (通过 link2 获得 stage1 压缩包)
      # tar -xvjpf stage?-*.tar.bz2
      (解压完之后可以把 stage1 压缩包删除或是移动到别的目录下保存 - 尽管意义不大)
         


    • 挂载其他分区
      Code:

      # mount /dev/hda6 /mnt/gentoo/home
      # mount -t proc none /mnt/gentoo/proc
         


    • 配置 make.conf (包括: CFLAGS, LDFLAGS, USE, MIRROR...)
      /etc/make.conf 中的 CHOST, CFLAGS (CXXFLAGS), LDFLAGS 都可以控制对系统的优化, 具体的解释在很多文档里都可以找到, 在这篇帖子里, 我只给出一些大家就算不理解也可以快速开始的设置, 记住, 要最终能够打造出最符合自己需求的系统, 不是装一次 gentoo 就有的. 关键是有个开始, 如同编程里的一句名言: make it work first, then make it fast (先让你的兔兔动起来, 然后再让它跑快:) )

      • CHOST - 如果你是 2002 年之后买的机器且没挨骗的话, 那肯定比我的新, 我的都是 CHOST="i686-pc-linux-gnu" 了, 你的也应该是这个值了 ;)
      • CFLAGS - 在 -march=[你的 cpu 类型] 的基础上, 使用 "-O3 -pipe -fomit-frame-pointer" 就够了, 如我的 cpu 是雷鸟的, 那么就可以这么开始:
        Code:

        CFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
           

      • CXXFLAGS:
        Code:

        CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"
           

      • LDFLAGS 这个可以让程序启动得更快, make.conf 中并没有这个变量的设置, 我们可以自己添加到 CXXFLAGS 的下面, 请从下面的值开始:
        Code:

        LDFLAGS="-Wl,-O1"
           


        注意: "-Wl" 中是小写的英文字母 "l" 而不是数字 "1" (一), 而 "-O1" 中分别是大写的英文字母 "O" 和数字 "1" (一).
      • USE - 在系统默认的基础上, 记得要加上的有 "cjk nls nptl nptlonly"
      • ACCEPT_KEYWORDS="~x86", 这样我们就能装几乎是最新的软件了 (呵呵, 更新的还有 -* 的, 如果你喜欢给自己找问题的话 ;) )
      • 获取软件包的镜像服务器列表, 以下是我自己用的, 速度都很好, 台湾的 ntcu.net 尤其快:
        Code:

        GENTOO_MIRRORS="ftp://linux.ntcu.net/dists/gentoo/ http://www.zentek-international.com/mirrors/gentoo/ http://gentoo.ccccom.com http://mirror.tucdemonic.org/gentoo/ http://gentoo.math.bme.hu http://gentoo.inode.at/ http://gentoo.mirrors.pair.com/"
           

      • 用以 emerge sync 同步你的 portage 树的服务器, 用下面这个亚洲的, 连接后会重定向到位于亚洲的一些服务器, 有几个台湾和日本的服务器超快:
        Code:

        SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"
           

      • MAKEOPTS="-j2"


      make.conf 的配置是一个不小的话题, 这里仅提供给新手 (或者懒人) 一个藉以开始的基础, 更优化的设置一定存在, gentoo 论坛里的讨论也很多. 刚接触 gentoo 的朋友不必急于求成要让自己的 gentoo 一开始就多猛, 关键先让它在一定的优化条件下 (上面已经包含优化了, 只是没到极致, 极致的优化是每台机器都不同的) 顺利跑起来, 随着经验的积累和知识的丰富, 你一定可以把自己的兔兔修炼至完美!

      参考链接:

    • 网络: 拷贝 DNS 信息
      Code:

      # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
         



  2. 安装系统

    • 切换到你的新系统中
      Code:

         # chroot /mnt/gentoo /bin/bash
         # env-update && source /etc/profile
         

      注: 安装过程中随时可以在一些步骤中中断, 任何时候需要重新继续之前的步骤, 只需重复如下动作:

      • 挂载各个分区 (如第一部份准备工作中的挂载分区步骤)
      • 重新执行如上的 chroot 命令与 env-update 命令
      • 继续你之前中断的步骤


    • 获得最新的 portage 树
      Code:

      # emerge sync
         

      注: 由于你的系统上暂时没有 portage 树, 因此在运行 emerge 命令时可能会看到一些警告信息, 忽略即可. 在 emerge sync 完, 系统中有了完整的 portage 树之后, 这些警告信息自然消失.
    • 使用 gcc34 profile 以让整个系统使用 gcc 3.4 来构造!
      Code:

      # unlink /etc/make.profile
      # ln -sf /usr/portage/profiles/default-linux/x86/2004.2/gcc34 /etc/make.profile
         

      这是让系统 bleeding edge 的重要步骤之一. 最新的 2004.3 默认的 profile 是否使用 gcc 3.4 来构造整个系统我并不清楚, 但是, 使用 gcc34-x86-2004.2 profile 则一定是使用 gcc 3.4 来编译所有东西.

    • 处理 gcc-config 会带来的问题
      Code:

      # emerge --oneshot --nodeps gcc-config
         

      相信是 2004.3 stage1 安装文件中的一个 bug. 其所带的 gcc-config 有问题, 这将导致在系统自举 (bootstrap) 时遇到如下错误:

      • 自举到 gcc 3.4.3 完成后会自动运行 gcc-config, 这时会看到:
        Code:

        /usr/bin/gcc-config: profile does not exist or invalid setting for /etc/env.d/gcc/i686-pc-linux-gnu-3.4.3
              

      • 随后, 自举继续进行, 将看到:
        Code:

        * Checking gcc for __thread support ...no
         . Could not find a gcc that supports the __thread directive! - Please update to gcc-3.2.2-r1 or later, and try again

         !!! ERROR: sys-libs/glibc-2.3.4.20041102 failed!
         !!! Function check_nptl_support, Line 178 Exitcode 0
         !!! No __thread support in gcc!
              

      • 自举中断, 这时在命令行运行 gcc 将看到:
        Code:

        # gcc
        gcc-config error: Could not run/locate "gcc"
              


      其实这都是因为那个有问题的 gcc-config 造成这些错误. 在最新的 gcc-config 中已经解决这一问题, 因此我们只需在系统自举之前运行上述命令以更新到最新的 gcc-config 来避免问题重现.

    • 系统自举 (bootstrap. 耗时约: 01:40)
      Code:

      # cd /usr/portage
      # scripts/bootstrap.sh
         


    • emerge system 期间会出现的问题及其解决办法 (emerge system: 耗时约: 02:25)
      在我们继续 emerge system 之前, 请先运行:
      Code:

      # emerge --oneshot "=automake-1.5"
      # emerge --oneshot "=automake-1.4_p6"
      # emerge --oneshot "=automake-1.8.5-r2"
      # emerge --oneshot "=automake-1.6.3"
      # emerge --oneshot "=automake-1.7.9"
         

      然后再:
      Code:

      # emerge system
      # env-update && source /etc/profile
         


      在 emerge system 时, 某个 (或多个?) 旧版本的 automake 是必须的 (在 emerge coreutils 过程中要用到), 可能是因为 gcc34 profile 太新的关系, 这个 (些?) 版本的 automake 并未安装进来, 这将导致 emerge system 到 emerge coreutils 时失败. 我当时并不清楚具体缺少哪个 (些) 版本的 automake, 在试图解决问题期间, emerge -Du --oneshot coreutils 深度升级 coreutils 时, 发现了以上几个版本的 automake 都会被安装进来. 但是, 注意, emerge -Du --oneshot coreutils 还是会在 emerge libtool 时失败, 这是由于 libtool 和 coreutils 之间有个恼人的循环依赖 (circle dependencies). 最终完美的解决办法就是: 在 emerge system 之前把几个版本的 automake 都一并装上, 其后将顺风顺水!

    • 设置系统时钟的技巧
      这是一个小麻烦. 可能不少人遇到过, 系统时间怎么折腾都有毛病. 下面这些步骤我都觉得有点郁闷, 不过, 按这些步骤弄完, 系统时间应该就正常了. 如果你有更好的解决方法, 一定要记得共享哦 ;) 首先我们按手册里的方法把时区设置好, 这里用了 Chongqing, 没关系, 全中国都是一样的时间:
      Code:

      # ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
      # date
         

      date 命令这时给出的时间肯定不对. 为什么? 因为系统启动时默认的系统时间 (注意和硬件时间分开) 是 UTC 的 (也就是格林威治标准时间 - 说错没??), 在我们把 localtime 指向 Chongqing 之后, 系统就以当前的 *它以为的* UTC 时间为基础, 加上 (或减去?) Chongqing 时区和它之间的时差, 于是得到一个错误的时间. 但是呢, 主板上的硬件时间却还是正确的:
      Code:

      # hwclock --show
         

      这时我们把正确的硬件时间同步回系统时间:
      Code:

      # hwclock --hctosys
         

      接着编辑系统的时间设置为本地 (local) 时间而非 UTC 时间:
      Code:

      # nano -w /etc/conf.d/clock
      (将 CLOCK="UTC" 改成 CLOCK="local")
         


      但系统随后重启后时间还是不正常, 为什么了又? 这是因为, 系统最初启动时默认是认为自己在 UTC 时区的, 它启动的时候, 把正确的硬件时间同步到系统时间; 在我们把 local 指向 Chongqing 之后, 它以当前的 UTC 时间算出一个错误的时间 (如前面解释); 通过把正确的硬件时间再次同步回系统时间之后, 系统重启时候的关机阶段, 会反过来把系统时间往硬件时间上同步 - 问题就在这里出现 - 系统最初启动是以 UTC 时区来设定系统时间的, 它关机的时候也还是认为自己在 UTC 时区 (尽管时间显示正确)! 于是, 它在把目前正确的系统时间往硬件时间上同步时, 就又算了一次, 这回就把硬件时间弄错了... 启动后再从硬件时间同步回系统时间, 自然也是错... 这时, 由于我们改过 /etc/conf.d/clock 了, 因此系统启动后是正确地认为自己在 Chongqing 时区了, 所以, 我们只需这个时候把系统时间和硬件时间都校准了, 就不会再出现 "瞎计算" 的情况了. 注意: 出于逻辑的连贯性, 我把下面的步骤写在这里了, 实际上, 我们应该在装完内核配置完用户等步骤完成之后, 系统重启了, 才执行下面两个命令来更改系统时间
      Code:

      # date 120610092004
      # hwclock --systohc
         



  3. 安装内核
    用兔兔的一大好处是可供选择的东西多极了! 真正满足我们打造度身定造自己的系统的需求! 之前的步骤让我们有了一辆跑车应有的最好的一些重要零部件了, 下面我们要为这辆兔兔牌超级跑车选择一个超级引擎 - 选择一个最适合桌面应用的内核!

    我曾是 nitro-sources 的用户, 不过, 后来的 2.6.10 的 nitro 系列让我的系统出了毛病, 踌躇间瞥见 morph-sources, 一试, 哇! 真不错! 而且 morph-sources 的作者 yardbird 非常乐于回答问题和解决问题, 这便是我现在很喜欢 morph-sources 的最大理由:) 下面就以 morph-sources 为例, 说说如何使用不在官方 portage 里的软件包.

    • 首先到这里获得 morph-sources 的 ebuild 和 patch
    • 创建/使用 portage overlay

      • 编辑 /etc/make.conf, 确保设置了如下变量:
        Code:

        PORTDIR_OVERLAY=/usr/local/portage
              

      • 创建给 morph-sources 使用的目录:
        Code:

        # mkdir -p /usr/local/portage/sys-kernel/morph-sources/
              

      • 将我们刚才下载的 morph-sources 的 ebuild 放到上面的 morph-sources 目录里, 将下载回来的 patch 放到 /usr/portage/distfiles 里, 并运行如下命令:
        Code:

        # ebuild /usr/local/portage/sys-kernel/morph-sources/morph-sources-[版本号].ebuild digest
              

      • 一切顺利的话, 这时就可以开始安装 morph-sources 了!
        Code:

        emerge morph-sources
              


    • 安装完 morph-sources 内核源码后, 接下来要进行配置/编译/安装内核, 配置内核是一个让新手们比较不爽的步骤, 随后我会在这帖子里简要说说, 或者再有更多时间的话, 我或许会开个新帖说一个主题: 编译内核时哪些选项是可以不要的 - 相信这个对于想获得一个超精简内核的你会有吸引力吧! ;)
    • 配置/编译/安装内核
      Code:

      # cd /usr/src
      ## 创建指向当前内核源码目录 (以我装的 morph-sources 版本为例) 的 linux 符号链接 (安装显卡驱动时需要用到内核源码)
      # ln -s linux-2.6.10-morph15 linux
      # cd linux
      # make menuconfig
      # make && make modules_install
      ## 如果之前未曾挂载 /boot 分区, 那么就
      # mount /dev/hda1 /boot
      ## 把编译好的内核与 System.map 拷到 /boot 分区里 (建议使用版本号, 避免误覆盖!)
      # cp -i arch/i386/boot/bzImage /boot/kernel-2.6.10 (你喜欢叫它啥名字都可以, 到时在 grub.conf 中配置好就行)
      # cp -i System.map /boot/System.map-2.6.10
         


  4. 安装内核模块/Utopia
    Code:

    # emerge udev
    # emerge hotplug && rc-update add hotplug default
    ## coldplug 原来是 hotplug 的一部分, 现在独立出来, 负责自动加载非热插拔硬件 (如显卡/声卡/网卡/USB 口/串口...) 的内核模块
    # emerge coldplug && rc-update add coldplug default
    ## 安装 alsa 声卡驱动的工具
    # emerge alsa-utils
    ## 编辑 alsa 配置以让内核加载针对你的网卡的驱动
    # nano -w /etc/modules.d/alsa
    ## 更新刚才的配置到系统里
    # modules-update
    ## 将 alsasound 服务添加到 boot 运行级别 (alsasound 服务负责关机时保存系统的声音设置, 开机时读取声音设置)
    # rc-update add alsasound boot
    ## 装显卡驱动
    # emerge nvidia-kernel


  5. 安装/配置系统的其他部分

    • 配置文件系统信息: /etc/fstab (以我的分区为例)
      Code:

      /dev/hda1               /boot           ext2            noauto,noatime         1  1
      /dev/hda3               /               reiser4         noatime                0  1
      /dev/hda5               none            swap            sw                     0  0
      /dev/hda6               /home           reiser4         noatime                0  2

      none                    /proc           proc            defaults               0  0
      none                    /dev/shm        tmpfs           defaults               0  0
         

    • 配置网络信息
      Code:

      ## 编辑主机名
      # nano -w /etc/conf.d/hostname (设置 HOSTNAME 变量, 例如我的 gentux)
      ## 编辑域名 (domain name)
      # nano -w /etc/conf.d/domainname (设置 DNSDOMAIN 变量, 例如我的 nkbit.com - 瞎叫的, 这域名不存在哦)
         

      光有上面的设置不够的, 大家看看自己系统终端的登录提示里有没有这样的东西 "gentux.(none)" "gentux.unknown_domain" (以我的主机名 gentux 为例)? 如果有 "(none)" "unknown_domain" 字样, 说明没配置好. 我们只需再做一步就可以正确显示成如我的 "gentux.nkbit.com":
      Code:

      # nano -w /etc/hosts
         

      然后往里面设置这么一行 (仍以我的为例, 爱叫什么名字, 自己替换吧~):
      Code:

      127.0.0.1       gentux.nkbit.com        gentux  localhost
         

      或者, 写成两行, 效果也一样:
      Code:

      127.0.0.1      localhost
      127.0.0.1      gentux.nkbit.com        gentux
         

      下次登录前看看主机名, 域名对不对吧!

    • 安装/配置系统启动器 (以 grub 为例, 具体看手册)
      Code:

      # emerge grub
      # grub
      # nano -w /boot/grub/grub.conf
         

    • 安装系统工具
      Code:

      ## 系统日志记录器
      # emerge syslog-ng && rc-update add syslog-ng default
      ## Cron 守护进程, 定时执行任务必须. 比如定时 updatedb 以方便 locate 命令寻找文件
      # emerge vixie-cron && rc-update add vixie-cron default
      ## 文件系统工具
      # emerge reiser4progs
      ## 可选: 网络工具 - 如果你象我一样 adsl 上网的话
      ## 前两步: -X, -gtk 一来避免为了这俩小工具把 X 装进来 (太耗时), 二来确实不需要这些支持
      # echo "net-dialup/rp-pppoe -X" >> /etc/portage/package.use
      # echo "net-dialup/ppp -gtk" >> /etc/portage/package.use
      # emerge rp-pppoe && adsl-setup
         

    • 修改 root 密码/添加日常用户 (如我的 eric)
      Code:

      # passwd
      # useradd eric -m -G users,wheel,portage,audio,games -s /bin/bash
      # passwd eric
         

      该帐号 eric 所在的几个用户组分别有如下作用: users - 普通用户组; wheel - 可以通过 su 获得 root 权限; portage - 可以执行一些 portage 的功能, 如查询, emerge -pv 软件包等, 而不必每次都切换到 root; audio, games - 听声音, 玩游戏.
    • 加上 pp 的 gensplash 启动画面
      Code:

      # emerge splashutils
      # mount /boot (如果原来没挂载的话)
      # splash_geninitramfs -v -g /boot/fbsplash-emergence-1024x768 -r 1024x768 emergence
      # nano -w /boot/grub/grub.conf
         

      配置如:
      Code:

      default 0
      timeout 30
      splashimage=(hd0,0)/grub/splash.xpm.gz

      title=Gentoo Linux 2004.3 (2.6.10-morph15-r1)
              root (hd0,0)
              kernel /2.6.10-morph15-r1 root=/dev/hda3 video=vesafb:ywrap,mtrr,1024x768-32@85 splash=silent,theme:emergence
              initrd (hd0,0)/fbsplash-emergence-1024x768
         

      其中关键就是 video, splash 参数和下面 initrd 那一行. 有谁可以告诉我 ywrap,mtrr 的含义? 谢谢先 ;) 而 1024x768-32@85 则意思是启动画面是 1024x768, 32 色, 85 Hz 刷新率 (我虽然这么设置了, 可我的 splash 从来没能超过 60 Hz, 有谁能告诉我怎么解决么? 挺郁闷的一个问题...); splash 那段则说使用 "安静" 的启动画面 - 隐藏启动信息, 只显示进度条, 主题为 emergence.


  6. 搞定啦! 准备重启进自己折腾这么久装出来的兔兔!
    Code:

    # exit (退回 LiveCD 提供的环境 - 记得我们之前 chroot 进到了自己的环境不?)
    # cd /
    # umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo/home /mnt/gentoo
    # reboot

    如果你顺利重启, 顺利用之前创建的日常帐号登录, 你就顺利地缔造了自己的兔兔啦!! 那要是不顺利呢?? 呵呵, 把问题贴出来吧!

  7. 还要干什么??
    如果你是第一次接触 gentoo, 这时登录后发现只有终端界面, 只能敲字符... 你也许纳闷了: 这就完了?
    当然不!
    到目前为止, 虽然我把这篇口水多过茶的帖子写了这么久, 你也跟着被忽悠了这么久, 我们不过只装完了一个最小集合的 Linux 系统而已! 后面还有很多软件包需要我们根据自己的需要去安装/定制, 最终获得一个真正符合我们需要的系统.

    这个帖子的定位既然是桌面系统, 那么, 我们下面就把 X 装上, 直接脱贫 (贫穷的终端界面) 致富 (丰富的图形界面) 奔小康 (漂亮的窗口管理器/桌面环境)...

    一点小经验, xorg-x11 只需如下一些 USEFLAGS 就够了, 其他一律可以减去:
    Code:

    eric@gentux ~ $ emerge -pv xorg-x11

    These are the packages that I would merge, in order:

    Calculating dependencies ...done!
    [ebuild   R   ] x11-base/xorg-x11-6.8.2  -3dfx +3dnow -bitmap-fonts +cjk -debug -dlloader -dmx -doc -font-server -hardened -insecure-drivers -ipv6 -minimal +mmx +nls +opengl +pam -sdk -sse -static +truetype-fonts -type1-fonts (-uclibc) -xprint +xv 0 kB

    Total size of downloads: 0 kB

    注意, 3dfx/3dnow 视你的 cpu 支持情况进行取舍; xprint 也看你要不要打印支持了, 我反正没打印机... 以上的 USEFLAGS 是俺多次安装/升级 xorg 精简出来的, 参考参考吧!

    在设置好 USEFLAGS 后 (别告诉我你还不会自己设置哦... 提示: /etc/make.conf 和 /etc/portage/package.use), 开装啦: (emerge xorg-x11: 耗时约: 01:49)
    Code:

    # emerge xorg-x11

    装显卡的 glx 支持 (以 nvidia 为例):
    Code:

    # emerge nvidia-glx

    配置 X:
    Code:

    # xorgcfg

    xorgcfg 是一个比较方便新手 (象我!) 的 X 配置工具, 它会自己检测你的硬件配置, 直接启动到一个图形界面 (极丑的...), 然后咱就可以点鼠标来配置一份 xorg.conf 啦!

    配置完之后, 试试启动 X 吧!
    Code:

    # startx

    没起来? 自己找找原因! 实在解决不了就发帖 ;)

    在 X 顺利起来之后, 建议大家做一个 stage4 备份, 把现在这个最小的, 带 X 的系统打一个压缩包, 然后刻盘. 日后你如果想要重装系统, 就可以以这个 stage4 为起点, 省去很多步骤和时间!

    最后, 选择你喜欢的窗口管理器/桌面环境/软件工具装吧!

  8. 革命尚未成功, 同志仍需努力!
    就算我们把系统装好, 定制好了, 后面还有很多很多的知识值得我们去探索, gentoo 的魅力, 或说开源世界的一大魅力便在于此: 开放, 自由 - 我们可以根据自己的兴趣去深入自己喜欢的知识, 感受探索的快乐.

    记得有个比喻: windows 就像 disney 乐园, 孩子们在大人们设置好的保护下玩着孩子们的安全的快乐; 而 unix/linux 世界, 则仿佛一座原始大森林, 这里充满了未知的新奇, 也不再有因保护而形成的束缚, 这里是真正的探险家们的天堂!

    gentoo linux 在众多 liux 发行版中是有最多东西可以供我们探索的 (当然, 还有据说更猛的 LFS, hehe).

    用自己的一点小心得来结束这篇帖子吧:

    • 做好安全措施! 在进行任何你不确定的活动时, 一定要备份好数据, 做一个负责任的男人! :twisted:
    • 别怕犯错, 别完美主义 - gentoo 论坛上有个人的签名档里的一段话说得很好:
      Quote:

      if i never try anything, i never learn anything..
      if i never take a risk, i stay where i am..

      "完美" 是在犯错的过程中逐步减少出错率的一个过程!
    • 随时准备把同样的事情再做一遍! 第二次做同一件事, 你一定能做得更好!



帖子里有什么错误/不当, 或你希望我扩展的部分, 请跟帖指出/说明!
谢谢你的对兔兔的热情与对我这篇帖子的热心! 希望这帖子能成为你与兔兔结缘的一点小小推动! :D

随后我还会陆续写其他帖子 (只要有时间), 计划中包括:

  • 打造最精简的内核
  • 中文相关问题 (包括中文显示/输入, 软件的中文问题... 用洋文写给外国朋友, 问这方面问题的不少...)
  • ... (大家还想了解关于兔兔的什么??)


-----
Log:
- begin.200412161600 - break.200412161650
- continued.200412162108 - break.200412162121
- continued.200412171153 - break.200412171241
- continued.200412232051 - break.200412232256
- continued.200501012125 - break.200501012238
- continued.200501152116 - break.200501152210
- continued.200501292141 - break.200501292241
- continued.200502152145 - break.200502152251
- continued.200502160850 - break.200502161105
_________________
- http://nkbit.com
- http://twitter.com/xuyihua


Last edited by EricHsu on Tue May 16, 2006 2:27 am; edited 23 times in total
Back to top
View user's profile Send private message
Hauser
l33t
l33t


Joined: 27 Dec 2003
Posts: 650
Location: 4-dimensional hyperplane

PostPosted: Thu Dec 16, 2004 11:13 am    Post subject: Reply with quote

稍微看了下你有關分區的帖,有一點想說的是XP裝到延伸分區是沒問題的。 :)
能不能讓我看看fdisk顯示的hda4,即你的延伸分區,的類型?
_________________
AMD Athlon XP 2600+; 512M RAM;
nVidia FX5700LE; Hitachi 120Gb
2.6.9-nitro4, reiser4, linux26-headers+nptl

Do I like to compile everything?
Positive definite!
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Thu Dec 16, 2004 11:22 am    Post subject: Reply with quote

Hauser wrote:
稍微看了下你有關分區的帖,有一點想說的是XP裝到延伸分區是沒問題的。 :)
能不能讓我看看fdisk顯示的hda4,即你的延伸分區,的類型?


我那首帖里就给了当时的分区状况, 我当时是想往 /dev/hda15 上装 xp, 我试过用 fdisk 把 /dev/hda15 改成 fat32, ntfs, xp 始终拒绝往上面装... 我还试了在 bios 里设置了 LBA, 结果同样, 所以我现在把它给装在了 /dev/hda2 上, 总算老实了 ;)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
Hauser
l33t
l33t


Joined: 27 Dec 2003
Posts: 650
Location: 4-dimensional hyperplane

PostPosted: Thu Dec 16, 2004 11:31 am    Post subject: Reply with quote

這是我的fdisk有關的顯示結果:
Code:
/dev/hda2   *        1028       13103    97000470    f  W95 Ext'd (LBA)
/dev/hda5            1028        2054     8249346    7  HPFS/NTFS

_________________
AMD Athlon XP 2600+; 512M RAM;
nVidia FX5700LE; Hitachi 120Gb
2.6.9-nitro4, reiser4, linux26-headers+nptl

Do I like to compile everything?
Positive definite!
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Thu Dec 16, 2004 12:52 pm    Post subject: Reply with quote

我当时的是:

Code:
/dev/hda2              14        7299    58524795    5  Extended


莫非因为这个造成 xp 拒绝往上装?

如果我当时用 fdisk 把整个 extended 分区的类型改成如你的, 会对我 extended 分区里的各个逻辑分区造成影响么?

另, xp 有无 1024 柱面限制? 能把你完整的分区状况贴出来看看么? Thanks :)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
Hauser
l33t
l33t


Joined: 27 Dec 2003
Posts: 650
Location: 4-dimensional hyperplane

PostPosted: Thu Dec 16, 2004 1:22 pm    Post subject: Reply with quote

我都在猜是你建立Extended分區的時候用的分區類型可能不對。
EricHsu wrote:
如果我当时用 fdisk 把整个 extended 分区的类型改成如你的, 会对我 extended 分区里的各个逻辑分区造成影响么?

你指哪方面的影響?這是我的分區表:
Code:
Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1        1027     8249346    c  W95 FAT32 (LBA)
/dev/hda2   *        1028       13103    97000470    f  W95 Ext'd (LBA)
/dev/hda3           13104       13997     7181055   83  Linux
/dev/hda4           13998       15017     8193150   a5  FreeBSD
/dev/hda5            1028        2054     8249346    7  HPFS/NTFS
/dev/hda6            2055        3081     8249346    b  W95 FAT32
/dev/hda7            3082        5193    16964608+   b  W95 FAT32
/dev/hda8            5194        5447     2040223+  82  Linux swap
/dev/hda9            5448        9271    30716248+  83  Linux
/dev/hda10           9272        9283       96358+  83  Linux
/dev/hda11           9284       10328     8393931   83  Linux
/dev/hda12          10329       11857    12281661   83  Linux
/dev/hda13          11858       13103    10008463+  83  Linux

XP當然不受1024 柱面的限制啦,我的已經是從1028開始的了! :)
_________________
AMD Athlon XP 2600+; 512M RAM;
nVidia FX5700LE; Hitachi 120Gb
2.6.9-nitro4, reiser4, linux26-headers+nptl

Do I like to compile everything?
Positive definite!


Last edited by Hauser on Thu Dec 16, 2004 5:18 pm; edited 1 time in total
Back to top
View user's profile Send private message
tecehux
n00b
n00b


Joined: 01 Nov 2004
Posts: 46
Location: Germany

PostPosted: Thu Dec 16, 2004 2:26 pm    Post subject: Reply with quote

能不能先把“快若刀锋”的部分完成啊?安装是早就安装好了,只是想看看怎么能优化一下
Back to top
View user's profile Send private message
壳壳
n00b
n00b


Joined: 16 Dec 2004
Posts: 4

PostPosted: Thu Dec 16, 2004 4:31 pm    Post subject: 等着看向西内容呢. Reply with quote

希望看到详细步骤.
我也有些想重装,主要是使用了nptl后mono用不成了,together for eclipse装不了说没找到libc.so.6,我只到看libc.so.6,我想应该是gcc3.4才有吧.

为什么gentoo默认不用gcc3.4呢?怎么开启?
_________________
二十多岁了,不知道什么是幸福,什么是痛苦,整天蹦来蹦去,象只猴子.
Back to top
View user's profile Send private message
ts
Tux's lil' helper
Tux's lil' helper


Joined: 15 Dec 2004
Posts: 97

PostPosted: Thu Dec 16, 2004 9:37 pm    Post subject: Re: 等着看向西内容呢. Reply with quote

壳壳 wrote:
为什么gentoo默认不用gcc3.4呢?怎么开启?


升级你的 gentoo 到 2004.3,默认就是。
Back to top
View user's profile Send private message
ts
Tux's lil' helper
Tux's lil' helper


Joined: 15 Dec 2004
Posts: 97

PostPosted: Thu Dec 16, 2004 9:49 pm    Post subject: Re: 让你的 Gentoo 快若刀锋 Reply with quote

EricHsu wrote:
前言小结:
如果你现在还是其他发行版的用户, 而你又对兔兔跃跃欲试, 不妨参考我的稳中求进的做法:
1. 用虚拟机装成功一次 stage3
2. 在 stage3 成功经验的基础上, 用虚拟机成功安装一次 stage1
3. 在虚拟机成功安装 stage1 的基础上, 往硬盘的空闲分区实装一次 stage1, 并与你原有系统双启动. (注意, 为了避免任何数据丢失的惨剧发生, 请务必在实装前, 彻底备份你原系统里的所有重要数据! 因为在进行 fdisk 分区或 mkfs 格式化分区时, 任何一个字符打错, 有可能就让你原有分区彻底丢失, 或是指向错误设备, 格式化掉了存有重要数据的分区 - 例如你把 /dev/hdd5 打成 /dev/hda5...)


一般而言,对双系统,不需要太小心太稳,有 bootable CDs 随时挽救。对 linux,可备份一些 /boot or /etc 下的文件,如 fstab, 为偷懒时准备;对 winXP,备份一下 windows/system32/config 下的所有文件即可确保安全,这比备份注册表要简洁明了。
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Fri Dec 17, 2004 3:16 am    Post subject: Reply with quote

Hauser wrote:
我都在猜是你建立Extended分區的時候用的分區類型可能不對。


嘿嘿, 我当时是用 fdisk 进行分区的哦, 扩展分区的默认类型就是 "Extended" 嘛, 肯定不会是 "W95 Ext'd"... "不对" 呢, 呃, 从 windows 的 "标准" 而言就确实是 :lol:

Quote:

你指哪方面的影響?這是我的分區表:
Code:
Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1        1027     8249346    c  W95 FAT32 (LBA)
/dev/hda2   *        1028       13103    97000470    f  W95 Ext'd (LBA)
/dev/hda3           13104       13997     7181055   83  Linux
/dev/hda4           13998       15017     8193150   a5  FreeBSD
/dev/hda5            1028        2054     8249346    7  HPFS/NTFS
/dev/hda6            2055        3081     8249346    b  W95 FAT32
/dev/hda7            3082        5193    16964608+   b  W95 FAT32
/dev/hda8            5194        5447     2040223+  82  Linux swap
/dev/hda9            5448        9271    30716248+  83  Linux
/dev/hda10           9272        9283       96358+  83  Linux
/dev/hda11           9284       10328     8393931   83  Linux
/dev/hda12          10329       11857    12281661   83  Linux
/dev/hda13          11858       13103    10008463+  83  Linux



你的分区表好奇怪啊, 按照分区标准 (一时找不到相关链接...), hd?1 ~ 4 应该都是预留给 primary 分区的, 接着扩展分区 (extended) 是从 1 ~ 4 当中任何一个里取出来, 然后再在扩展分区里给出从 hd?5 起算的逻辑分区 (logical).

看我现在的:

Code:

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1           2       16033+  83  Linux
/dev/hda2   *           3         611     4891792+   7  HPFS/NTFS
/dev/hda3             612        1828     9775552+  83  Linux
/dev/hda4            1829        7299    43945807+   5  Extended
/dev/hda5            1829        1891      506016   82  Linux swap / Solaris
/dev/hda6            1892        2257     2939863+  83  Linux
/dev/hda7            2258        2501     1959898+  83  Linux
/dev/hda8            2502        4934    19543041    b  W95 FAT32
/dev/hda9            4935        7299    18996831   83  Linux


hda1 ~ 4 为 primary 分区, 其中 hda4 成为包含了 hda5 ~ hda9 这些逻辑分区 (logical) 的扩展分区 (extended).

Code:

hda1  hda2  hda3  [hda5  hda6  hda7  hda8  hda9]
                  +----------- hda4 -----------+


写到这里, 总算看明白你的分区解构了, 整理出来应该是这样:

Code:

hda1 [hda5 hda6 hda7 hda8 hda9 hda10 hda11 hda12 hda13] hda3 hda4
     +--------------------- hda2 ---------------------+


我现在想知道一个问题, 你在把 xp 安装到 /dev/hda5 上时, /dev/hda1 (类型为 W95 FAT32) 里是否已经有另一个 windows? (你现在是几个系统呢?) 如果你在安装 xp 的时候, /dev/hda1 里已经有个 windows, 那么 xp 安装时似乎可以把数据先放到 /dev/hda1 里, 然后把自己装到 /dev/hda5 里... 而我当时的情况与此不同, 我想让 xp 装上去的 /dev/hda15 之前的任何一个分区都是非 "windows 兼容" 的, 所以 xp 一直报怨说我的硬盘上没有它能容身的地方...

另外, 我说的 "影响" 是指, 如果现在用 fdisk 把你的 /dev/hda2 的类型从 W95 Ext'd 改成如 Extended, 会不会影响到它里面的 hda5 ~ 13 这些逻辑分区? 比如造成这些逻辑分区的消失? 数据的丢失?

Quote:

XP當然不受1024 柱面的限制啦,我的已經是從1028開始的了! :)


我是指 xp 的安装程序有没有这个限制... 1024 柱面不是意味着物理意义上的 1 ~ 1024 柱面以内哦, 它实际意思是:

以 Linux 为例 (回到以前还受 1024 柱面限制的时候), 最普通的情况, 我们把 /boot 放在 /dev/hda1, 启动时, bios 把启动任务交给 MBR 上的 lilo 之后, lilo 就开始找自己的程序体 (/boot) 里面, 它一下子就在 /dev/hda1 里找到了, 于是启动正常.

但是, 如果这时我们把 /boot 给放到某个 1024 柱面 (从 lilo 所在地 MBR 算起, 也就是大概 8 G 大小) 之后的某个分区里 (比如 /dev/hda15), 这时 lilo 就无法找到自己的程序体, 于是启动失败.

还有一种情况, 我们可以不用把 lilo 安装到 MBR, 而把它安装到 Linux 所在系统盘的第一个扇区里, 例如上面情况里的 /dev/hda15 里的第一个扇区. 这时系统的启动当然需要第三方的启动软件: 首先由 bios 交给驻留在 MBR 的第三方启动软件, 然后该软件把任务交给这时驻留在 /dev/hda15 上第一扇区里的 lilo, lilo 开始往后面找自己的程序体, OK, 立刻找到了, 于是系统同样正常启动!

也就是说, 所谓 1024 柱面的限制, 指的是启动程序的启动信息与自己程序体之间的距离必须在 1024 柱面之内, 或者这么说, 你的 lilo (或者 grub) 装在哪里, 那么就从哪里起算, 然后 +1024 柱面大小 (8 G 左右), 带有 lilo (或者 grub) 程序体的分区 (如果单独划了 /boot 就在 /boot 里, 如果没有单独划 /boot 就在 / 里) 必须在这个区间里, 否则无法启动.

所以, 如果 lilo 的启动信息写在了 MBR, 那么 /boot 或者 / 就必须放在物理意义上的 1024 柱面以内 (因为从 MBR 起算 + 1024 柱面), 如果把 lilo 的启动信息写到了系统盘的第一扇区里, 则此时就算该系统盘早就从物理意义上远在 1024 柱面之外, 同样不影响 lilo 对系统的启动. 不过这时就要求第三方软件本身能找到并把任务交给身在 1024 柱面之外的 lilo 了, 哈.

不知道我说明白没有? hh
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Fri Dec 17, 2004 3:42 am    Post subject: Reply with quote

to tecehux

我会努力的, 因为版面本身的工作还不少 (有时还得处理一些不合发贴指引的帖子或者乱码贴...), 所以, 大家一是给我点时间耐心等等 (装 gentoo 本身就需要耐心;) ) 另外则祈请大家对版面工作多支持, 务必看过发贴指引, 已了解发贴指引的朋友也多帮帮后来的朋友给他们以引导, 这样我们版面工作就轻松了, 就可以腾更多时间来为大家从技术上提供 service, 谢谢!

to 壳壳

libc.so.6 是 gcc 里应该都有的, 放在 /lib/libc.so.6 . 有些程序说找不到一些库文件, 是因为它们可能只针对某些发行版测试过, 那些发行版把一些库又放在了不一样的地方. 例如有些 gentoo 可能放在了 /lib/ 下, 而其他发行版则可能放在了 /usr/lib 里..

如果要整系统从最开始就使用 gcc34 来编译, 可能就得用 gcc34-x86-2004.2 这个 profile, 这个是经过我现在这个系统证实的 :) 至于 2004.3 是否 bootstrap 就是使用 gcc34, 哪位使用 2004.3 从 stage1 装完的朋友确认一下? 谢谢!

to ts

呵呵, 因为我试过分区错误, 一下子丢了 20G 数据的惨痛经历, 所以我胆子很小. 其实最重要的东西还是日常积累出来的数据, 系统坏了大不了重装, 而你写的论文, 做的软件不是重装就能回来的, 一个 mkfs /dev/hdd5 错打成 mkfs /dev/hda5, 你的所有心血可能就付诸东流 ;)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
wangxiaohu
Apprentice
Apprentice


Joined: 15 Nov 2003
Posts: 248

PostPosted: Fri Dec 17, 2004 4:52 am    Post subject: Re: 等着看向西内容呢. Reply with quote

ts wrote:
壳壳 wrote:
为什么gentoo默认不用gcc3.4呢?怎么开启?


升级你的 gentoo 到 2004.3,默认就是。


除了升级Profile,好像还得把ACCEPT_KEYWORDS设置成~x86才可以吧?

唉,什么时候GCC 3.4才能进x86 stable呢?实在不想用改mask的方法,太恶心。
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Fri Dec 17, 2004 5:06 am    Post subject: Re: 等着看向西内容呢. Reply with quote

wangxiaohu wrote:

除了升级Profile,好像还得把ACCEPT_KEYWORDS设置成~x86才可以吧?

唉,什么时候GCC 3.4才能进x86 stable呢?实在不想用改mask的方法,太恶心。


gcc34 在 ~x86 里, 不用 unmask :)
另外, ~ARCH 不是说这个软件本身不 stable, 软件本身肯定已经是 stable 的, 只是它在和系统中其他部分合作时 *可能* 会有问题 (造成系统整体的非 stable), 所以才 ~ARCH.

桌面用户嘛, ~ARCH - 玩的就是心跳 "~" ;)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
ts
Tux's lil' helper
Tux's lil' helper


Joined: 15 Dec 2004
Posts: 97

PostPosted: Fri Dec 17, 2004 5:10 am    Post subject: Re: 等着看向西内容呢. Reply with quote

wangxiaohu wrote:
除了升级Profile,好像还得把ACCEPT_KEYWORDS设置成~x86才可以吧?

唉,什么时候GCC 3.4才能进x86 stable呢?实在不想用改mask的方法,太恶心。


应该不需要改 mask, AMD64 都没问题,我想 x86 就更没有问题了。我的 AMD64 是从 stage1 开始装的,用 GCC 3.4,是在 bootstrap 时默认的,所以如果你想要 GCC3.4 就务必从 stage1 安装。 Good luck!
Back to top
View user's profile Send private message
壳壳
n00b
n00b


Joined: 16 Dec 2004
Posts: 4

PostPosted: Fri Dec 17, 2004 11:35 am    Post subject: Reply with quote

我把profile换成2004.3也不是gcc3.4啊?

而且我朋友是从2004.3装的,也是gcc3.3.4啊,难道只有AMD64是GCC3.4?
_________________
二十多岁了,不知道什么是幸福,什么是痛苦,整天蹦来蹦去,象只猴子.
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Fri Dec 17, 2004 11:48 am    Post subject: Reply with quote

壳壳 wrote:
我把profile换成2004.3也不是gcc3.4啊?

而且我朋友是从2004.3装的,也是gcc3.3.4啊,难道只有AMD64是GCC3.4?


如果希望整个系统都用 gcc 3.4 来构造, 使用 gcc34-x86-2004.2 profile 从 stage1 开始就可以, 所以我才写这个帖子 (虽然还没写完 ;) )
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
壳壳
n00b
n00b


Joined: 16 Dec 2004
Posts: 4

PostPosted: Fri Dec 17, 2004 11:52 am    Post subject: Reply with quote

我用了gcc34-x86-2004.2.profile可是
emerge -p gcc时,还是显示gcc3.3.4,为什么?
是不是必须从头开始阿?
_________________
二十多岁了,不知道什么是幸福,什么是痛苦,整天蹦来蹦去,象只猴子.
Back to top
View user's profile Send private message
bookstack
Apprentice
Apprentice


Joined: 27 Feb 2004
Posts: 245

PostPosted: Fri Dec 17, 2004 12:02 pm    Post subject: Reply with quote

有一些问题请教:

为什么boot要用ext2? 如果boot也用reiser4的话, 内核就不需要加载ext2的驱动了啊。

swap 的分法有待考虑。如果需要suspend2的支持的话,swap应该是Ram的 1.2倍。

/ 10G应该是不够的,如果要自己编译ooo的话。

强烈建议分一个 /opt出来,所有的不在portage里的应用都扔到/opt里去。包括像Matlab这样的商用程序,wine下面运行的windows应用。这样的好处就是如果重新作gentoo,portage里的东西都有,而且还有更新的版本,/opt里的东西也不用动了。

Hauser有空也写点东西出来阿,知道你在X/KDE上造诣很深的。
现在大多数轻快的DE都是用xfce4. 昨天试了一下,确实不错。但是KDE虽然bloating,但是所有的应用都是依赖qt, kdelibs的。xfce轻快,就希望所有的应用仅仅依赖gtk,——难阿,一堆的软件对gnome有强烈的依赖。Hauser能否说说KDE的优化?
Back to top
View user's profile Send private message
wangxiaohu
Apprentice
Apprentice


Joined: 15 Nov 2003
Posts: 248

PostPosted: Fri Dec 17, 2004 7:21 pm    Post subject: Re: 等着看向西内容呢. Reply with quote

EricHsu wrote:
wangxiaohu wrote:

除了升级Profile,好像还得把ACCEPT_KEYWORDS设置成~x86才可以吧?

唉,什么时候GCC 3.4才能进x86 stable呢?实在不想用改mask的方法,太恶心。


gcc34 在 ~x86 里, 不用 unmask :)
另外, ~ARCH 不是说这个软件本身不 stable, 软件本身肯定已经是 stable 的, 只是它在和系统中其他部分合作时 *可能* 会有问题 (造成系统整体的非 stable), 所以才 ~ARCH.

桌面用户嘛, ~ARCH - 玩的就是心跳 "~" ;)


很可惜,我用的是P2 366的笔记本,没那么多Power每天Emerge,所以只能用x86了。
Back to top
View user's profile Send private message
tecehux
n00b
n00b


Joined: 01 Nov 2004
Posts: 46
Location: Germany

PostPosted: Fri Dec 17, 2004 10:34 pm    Post subject: Re: 等着看向西内容呢. Reply with quote

Quote:

很可惜,我用的是P2 366的笔记本,没那么多Power每天Emerge,所以只能用x86了。


为什么不试试distcc呢?我的笔记本也弱的很,不过用distcc我可以同时用其它的机器带为笔记本优化的CFLAG来emerge
Back to top
View user's profile Send private message
druggo
Apprentice
Apprentice


Joined: 24 Sep 2003
Posts: 289
Location: Hangzhou, China

PostPosted: Sat Dec 18, 2004 5:47 am    Post subject: Reply with quote

哥们,快点完成帖子吧!
我希望最好能完成了再贴上来……
Back to top
View user's profile Send private message
Hauser
l33t
l33t


Joined: 27 Dec 2003
Posts: 650
Location: 4-dimensional hyperplane

PostPosted: Sat Dec 18, 2004 7:09 am    Post subject: Reply with quote

EricHsu wrote:
我现在想知道一个问题, 你在把 xp 安装到 /dev/hda5 上时, /dev/hda1 (类型为 W95 FAT32) 里是否已经有另一个 windows? (你现在是几个系统呢?) 如果你在安装 xp 的时候, /dev/hda1 里已经有个 windows, 那么 xp 安装时似乎可以把数据先放到 /dev/hda1 里, 然后把自己装到 /dev/hda5 里... 而我当时的情况与此不同, 我想让 xp 装上去的 /dev/hda15 之前的任何一个分区都是非 "windows 兼容" 的, 所以 xp 一直报怨说我的硬盘上没有它能容身的地方...


我裝xp的時候,hda1已經有個98了。嘻嘻,忘了考慮這個因素了。 :oops:

為了把問題搞清楚,我在vmware裡做了個實驗,fdisk建構的分區表是這樣的:
Code:
Disk /dev/hda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          73      586341   82  Linux swap
/dev/hda2              74        1095     8203545   83  Linux
/dev/hda3   *        1095        1107       98280   82  Linux
/dev/hda4            1107        1567     3694446+   f  W95 Ext'd (LBA)
/dev/hda5   *        1107        1472     2929941    7  HPFS/NTFS
/dev/hda6            1472        1567      764473+  83  Linux

hda1分了600M,hda2分8.4G,hda3分100M(作為/boot分區),hda4為Extended分區(包含了hda5和hda6,並在1024 磁柱以後)。結果我嘗試安裝xp的時候碰到了EricHsu所講的問題,非 "windows 相容",不給裝! :(

結果我用fdisk吧hda3改成了c即'W95 FAT32 (LBA)'的類型。這一次可以裝了,當然XP的安裝程式要求要將hda3(C: )和hda5(D: )先格式化啦。裝完之後,xp可以正常使用,但是啟動檔案全裝到hda3里了。後來我又在hda2里裝了個hiweed linux,然後用Grub啟動兩個OS,都沒問題。

這樣我們可以看到兩點:1.xp 不受 1024 磁柱限制。2.xp雖然可以裝到extended分區裡,但一定要在某個primary的分區有個立足點才行(至少安裝程式有這樣的要求,不過就不知道可不可以用vmware的physical disk方式安裝到extended分區裡,誰有條件的話可以試一試)。
_________________
AMD Athlon XP 2600+; 512M RAM;
nVidia FX5700LE; Hitachi 120Gb
2.6.9-nitro4, reiser4, linux26-headers+nptl

Do I like to compile everything?
Positive definite!
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Sat Dec 18, 2004 2:45 pm    Post subject: Reply with quote

壳壳 wrote:
我用了gcc34-x86-2004.2.profile可是
emerge -p gcc时,还是显示gcc3.3.4,为什么?
是不是必须从头开始阿?


看看你的 /etc/make.conf 里: ACCEPT_KEYWORDS 是不是等于 "~x86"?
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
EricHsu
Bodhisattva
Bodhisattva


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Sat Dec 18, 2004 3:08 pm    Post subject: Reply with quote

bookstack wrote:

为什么boot要用ext2? 如果boot也用reiser4的话, 内核就不需要加载ext2的驱动了啊。


请参考此帖的讨论 :)

Quote:

swap 的分法有待考虑。如果需要suspend2的支持的话,swap应该是Ram的 1.2倍。


sorry, 我没用过 suspend2, 不过, 非常谢谢你提供的信息, 可以具体说说 1.2 倍的理由么? 到时整理到我的帖子里, 不介意吧? (当然会在那个帖子里感谢你 :D )

Quote:

/ 10G应该是不够的,如果要自己编译ooo的话。


呵呵, 不记得在论坛哪里看过一篇帖子建议尽量不要自己 build Ooo, 因为一来耗时, 二来 Ooo 比较 "敏感", 有时一些编译器优化选项会让它出问题, 如果花了老长时间, build 到 80% 就出毛病了, 机器再快也是件让自己头痛的事吧 ;)

我自己本身不用 Ooo, 就算用也用 Ooo-bin... 破机器哦, 耗不起.

另外, 如果特地为了将来 "可能" 自己 build Ooo 而把 / 分大, 其实不太值得. 等到有一天真的想给自己的 cpu 找点事做, 让它 build Ooo 时, 完全可以通过 /etc/make.conf 中的:

Code:

# PORTAGE_TMPDIR is the location portage will use for compilations and
#     temporary storage of data. This can get VERY large depending upon
#     the application being installed.
#PORTAGE_TMPDIR=/var/tmp


来把硬盘上空闲的空间分给 Ooo 去编译, 对不?

Quote:

强烈建议分一个 /opt出来,所有的不在portage里的应用都扔到/opt里去。包括像Matlab这样的商用程序,wine下面运行的windows应用。这样的好处就是如果重新作gentoo,portage里的东西都有,而且还有更新的版本,/opt里的东西也不用动了。


个人 taste 问题, 我习惯于保持系统的 "清洁", 像 quake3, blackdown-jdk 这些软件在 portage 里, 可是 emerge 它们之后就装到 /opt 了, 这时再把 "不在 portage 里的应用" 也放 /opt 里, 似乎就不太好? 个人喜欢把非 portage 的软件扔自己 /home 目录帐号里的 apps 目录下, 一来系统保持最简, 二来自己的特殊需求也能得到满足 (对于家人而言, 他们则不需要用到我的这些软件, 所以就让这些软件呆在我的 /home 里;) )

当然, 归根结底是个人 taste 的问题, 所有意见仅供参考, 最好的方案来自自己的经验积累 :)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index 中文 (Chinese) All times are GMT
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum