install

menuentry 'netboot1604' {
	linux /netboot1604/linux \
		locale=en_US.UTF-8 \
		console-setup/ask_detect=false \
		keyboard-configuration/layoutcode=us \
		\
		netcfg/get_hostname=ali-59375n \
		netcfg/get_domain= \
		\
		url=http://a.oolap.com/ubuntu1404.seed \
		\
		#debian-installer/exit/poweroff=true \
	
	initrd /netboot1604/initrd.gz
}

preseed

tasksel tasksel/first multiselect standard, ubuntu-mate-desktop
d-i pkgsel/include string openssh-server vim curl debconf-utils aptitude tmux

联想 yoga 笔记本尝试网络安装时, wifi 和 usb 网卡都未能连上网络, 看了一下缺少 usb 网卡驱动。 尝试从移动设备加载驱动, 拷贝驱动到 U 盘, 也未能加载。 网上找到这篇帖子: http://askubuntu.com/questions/6499/provide-driver-on-removable-media-during-installation 。 按帖子说明, 可在安装程序启动后切换到 shell, 拷贝驱动到系统目录 /lib/modules/$(uname -r)/ 下手动加载。 安装程序实际也启动了一个 mini linux 系统, 可先在已有系统安装相同版本的完整内核, 找到对应内核模块拷贝出来。

如拷贝 usb 网卡驱动 ax88179:

$ cd /lib/modules/4.10.0-14-generic
$ find kernel/ -name 'ax88179*'
kernel/drivers/net/usb/ax88179_178a.ko
$ grep -F $(find kernel/ -name 'ax88179*'): modules.dep
kernel/drivers/net/usb/ax88179_178a.ko: kernel/drivers/net/usb/usbnet.ko kernel/drivers/net/mii.ko

$ mkdir -p /media/$USER/usb/$PWD/
$ rsync -rtvi $( grep -F $(find kernel/ -name 'ax88179*'): modules.dep | tr : ' ' ) -R /media/$USER/usb/$PWD/

如何查看设备对应的内核模块, 可参考 http://askubuntu.com/questions/216110/how-do-i-find-what-kernel-module-is-behind-a-network-interfacehttp://askubuntu.com/questions/31618/how-can-i-find-my-hardware-details 。 先使用 ip link 查看网卡名, 然后使用 lshw, lspci 命令查看对应的内核模块。

$ ip link
# ... ...
4: enx000ec6c89508: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0e:c6:c8:95:08 brd ff:ff:ff:ff:ff:ff

$ lshw | grep -Fw enx000ec6c89508 -A 20
WARNING: you should run this program as super-user.
       logical name: enx000ec6c89508
       serial: 00:0e:c6:c8:95:08
       size: 10Mbit/s
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=ax88179_178a duplex=half link=no multicast=yes port=MII speed=10Mbit/s

如上看到 driver=ax88179_178a 即为对应的内核模块。 启动安装程序后, 拷贝内核模块到系统目录, 并执行 depmod, modprobe 安装内核模块。

mkdir /media/usb
mount /dev/sda1 /media/usb/
cp -r /media/usb/lib /
depmod
modprobe ax88179_178a

注意: 需要加载 ahci 内核模块后才能看到本地磁盘, 安装程序初始状态连这个模块也没安装, 所以看不到本地磁盘, 这里 /dev/sda1 是 U 盘。 depmod 是更新内核模块的依赖关系, modprobe 从系统目录安装内核模块。

全局配置

# server 配置
sudo ubu-init.sh

# fix terminal color
sudo mv /usr/share/themes/Ambiant-MATE/gtk-2.0/apps/gnome-terminal.rc{,-bak}
sudo touch /usr/share/themes/Ambiant-MATE/gtk-2.0/apps/gnome-terminal.rc
sudo mv /usr/share/themes/Ambiant-MATE/gtk-3.0/apps/gnome-terminal.css{,-bak}
sudo touch /usr/share/themes/Ambiant-MATE/gtk-3.0/apps/gnome-terminal.css
# fix tooltip color
sudo sed -i -r -e 's/tooltip_bg_color\:\#\w+/tooltip_bg_color:#FFFFAF/' \
-e 's/tooltip_fg_color\:\#\w+/tooltip_fg_color:#000000/' \
/usr/share/themes/Ambiant-MATE/{gtk-2.0/gtkrc,gtk-3.0/settings.ini}

# sogou
echo 'deb http://archive.ubuntukylin.com:10006/ubuntukylin/ xenial main' | sudo tee /etc/apt/sources.list.d/sogoupinyin.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D259B7555E1D3C58
sudo aptitude update

sudo aptitude install -y language-pack{,-gnome}-zh-hans firefox-locale-zh-hans
#sudo aptitude install -y ibus-sunpinyin
sudo aptitude install -y sogoupinyin
# "开始" -> "系统" -> "首选项" -> "个人" -> "语言支持",
# "键盘输入法系统修改为 "fcitx"。重新登录, 配置 sogou 输入法。

sudo aptitude install -y flashplugin-installer
sudo aptitude install -y git
sudo aptitude install -y gitk git-cola
# 交换复制完整路径 (默认 COPY, Ctrl-C) 和相对路径 (默认 CUT, Ctrl-X) 两个快捷键.
sudo sed -r -i -e '/hotkeys\.COPY/ { s#hotkeys\.COPY#hotkeys.CUT#g ; b } ; s#hotkeys\.CUT#hotkeys.COPY#g' /usr/share/git-cola/lib/cola/widgets/status.py
#sudo aptitude install -y gconf-editor
sudo aptitude install -y shutter

sudo adduser --gecos '' --gid 1000 observer.hany
sudo usermod -a -G 4,24,27,30,46,113,129 observer.hany
sudo chfn -o umask=0002 observer.hany

合上笔记本时不要休眠, 参考: http://askubuntu.com/questions/15520/how-can-i-tell-ubuntu-to-do-nothing-when-i-close-my-laptop-lid

修改默认配置

参考: http://askubuntu.com/questions/214168/default-gconf-and-dconf-for-all-users (未测试)

/usr/share/glib-2.0/schemas/ 目录下创建 *.gschema.override 配置, 覆盖默认配置.

个人配置

退出当前用户, 语言选择中文 "zh_CN" 重新登录.

  • 下面板 "工作区切换器" 右键 "Preferences", "Number of workspaces" 设置为 1. "显示桌面" 和 "回收站" 移动到上面板右上角, 删除所有插件: 任务栏, 工作区切换器。 添加 Mate "主菜单" 和 "Dock". 右键 "属性" 取消 "扩展", 大小修改为 48 像素, 拖到屏幕左边. "Dock" 右键, "Dock Preferences", "Indicators" tab 勾选 "Display an indicator for each open window". "Windows" tab, 选择 "Restore all of clicked app's windows".
  • 上面板删除右上角关机按钮, "显示桌面" 和 "回收站" 移动到最右边. 时间和日历插件设置当前城市. 删除左侧插件: menu bar 和图标, 属性取消 "扩展", 拖到右下角.

  • 电源管理. 主菜单 "系统" -> "控制中心" -> "电源管理", 关闭笔记本上盖时选择 "不执行动作", 电池供电空闲30分钟后转入睡眠, "常规" tab 按下电源按钮时 "关机".

# cli 操作 (未验证)
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action nothing
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action nothing
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 1800
gsettings set org.gnome.settings-daemon.plugins.power button-power shutdown
  • "控制中心" -> "鼠标","触摸板" tab,"滚动" 设置 "双指滚动"(默认 "边界滚动"?),勾选 "开启自然滚动"。

  • 打开 shutter, "Edit" -> "Preferences", "Main" tab, "Sava" 选择 "Do not save file automatically".

echo 'LANG=zh_CN.UTF-8' > ~/.pam_environment

## pluma
# "查看" tab, 取消 "启用自动换行
gsettings set org.mate.pluma wrap-mode GTK_WRAP_NONE
# "编辑器" tab, 选中 "启用自动缩进"
gsettings set org.mate.pluma auto-indent true
# "字体和颜色" tab, 配色方案选择 "Classic"
gsettings set org.mate.pluma color-scheme classic

## gedit
# "编辑" -> "首选项".
# "查看" tab, 勾选 "显示行号", 取消 "启用自动折行"
gsettings set org.gnome.gedit.preferences.editor display-line-numbers true
gsettings set org.gnome.gedit.preferences.editor wrap-mode none
# 勾选 "突出显示当前行"
gsettings set org.gnome.gedit.preferences.editor highlight-current-line true
# "编辑器" tab, "制表符宽度" 修改为 "4", 勾选 "启用自动缩进", 取消 "在保存前创建备份文件".
gsettings set org.gnome.gedit.preferences.editor tabs-size 4
gsettings set org.gnome.gedit.preferences.editor auto-indent true
gsettings set org.gnome.gedit.preferences.editor create-backup-copy false
# "使用空格代替制表符插入"
#gsettings set org.gnome.gedit.preferences.editor insert-spaces true
# 显示文件末尾换行符
# @see https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/379367
gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false

# mate-terminal
# FIXME: 不能使用命令行设置, 只能手动操作.
# 配置文件首选项, "常规" tab, 勾选 "允许粗字体"
#gsettings set org.mate.terminal.profiles.default allow-bold true
# 勾选 "使用自定义默认终端大小", 默认大小设置 132x34.
#gsettings set org.mate.terminal.profiles.default use-custom-default-size true
#gsettings set org.mate.terminal.profiles.default default-size-columns 132
#gsettings set org.mate.terminal.profiles.default default-size-rows 34
# "滚动" tab, 回滚设置 "5120" 行
#gsettings set org.mate.terminal.profiles.default scrollback-lines 5120

# 禁用 "<Alt>F5" 全局快捷键, 避免与 eclipse m2e "Update Project..." 快捷键冲突.
# "开始" -> "系统" -> "控制中心", 打开 "键盘快捷键", 
# "窗口管理" 组找到 "恢复窗口", 默认快捷键为 "<Alt>F5", 清除该快捷键.
# 命令行 tips: 找到上述窗口进程为 "mate-keybinding-properties", 
# dconf-editor 搜索 "keybind" 找到配置路径.
gsettings set org.mate.Marco.window-keybindings unmaximize disabled