headermask image

header image

category archive listing Category Archives: Linux

Gentoo Linux Installation 3

自从上次之后,有大半年没有折腾 Gentoo 了,这个周末又研究了一下,在此小结一下。
1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单,等机器从 Linux 系统或者 LiveCD 启动之后,挂载相应的硬盘分区到 /mnt/gentoo, chroot 过去,接着就可以按照官方的安装文档走下去了。
2. 之前我都是 emerge gnome 的,但是感觉装了很多不想要的软件,比如 evolution 这家伙(我平时都用的是 thunderbird),所以这次安装我选择了 emerge gnome-light,大概可以少安装 100 多个包。至于 KDE 嘛,我还是不敢造次,看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍,太耗费时间了。
3. 一定要在 emerge 桌面系统之前,先 emerge –sync && emerge -avuDN world 一次,不然在安装桌面系统的过程之中会遇到一些被阻挡的包。
4. 每次 emerge world 之后记得要 revdep-rebuild 一下。
5. 在遇到和 Python [...]

Learning IPMI

IPMI 是 Intelligent Platform Management Interface (智能平台管理接口)的缩写。
IPMI 规格说明定义了一组可以被系统管理员用来监测和管理计算机系统的通用接口。
IPMI 独立运作于操作系统之外,并且允许管理员在没有操作系统或者系统管理软件存在的情况下远程管理计算机系统,甚至在系统关机的状态下也可以(但是系统需要接上电源)。
参考链接:
http://en.wikipedia.org/wiki/IPMI
http://en.wikipedia.org/wiki/Baseboard_Management_Controller
http://www.intel.com/design/servers/ipmi/
http://sourceforge.net/projects/openipmi/
http://sourceforge.net/projects/ipmitool/
http://sourceforge.net/projects/ipmiutil/

Gentoo Linux installation 2

昨天由于晚上临时加班,没有来得及安装 GNOME,但也不是没有折腾 Gentoo,而是参照 LinuxSir 论坛中的安装 Gentoo 疑难解答先升级了一次基本系统:
emerge –sync
emerge -avuDN world
man emerge 可以看到 –sync 选项用来启动一次 Portage 树的更新,而更新所使用的 rsync.gentoo.org 镜像是之前安装过程中使用 mirrorselect 来进行选择和设定的。另外,这里还涉及到了为 rsync 设置代理的问题,man rsync 会告诉你设置 RSYNC_PROXY 环境变量即可,每次都 export 会比较麻烦,于是我就把它加到了 /etc/make.conf 中。
剩下的 -a, -v, -u, -D 和 -N 选项的具体意义看看 man emerge 也都一目了然了。最后的 world 是 2 大软件包集合之一,另一个是 system。
今天早上,什么文档都还没有看,就先直接依葫芦画瓢的来了个 emerge -avuDN gnome (事实证明这样是会出问题的),开始 GNOME 安装的漫漫长路,260+ 的包需要全新安装。
结果第一个问题出现了,在安装 gtk+ 时报错了,错误信息告诉我是因为 cairo [...]

Gentoo Linux installation 1

昨天第一次尝试安装 Gentoo Linux 失败了,用的是其最新发布的 Gentoo 2008.0 LiveCD。用 LiveCD 启动电脑,进入 GUI 环境,用 Gentoo Linux Installer (GLI) 进行安装,貌似遇到了 Gentoo Bug 231037,install.log.failed 中的报错信息和 Bug 中的相同。失败的安装还弄乱了硬盘上的分区编号,原本挂载 Debian 根分区的 /dev/sda7 莫名变成了 /dev/sda5,导致从硬盘重启后遇到 GRUB Error 17,之后在 GRUB 菜单中手工修改了 root 和 kernel 的值,指向 /dev/sda5 才后再 boot,成功进入 Debian。最后还要记得进入系统之后编辑 /boot/grub/menu.lst 中对应的行。安装 Gentoo 失败之后向 Gentoo 中文发邮件求助,r0bertz 回复说 GLI 不是推荐的安装方法,应当按照手册用 stage3 一步一步地进行安装。
不甘心失败,今天继续实验。有了昨天的经验,今天的我至少已经不怕无法启动昨晚刚刚升级到 lenny 的 Debian 了。找到另外一个 [...]

A sample program for stat()

stat() is a Unix system call that returns useful data about a file inode.
今天在看一个 strace 的输出时,看到下面的一行:
19:42:00.545797 stat64(”/cdctest/orahome”, {st_mode=S_IFDIR|0755, st_size=8192, …}) = 0
Google 之后发现 stat64 背后就是 stat() 系统调用,这里有详细的介绍。
于是一时手痒,想自己写一个简单的程序来实验一下,就在自己的 PC 机(跑的是 Debian “etch” 4.0r5)上动手。
首先是搭建编译环境:
# apt-get install gcc build-essential
然后coding如下:

?Download test_stat.c1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio .h>
#include <stdlib .h>
#include <string .h>
#include <errno .h>
#include <sys /stat.h>
 
int main()
{
struct stat *buf;
const char *path = "/home/ftp/upload";
 
buf = [...]

My Linux toolkit

alias
ar
cat
cp -p
diff
egrep
fvwm
ftp
gdb
ifconfig
ksh
make
man
mutt
nano
Perl
rsh
ssh
strace
svn
tail -f
tar
top
vim
VNC
vsftp
wget
xterm

A glance of core dump

在平时的测试工作中经常碰到程序产生core dump的情况,什么是core dump?下面是摘自Wikipedia的core dump的定义:
A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally. In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and [...]

OCFS2 Installation

OCFS2 (Oracle Cluster File System 2)是由Oracle开发的通用集群文件系统,是一个以GPLv2许可发布的开放源代码项目。由于OCFS2是Cluster-aware的,所以很自然的可以作为RAC的存储的选择之一(其他的选择还有裸设备和ASM)。但是必须指出的是,Oracle home和datafile(还有redo log,archive log,control file,以及Clusterware的OCR和Voting Disks)不能放在同一个OCFS2 volume上。
最近尝试了一下将Oracle Clusterware 11gR1的OCR和VD放在OCFS2上,这里记录一下OCFS2的安装过程。
首先是确定所使用的Linux的发行版本(distribution),内核版本(version)和风格(flavor),处理器架构:
# cat /etc/redhat-release
Enterprise Linux Enterprise Linux AS release 4 (October Update 5)
# uname -r
2.6.9-67.0.4.0.2.ELsmp
# uname -p
i686
可以看到这里我使用的是Oracle Enterprise Linux 4u5(可以认为是等同于Red Hat Enterprise Linux 4u5),内核版本是2.6.9-67.0.4.0.2,内核风格是smp,处理器架构是i686(也就是x86)。
接下来按照上面的信息去下载相应的OCFS2和OCFS2 Tools(包括ocfs2-tools和ocfs2console)的RPM包。
# wget -c http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL4/i386/1.2.9-1/2.6.9-67.0.4.EL/ocfs2-2.6.9-67.0.4.ELsmp-1.2.9-1.el4.i686.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2-tools-1.2.7-1.el4.i386.rpm
# wget -c http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2console-1.2.7-1.el4.i386.rpm
删除掉现有的老版本的OCFS2相关RPM包:
# rpm -qa | grep ocfs | xargs rpm -e
依次安装刚刚下载的3个RPM:
# [...]