日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gentoo安装记录[20050216]

發布時間:2025/3/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gentoo安装记录[20050216] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原作者:
* 20050216: 我明天 (17 號) 要去武漢陪 gf 幾天, 順便找找工作 (如果你有武漢的工作信息, 記得一定給我發信或者直接聯系我! 非常非常感謝先!!), 可能有幾天上不來了, 所以趕緊把這帖子搞定啦! 大家有啥想法/意見的就跟帖提, 我回來改
* 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 安裝開始了...

前言小結:
如果你現在還是其他發行版的用戶, 而你又對兔兔躍躍欲試, 不妨參考我的穩中求進的做法:

  • 用虛擬機裝成功一次 stage3
  • 在 stage3 成功經驗的基礎上, 用虛擬機成功安裝一次 stage1
  • 在虛擬機成功安裝 stage1 的基礎上, 往硬盤的空閑分區實裝一次 stage1, 并與你原有系統雙啟動. (注意, 為了避免任何數據丟失的慘劇發生, 請務必在實裝前, 徹底備份你原系統里的所有重要數據! 因為在進行 fdisk 分區或 mkfs 格式化分區時, 任何一個字符打錯, 有可能就讓你原有分區徹底丟失, 或是指向錯誤設備, 格式化掉了存有重要數據的分區 - 例如你把 /dev/hdd5 打成 /dev/hda5...)
  • 利用此次實裝對 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, 我們需要用到很多刀鋒級別的東西, 像最新的技術, 最新的軟件包, 這同時意味著我們肯定會遇到很多的問題 (有些很可能別人都沒遇到過的). 因此, 在跟隨本貼前, 請確認你的心臟不會太弱, 且有足夠的勇氣, 耐性與準備去面對可能的困難, 且要有自己解決問題的能力. 怕被刀割傷的話, 那就不要玩刀

    不過呢, 至少你可以比我幸運一點, 因為我已經在前面給你死過一次了. 跟著我, 至少我能讓你不至于死得像我那么難看



  • 準備工作

    • 分區方案
      這是一個很大的話題, 從來沒有一個方案是萬用的 (如果不算 /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, 然后以它啟動
      我使用的是 lxnay 的 Gentoo 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 一開始就多猛, 關鍵先讓它在一定的優化條件下 (上面已經包含優化了, 只是沒到極致, 極致的優化是每臺機器都不同的) 順利跑起來, 隨著經驗的積累和知識的豐富, 你一定可以把自己的兔兔修煉至完美!

      參考鏈接:

      • Gentoo 手冊中關于 /etc/make.conf 配置的章節
      • Gentoo 手冊中關于 USE 配置的章節
      • 幾種常見 cpu 的 "安全" 以及 "最大" 優化的 CFLAGS 設置
      • Gentoo 論壇中關于 LDFLAGS 的討論

    • 網絡: 拷貝 DNS 信息
      Code:

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



  • 安裝系統

    • 切換到你的新系統中
      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
      ? ?



  • 安裝內核
    用兔兔的一大好處是可供選擇的東西多極了! 真正滿足我們打造度身定造自己的系統的需求! 之前的步驟讓我們有了一輛跑車應有的最好的一些重要零部件了, 下面我們要為這輛兔兔牌超級跑車選擇一個超級引擎 - 選擇一個最適合桌面應用的內核!

    我曾是 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
      ? ?


  • 安裝內核模塊/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


  • 安裝/配置系統的其他部分

    • 配置文件系統信息: /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.


  • 搞定啦! 準備重啟進自己折騰這么久裝出來的兔兔!
    Code:

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

    如果你順利重啟, 順利用之前創建的日常帳號登錄, 你就順利地締造了自己的兔兔啦!! 那要是不順利呢?? 呵呵, 把問題貼出來吧!

  • 還要干什么??
    如果你是第一次接觸 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 為起點, 省去很多步驟和時間!

    最后, 選擇你喜歡的窗口管理器/桌面環境/軟件工具裝吧!

  • 革命尚未成功, 同志仍需努力!
    就算我們把系統裝好, 定制好了, 后面還有很多很多的知識值得我們去探索, gentoo 的魅力, 或說開源世界的一大魅力便在于此: 開放, 自由 - 我們可以根據自己的興趣去深入自己喜歡的知識, 感受探索的快樂.

    記得有個比喻: windows 就像 disney 樂園, 孩子們在大人們設置好的保護下玩著孩子們的安全的快樂; 而 unix/linux 世界, 則仿佛一座原始大森林, 這里充滿了未知的新奇, 也不再有因保護而形成的束縛, 這里是真正的探險家們的天堂!

    gentoo linux 在眾多 liux 發行版中是有最多東西可以供我們探索的 (當然, 還有據說更猛的 LFS, hehe).

    用自己的一點小心得來結束這篇帖子吧:

    • 做好安全措施! 在進行任何你不確定的活動時, 一定要備份好數據, 做一個負責任的男人!
    • 別怕犯錯, 別完美主義 - gentoo 論壇上有個人的簽名檔里的一段話說得很好:
      Quote:

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

      "完美" 是在犯錯的過程中逐步減少出錯率的一個過程!
    • 隨時準備把同樣的事情再做一遍! 第二次做同一件事, 你一定能做得更好!



  • 帖子里有什么錯誤/不當, 或你希望我擴展的部分, 請跟帖指出/說明!
    謝謝你的對兔兔的熱情與對我這篇帖子的熱心! 希望這帖子能成為你與兔兔結緣的一點小小推動!

    隨后我還會陸續寫其他帖子 (只要有時間), 計劃中包括:

    • 打造最精簡的內核
    • 中文相關問題 (包括中文顯示/輸入, 軟件的中文問題... 用洋文寫給外國朋友, 問這方面問題的不少...)
    • ... (大家還想了解關于兔兔的什么??)

    總結

    以上是生活随笔為你收集整理的gentoo安装记录[20050216]的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。