编译 Gentoo 及 LFS

上个周未突然来兴致说要编译一下 LFS 或者 Gentoo,所以看了一遍 Gentoo 及 LFS 的编译过程,就开始上手了。之前在大学的时候就尝试编译过 LFS——当时一些朋友说编译 LFS 是一个可以让人忘记上课,忘记睡觉,忘记吃饭的事——编译了30几个小时也没能成功,所以很挫败。

因为 Gentoo 的编译过程简单许多,就先拿它下手。照着文档,差不多就编译了一个内核,一个 Grub,过程并不复杂,也顺利,内核编译了两遍,第一次没有把 SCSI 编译进去,造成启动的时候认不出我的 SATA 硬盘,编译了第二遍终于可以了,很兴奋——原来编译 Gentoo 也是这么简单的事,然后又用 emerge 安装了 VIM 等一些常用软件,基本系统也终于可以用了。

然后又开始编译 LFS,照着文档,也顺利地编译好了环境与基本系统,最后到内核的时候也犯了很多错误,开始的时候是直接拿了 Arch 的Config编译的,把很多东西都编译成模块了,又没有做 initfs,系统没能启动。又开始找作 initfs 的方法,都失败了。又把驱动啥的都编译到内核里去,还是启动不了,不知为何。今天索性用 arch 的内核来启动 LFS,系统是启动了,可一些初始化的工作没有完成,最后发现是 inittab 里的启动级别没设置好,最后系统终于能正常启动了,撒花~

继续折腾系统去,有时间写写编译过程与注意事项~

Shell 快捷键(二)

Shell 快捷键 中,对 Linux Shell 下 Emacs 分割的快捷键组合进行
了整理和总结,为了方便对比记忆,这里重新根据功能进行归类。

光标移动

命令 说明
Alt + b 后移一个单词
Alt + f 前移一个单词
Ctrl + b 后移一个字符
Ctrl + f 前移一个字符
Ctrl + a 把光标移到行首
Ctrl + e 把光标移到行尾
ctrl + ← 光标移动到前一个单词开头
ctrl + → 光标移动到后一个单词结尾
Ctrl + x Ctrl + x 在 EOL 和当前位置移动光标

输入编辑

命令 说明
Ctrl + h 删除前一字符
Ctrl + d 删除当前字符
Ctrl + k 删除当前字符到行末
Ctrl + u 删除行首到当前字符
Ctrl + w 删除单词到当前字符
Alt + d 从当前位置向后删除单词
Alt + ← 从当前位置向前删除单词
—————- —————————————————————
Esc + t 互换相邻两个单词
Alt + t 互换相邻两个单词
Ctrl + t 互换相邻两个字符
—————- —————————————————————
ctrl + ? 撤消前一次输入
Alt + r 撤消前一次动作
—————- —————————————————————
Alt + l 小写当前单词
Alt + u 大写当前单词
Alt + c 首字母大写当前单词
—————- —————————————————————
^oldstr^newstr 替换前一次命令中字符串

终端管理

命令 说明
Ctrl + s 锁住终端
Ctrl + q 解锁终端
Ctrl + l 清除终端
Ctrl + d 退出终端
————– —————————————————————–
Ctrl + c 中止命令
Ctrl + z 挂起命令
ctrl + o 重复执行命令

命令历史

命令 说明
Ctrl + r 向后查询历史,增量地
Ctrl + s 向前查询历史,增量地
Alt + p 向后查询历史,非增量地
Alt + n 向前查询历史,非增量地
————— —————————————————————-
Ctrl + p / ↑ 显示上一条命令
Ctrl + n / ↓ 显示下一条命令
Alt + < 移动到历史的首行
Alt + > 移动到历史的末行
————— —————————————————————-
Alt + . 插入最后一个参数
Alt + _ 插入最后一个参数
Esc + . 插入最后一个参数
Esc + _ 插入最后一个参数
————— —————————————————————-
Ctrl + y 粘贴刚才所删除的字符
Ctrl + Alt + y 插入上条命令的第一个参数

自动完成

命令 说明
Alt + / 尝试自动完成文件名
Alt + ? 显示当前自动完成列表
Alt + * 插入所有可能自动完成

其他

命令 说明
Ctrl + i 同 Tab
Ctrl + j 同 Enter
Ctrl + v CHAR 输入特殊字符
Ctrl + x @ 显示所有的可用的主机名自动完成
Ctrl + x Ctrl + e 使用 vim 写入 script 一次执行
2T 命令行补全
(string)2T 命令行补全
$2T 列出系统变量
=2T 列出当前目录
/2T 显示整个目录结构,包括隐藏文件
./2T 只显示子目录,包括隐藏目录
*2T 只显示子目录,不包括隐藏目录
@2T “/etc/hosts” 文件的条目
~2T “/etc/passwd” 文件中系统所有的当前用户

Shell 快捷键

在使用 Shell 进行 Linux 操作时,经常需要编辑大段的代码,如果仅仅使用键盘的
Delete 和 Backspace 键,那是一件非常折磨人的事情。我们以 Linux 默认的 Bash
Shell 为例,他可以设定为多种 Mode,使其操作习惯类似于一些熟悉的编辑器,比如
emacs 或 vi。

  • 列出所有 Mode

    set -o

  • 使用 vi 操作习惯來操作 Bash Shell

    set -o vi

  • 使用 emacs 的操作习惯来操作 Bash Shell,默认即为此 Mode

    set -o emacs

下面总结以下 Bash Shell 采用默认 emacs Mode 时可用的一些快捷键,能够极大提高
Shell 的操作效率。

继续阅读Shell 快捷键

sshfs的配置

上个月新买了一个本本电脑,所以女人的旧电脑就算淘汰下来了。但我还得用我那07年的老爷机,在做开发上还是有些吃力,因此决定把原来共存于同一个系统的桌面环境和服务器环境分开,将服务器环境转移到淘汰下来的老爷机上,所以在上面装了个FreeBSD,以方便维护。但也因此出现一个问题,服务器的数据应该放在哪里,桌面机上还是服务器机器上。由于淘汰下来的机器可能会被我用来折腾,如挨个装发得版,或测试其它东西,所以我想把数据还是放在桌面机上;问题又来了,服务器如何能快速有效地访问这些数据,而不影响服务器的正常运作呢。

首先,想到的是用netbeans的远程站点功能。随后,又想到了利用 ssh 挂载远程文件系统的功能,把 Desktop 上的文件系统通过 sshfs 挂载到 Server 上。由于第一种方案需要依赖netbeans,所以我打算用第二种方案。

一、安装配置 SSHFS

安装 sshfs ,这个在 Arch 下用 pacman 安装即可,其它发行版应该都有相应的包管理器可以解决。在安装好 sshfs 之后,可以使用 # sshfs [USER]@[HOST]:[DIR] [MOUNTPOINT] [OPTIONS] 挂载远程的文件系统,使用 # fusermount -u [MOUNTPOINT] 进行卸载。当然,前提是远程系统上有 ssh daemon 运行。另外一个比较有用的参数是 -o allow_other,否则挂载的文件系统只有当前用户可用,其他用户无法访问。这样,就可以像操作本地文件一样来操作远程文件了。

继续阅读sshfs的配置

Debian VPS 在更新内核报错的问题

今天在Debian VPS上更新内核时碰到了问题,报错为

Setting up linux-image-2.6.32-5-686-bigmem (2.6.32-31) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-686-bigmem
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-686-bigmem /boot/vmlinuz-2.6.32-5-686-bigmem
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-686-bigmem /boot/vmlinuz-2.6.32-5-686-bigmem
Searching for GRUB installation directory ... found: /boot/grub
warning: grub-probe can't find drive for /dev/xvda1.
grub-probe: error: cannot find a GRUB drive for /dev/xvda1. Check your device.map.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-686-bigmem.postinst line 799,  line 2.
dpkg: error processing linux-image-2.6.32-5-686-bigmem (--configure):
subprocess installed post-installation script returned error exit status 2

之前在给公司的VPS作配置的时候也遇到了一样的问题,都是Xen的VPS,装的是Debian的系统,当时就只是把kernel的更新给keep了。今天自己碰到了一样的问题就细细琢磨了一下。看报错的情况是在更新Kernel的时候,没有找到装有GRUB的设备。下面是我解决的步骤:
继续阅读Debian VPS 在更新内核报错的问题

ispcp中proftpd连接失败

在VPS上装了个ISPCP,以方便主机管理。

装好后发现FTP连不上,在VPS上也看到proftpd已经在运行了。担就是连不上,删除掉ISPCP的proftpd的配置文件,用回默认了便可以连接了。

看来是ISPCP中proftpd的配置问题,diff了两个proftpd.conf文件,差别很大,看来ispcp改到了很多的配置,找了好,最终把目光锁定在proftpd_mod_mysql这个配置中,发现它有连接数据库的配置以某用户名去连接mysql数据库。再检查数据库中的配置,原来mysql并没有创建proftpd配置文件中的用户。用去创建该用户即可连接到proftpd了。

GNOME3 字体更改

Gnome3 中,gnome-tweak-tool工具确实比较弱,有些鸡肋…只能修改一点点东西,包括字体的修改。

1、桌面,窗口等字体修改可以在gnome-tweak-tool中完成。

2、面板字体修改 /usr/share/gnome-shell/theme/gnome-shell.css,但好像不能直接用中文,可以UNICODE,不过,还是建议用英文字体名。

改完后重新载入gnome-shell,或重启X