E4rat - Arch Linux 中文维基

跳至內容

# E4rat

出自 Arch Linux 中文维基

本文或本節內容已經過時。

原因： 請提供模板的第一個位置參數以概括原因。 (在Talk:E4rat討論)

相關文章

- Improve Boot Performance (簡體中文)
- Preload
- Ext4 (簡體中文)

翻譯狀態：

- 本文（或部分內容）譯自 E4rat，最近一次同步於 2012-07-11，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

這篇文章或章節的翻譯質量不佳。

原因：Last updated in 2012（在 Talk:E4rat# 中討論）

e4rat，「Ext4 - Reducing Access Times」（減少ext4訪問次數）之略，是一款優化ext4文件系統、加速系統啟動的工具。該項目由 Andreas Rid 和 Gundolf Kiefer 發起。e4rat工具系列包含e4rat-collect、e4rat-realloc、e4rat-preload。

目前最新版本是0.21。

## 機制

如果你用bootchart監視開機過程，會發現CPU和磁碟均未全速運轉。e4rat將改變這一狀況，使系統啟動時CPU和磁碟全速運轉，從而加速啟動過程。此優化包括三步：

- e4rat-collect - 收集文件，在特定時間（默認120s，可調整）內收集文件信息
- e4rat-realloc - 文件再分配，在磁碟上整理文件
- e4rat-preload - 預讀取文件

### 對誰有效？

經證實，e4rat對一般用戶——直接進入X圖形界面——特別有效，但對於伺服器用戶——啟動到命令行——效果不怎麼明顯。此外，此工具對SSD（固態磁碟）用戶也沒用，因為SSD基本沒有讀取延遲。Ureadahead 可能會有效。

注意：e4rat 官方手冊 聲稱 ureadahead 與 e4rat 衝突，在 Ubuntu 中確實這樣，但是 Arch 中並無衝突，但有 ureadahead 的情況下，速度提升效果有限。

為保險起見，請及時備份數據。

## 安裝

從 AUR 安裝軟體包 e4ratAUR.

## 配置

現在進入正題。

### e4rat-collect

首先，e4rat需要收集開機時預讀的文件列表。添加如下內容到`/boot/grub/menu.lst`（grub）啟動項的`linux`行末尾，或`/boot/grub/grub.cfg`（grub2）啟動項的`kernel` 行：

    kernel /vmlinuz0linux root=/dev/disk/by-label/ARCH init=/sbin/e4rat-collect ro 5

)

由於該過程只需進行一次，所以我建議直接在grub命令行修改即可，而不必修改啟動菜單文件。

啟動後，e4rat-collect默認會監視系統120秒。所以請在兩分鐘內打開經常使用的程序，e4rat-collect會記錄下來（譯者註：我不建議預讀太多東西，這樣反而會拖慢開機速度）。可以在`/etc/e4rat.conf`中修改默認的120秒收集時間（`timeout 120`這一行，去掉注釋）。或者手動停止e4rat-collect：

    e4rat-collect -k

或者：

    pkill e4rat-collect

收集完成後，應該會出現這個文件：`/var/lib/e4rat/startup.log`

最後，不要忘記從`/boot/grub/grub.cfg`或`/boot/grub/menu.lst`中移除最開始添加的內容。

### e4rat-realloc

接著上一步進行文件再分配（通俗說就是磁碟整理）。先切換啟動級別1：

    sudo init 1

輸入root密碼，執行：

    e4rat-realloc  /var/lib/e4rat/startup.log

根據`startup.log`中文件的多少，或長或短要等一段時間。

注意：使用純 systemd 的用戶不需要修改 runlevels，用 root 登錄後執行 e4rat-collect 即可。

### e4rat-preload

永久性地，添加如下內容到`/boot/grub/grub.cfg`（grub）啟動項的`linux`行末尾，或`/boot/grub/menu.lst`（grub2）啟動項的`kernel`行：

    init=/sbin/e4rat-preload

注意：如果你正在使用grub2，內核參數最好添加到`/etc/default/grub` - `GRUB_CMDLINE_LINUX="..."`

### 另一選擇：e4rat-preload-lite

論壇用戶jlindgren提供了一個優化版本的preload程序，也許能幫你節約幾秒的開機時間：

優化之處在於：

- 啟動`/sbin/init`前，只預讀前100個文件（inode和文件內容），啟動`/sbin/init`後再並行地預讀其他文件。

從AUR中安裝該工具（譯者注，不要卸載e4rat，該包只提供preload）：e4rat-preload-liteAUR[損壞的連結：package not found]

添加（或替換）如下內容到`/boot/grub/grub.cfg`（grub）啟動項的`linux`行末尾，或`/boot/grub/menu.lst`（grub2）啟動項的`kernel`行：

    init=/usr/sbin/e4rat-preload-lite

重啟即可。

## 其他 init 程序搭配 e4rat

e4rat-collect默認會使用`/sbin/init`替換自己。如果使用其他init程序（比如 `/bin/systemd`），修改`/etc/e4rat.conf`中的`init`參數，並去掉前面的分號（注釋）即可。

## 啟動流程圖

通過bootchart繪製使用e4rat前後的啟動流程圖，可以直觀地看到巨大的優化。

### bootchart 0.9-9

添加如下內容到`grub.cfg`或`menu.lst`的啟動菜單項即可：

    init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload

該版本bootchart會在登錄管理器啟動後停止監視。

### bootchart2

添加如下內容到`grub.cfg`或`menu.lst`的啟動菜單項：

    init=/sbin/bootchartd

然後，手動修改`/sbin/bootchartd`的`init="/sbin/init"`這一行為`init="/sbin/e4rat-preload`。（譯者註：雖然程序說明上說，應該通過添加啟動參數設置init，但我試了，不行。）

`/etc/bootchartd.conf`的`EXIT_PROC`中可以設置哪些程序啟動後停止監視：

    EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"

留空的話，需要手動停止監視。

## 疑難解答

如果出現問題，請參考以下內容。

### startup.log 未創建

- 在`/etc/rc.conf`注釋掉`auditd`。
- 檢查下列命令的輸出：

    dmesg | grep e4rat

- 在`/etc/e4rat.conf`設置`loglevel`為`31`獲取詳細調試信息。

### e4rat 錯誤地報告文件系統為 ext2

- 添加如下內容到`/boot/grub/grub.cfg`啟動項的`linux`行末尾，或`/boot/grub/menu.lst`啟動項的`kernel`行末尾：

    rootfstype=ext4

### 無法讀取 startup.log

- 這說明你的`/var`和根目錄不在同一分區，因而開機時為掛載。可以修改`startup.log`文件位置（比如{ic|/etc/startup.log}}），方法是修改`/etc/e4rat.conf`：

    startup_log_file /etc/e4rat/startup.log

### 減少啟動時的信息輸出

在 `/etc/e4rat.conf` 中將 `loglevel` 減小到 1。

分類：​

- 使用「模板:過時」標記的頁面或章節
- 啟動過程
- 包含損壞的軟體包連結的頁面

隱藏分類：​

- 使用「模板:糟糕的翻譯」標記的頁面或章節

E4rat
新增話題