Changchun Master Li

用 Gentoo Linux 打造开源 "Chrome OS"

2017-05-26

我有一个小笔记本ThinkPad X61, 我常常带着它去图书馆. 因为洋垃圾被偷了也不心疼 ; )
我对它的要求只有一个, 那就是能开网页, 方便查资料.

我最终寄托于 Gentoo 的灵活性. 跟着 handbook 安装一个 X without Display Manager 的系统并不难, 垃圾笔记本的死灰复燃却让我欣喜不已. 这大概是 FOSS 带给我们的快乐吧.


hardware

线

Lenovo_ThinkPad_X61 这里有一个现成的内核配置文件, 但是无线网卡是 Atheros 的.

ThinkWiki
ThinkPad 白名单固件, 破解 sata3

51nb
要牛逼网的中文教程


core system

安装 stage3

最开始我准备用更轻量的 uclibc 的 stage3, 结果安装过程中 bug 太多, 而且似乎不能安装 NetworkManager. 果然小众的架构小众的libc就是坑啊, 没办法折腾了半天还是回到了 glibc.

来源 handbook

1
2
3
4
5
6
7
8
9
10
# burn bootable LiveUSB 
# 注意: liveUSB 的 BootLoader 是 syslinux 而非 isolinux
dd if=/path/to/install-amd64-minimal-20170504.iso of=/dev/disk1 bs=8192k

# 不出意外, dhcp自动就连上了, 然后分个区 mkfs 一下
# 校对时间, 找个镜像站下载验证解压 stage3
ntpd -q -g
wget http://path/to/stage3-amd64-<release>.tar.bz2
sha512sum stage3-amd64-<release>.tar.bz2
tar xvjpf stage3-*.tar.bz2 --xattrs --numeric-owner

配置编译系统

CFLAGS 设置
GCC 优化
CPU 指令集
本地化 L10N
intel 显卡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# make.conf example

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

# 必须加上 X 标志, Chrome 依赖 X
# icu 支持 Unicode, cjk 支持 中日韩文
USE="X alsa cjk bindist networkmanager icu"

CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3"
VIDEO_CARDS="intel i965"
INPUT_DEVICES="evdev synaptics"

PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"

MAKEOPTS="-j3"

L10N="en-US zh-CN zh-TW"

GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"

配置源

1
2
3
4
5
6
# 选择 distfiles 镜像站
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

# 设置 ebuild 仓库
mkdir /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

chroot

1
2
3
4
5
6
7
8
9
10
11
12
# dns
cp -L /etc/resolv.conf /mnt/gentoo/etc/

mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

emerge-webrsync

值得赞的是 Gentoo 和 funtoo 一样也可以用 git 同步 ebuild 的了.


kernel

kernel 默认的基本就可以, 记得选上无线网卡的 driver
x16-kernel-config(intel-4965-bgn)

还有, 注意选上 Device Drivers -> Real Time Clock -> PC_style CMOS
不会在启动时报错

* Setting hardware clock using the system clock [UTC] …
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the –debug option to see the details of our search for an access method.
* Failed to sync clocks
* ERROR: hwclock failed to stop


necessary packages

完成安装后, 有这几个包是必须要装的

  • net-misc/networkmanager
  • x11-base/xorg-server
  • media-sound/alsa-utils
  • www-client/google-chrome

对网络, 图像, 声音进行支持.
只因为选择chrome而非开源的chromium是因为这是个二进制包终于不用再编译了集成了 ffmpeg 等库并且 flash pdf 一步到位.

Firmware
如果无线网络不可用是因为没有安装固件


performance and optimization

文泉驿字体

1
2
emerge media-fonts/wqy-zenhei
eselect fontconfig enable 18

ramdisk

1
2
# fstab
tmpfs /tmp tmpfs size=500m,mode=1777 0 0

Chrome

软件怎么用一定要查 Gentoo 的好基友 archlinuxwiki

cache in ramdisk

1
2
# .xinitrc
exec google-chrome-stable --disk-cache-dir=/tmp/cache --process-per-site

Shift+ESC 可以调出 Chrome 的任务管理器

浏览器 startx 全屏 chrome fullscreen

1
2
3
4
5
6
7
8
9
10
11
12
# /home/normaluser/.config/google-chrome/Default/Preferences
"window_placement": {
"bottom": 768,
"left": 0,
"maximized": true,
"right": 1024,
"top": 0,
"work_area_bottom": 768,
"work_area_left": 0,
"work_area_right": 1024,
"work_area_top": 0
}

X 键盘布局

1
2
3
4
5
6
7
8
9
10
11
# /etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
Identifier "keyboard-all"
Driver "evdev"
Option "XkbLayout" "us"

# 交换 左 control 和 caps lock; ctrl+alt+backspace 关闭 X
Option "XkbOptions" "ctrl:swapcaps,terminate:ctrl_alt_bksp"

MatchIsKeyboard "on"
EndSection

rc.local

注意 Gentoo 自家的 openrc 没有 rc.local

1
2
3
4
5
6
# /etc/local.d/local.start
!/bin/bash

# 不加 &, 不要后台执行, 这样关闭浏览器就会自动关机
su normaluser -c "startx"
init 0

最后, 我用lilo加了一个windows98的开机界面

同样的archwiki


useful referrence

https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet
https://wiki.gentoo.org/wiki/Equery


todo

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章