基于(LFS)构建一个属于自己的Linux(一)

想挑战LFS很久了,终于从今天开始动工制作了。以前虽然没有动手开始创建LFS,但是也积累了不少的相关信息,一切都还算顺利。

今天是第一天,主要的工作是编译工具链和一些系统工具为Building the LFS System作准备。

准备HOST(宿主)系统,没有使用LFS-LiveCD, 而是在虚拟机中安装LinuxMint(没有特殊的含义),在开始之前需要在LinuxMint中安装编译LFS的相关工具。

sudo apt-get install build-essential bison

LFS 的版本为 6.5

LFS 提供了一个文件, 其中包含了构建LFS所有用到的源码下载链接 LFS-BOOK-6.5-wget-list

可以使用wget下载这些源码

wget -c -t 2 -i LFS-BOOK-6.5-wget-list -o down.log

需要注意的是,Perl-5.10.0 的路径已经被移除,取而代之的是Perl-5.10.1。采用了新的版本Perl后,原来针对5.10.0的patch就不用了。

依照LFS-BOOK的指示,编译起来还是很顺利的。如果英文不好可以对照着金步国翻译的中文版的LFS-BOOK-6.2

通常编译的步骤如下,先解压源码包,如果有patch则应用patch

patch -Np1 -i path_of_the_patch

之后就是念咒语

./configure --prefix=/tools #需要根据文档指示
make
make install

具体的编译还是应该参照文档,除非你运气真的很背,否则都会通过的。

编译是一件苦力活,根据机器的性能,也许会耗费你一天甚至更长的时间。其实也有自动化的操作,但是动手敲上一段咒语还是有很多额外的收获。

到此,编译了N个程序后准备工作就告一段落了,编译的这些程序是新世界的基础,很重要、也很费时! 接下来进入 Building the LFS System


阿凡达 Avatar

说啥呢? 其实对于电影本身真的没啥好说的,有条件的去看IMAX+3D,没条件的看普通3D,剩下没条件的去创造条件到电影院看。

不在电影院看《Avatar》就等于没看过!

鼓吹完大家为美帝国贡献GDP之后,来谈谈Avatar背后的故事吧。

作为技术人员,研究一下电影背后的有关技术的话题,还是很有意思的。《Avatar》所带来的震撼是科技的进步!

  为了能百分百的表现潘多拉这个奇绝的梦幻世界,卡梅隆使用了三项突破性技术:虚拟摄像技术、表情抓取,和联合数字立体摄影机(fusion camera system)。
  
  虚拟摄像机技术目前为止还主要用于3D虚拟世界游戏,比如《塞尔达传说》系列游戏,游戏者控制虚拟世界中自己的人工智能体,将人物行为信息实时双向反馈,人物所处的三维立体环境随着其动作位置变化实时发生变化。在《阿凡达》中,演员佩戴无数感应器进行“行动抓取”,电脑对抓取的数据直接进行处理,将其所代表的虚拟人物按预制比例直接显示在监控器上,从而使导演能实时观测虚拟人物与虚拟电子潘多拉世界的交互效果。
  
  表情抓取指抓取演员表情的电脑图形技术。卡梅隆在洛杉矶的Playa Vista建立了一个比一般表演抓取工作室大5倍的专门舞台(the volume),安装了120个固定摄像头,全角度抓取演员表演的全部信息;扮演Na’vi人的演员同时佩戴一个特制的帽子,由一部微型摄像机详细记录其在表演中面部表情的一切变化。卡梅隆希望借此传输95%的演员表演和面部表情信息到他或她的数码虚拟人物身上。结果便是无比逼真的成像效果,观众完全无法区别真人与虚拟人物的交互。
  (http://www.popularmechanics.com/technology/industry/4339457.html)
  
  联合数字立体摄影机则是导演卡梅隆和数字摄像技术创新者,摄像师Vince Page共同开创的3D立体摄像系统。此系统使用两台索尼HDC-F950 高清摄像镜头,如同人的左右眼一样距离大约70毫米同时拍摄,随着人物距离镜头远近的变化自动调整左右两个镜头之间的距离,并将数据传回相应的EVS XT[2]成像处理系统进行合成,制造出最类似人眼的立体景深感受。联合数字立体摄影机如今已被广泛用于了不少3D电影的拍摄,包括卡梅隆自己使用同一技术拍摄的3D纪录片《深海异形》。
  (http://video.google.com/videoplay?docid=-241532803911842846#)
  
  没有这三项技术创新就没有那种身临其境的潘多拉星体验,观众就不能切身体会那种神秘、迤逦、瑰奇,不能感受身骑龙鸟翱翔的速度、不能领会漫游夜森林的色彩,不能感知生命之树的呼吸与呢喃。而这一切的感受都是属于影院的,是确保故事逼真情感真切的关键。

作为程序员,当看到 Fenng 的这篇文章 制作《阿凡达》特效的超级计算机时,我的心加速跳动了几下。

Linux!

HP Cluster Platform 3000BL 集群平台作为其解决方案, 操作系统是 Linux!

看到了吧,研究和使用Linux是大有前途的,可大(大型集群)、可小(嵌入式),作为程序员的你,赶紧加入这趟Linux高铁吧!


在linux上使用swap文件

作为个人用户,为swap分一个磁盘分区有些浪费,其实我们可以使用swap file来替代swap 分区,而且还可以很方便的调整swap file文件的大小。

To add a swap file:

1. Determine the size of the new swap file and multiple by 1024 to determine the block size. For example, the block size of a 64 MB swap file is 65536.

2. At a shell prompt as root, type the following command with count being equal to the desired block size:

      dd if=/dev/zero of=/swapfile bs=1024 count=65536

3. Setup the swap file with the command:

      mkswap /swapfile

4. To enable the swap file immediately but not automatically at boot time:

      swapon /swapfile

5. To enable it at boot time, edit /etc/fstab to include:

      /swapfile               swap                    swap    defaults        0 0

The next time the system boots, it will enable the new swap file.

6. After adding the new swap file and enabling it, make sure it is enabled by viewing the output of the command cat /proc/swaps or free.

参考:
RHL-8.0-Manual

EOF


我的Linux-KVM




kvm

Originally uploaded by tairan.wang

用Linux当HOST有很多好处,有很多自由的虚拟机软件可以使用。现在我选择的是 Kernel-based virtual machine — KVM。


TMD还是Linux的桌面好用

本人过着双重生活,白天在MS讨生活,夜晚沉浸在Linux的世界中。一直以来总是认为Windows的桌面环境,尤其是WIN7要比Linux的桌面要易用一些,毕竟Windows是傻瓜化的操作。可今天我才发现Linux的桌面其实更好用。

在本人的双重世界中,Linux的运行时的硬件总是距今有3-4年之久,而Windows的硬件却是当今主流中端配置。所以在在Linux上运行桌面时总感觉没那么的流畅,没有Windows的方便。当我给Linux一个当今低端配置时,Linux世界发生了翻天覆地的变化。输入法也不迟钝了,窗口切换也流畅了,高清电影播放ok了,再跑个Virtual Box玩XP也绰绰有余了。

如此的好处只能自己亲自体验才行,如果你不相信的话,赶紧装个Linux试试!

废话少说,有图为证:
Linux Mint desktop


The Linux initating order

Linux 启动顺序 转自 http://blog.csdn.net/Tcrazyalways/archive/2008/11/27/3391243.aspx

了解了Linux的启动顺序有利于在系统启动时enable/disable各种系统服务

Linux 启动顺序:
1、 BIOS自检
2、 运行系统内核并检测硬件
3、 运行系统的第一个进程init
4、 init读取系统引导配置文件/etc/inittab中的信息进行初始化
/etc/rc.d/rc.sysinit——系统初始化脚本
/etc/rc.d/rcX.d/[KS]*——根据运行级别配置服务
/etc/rc.d/rc.local———执行本地特殊配置
其它———不同运行级别的特殊服务

Linux启动运行init程序来启动相关程序初始化,与启动相关的一个概念是运行级,运行级是操作系统当前运行的级别,在不同运行级别上可以定义属于该运行级的启动程序,系统的运行级别可以在/etc/inittab文件指定,与运行级相关运行程序通过从源/etc/rc.d/init.d下链接到目的/etc/rcX.d,这里X为系统的默认运行级别,因此,默认的启动脚本放在/etc/rc.d/init.d下。

# 缺省的运行级,Linux用到的级别如下:
# 0 – 停机(千万不要把initdefault 设置为0 )
# 1 – 单用户模式
# 2 – 多用户,但是没有 NFS
# 3 – 完全多用户模式
# 4 – 没有用到
# 5 – X11
# 6 – 重新启动 (千万不要把initdefault 设置为6 )
#

对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。

如何让系统在启动是运行指定程序,根据启动顺序中的第四步,有两种方式。
一种方式是根据运行级别配置服务。
一种方式是执行本地特殊配置。
举例,任务在启动是运行命令cvslockd:
方式一:
1. 建立自启动脚本/etc/rc.d/init.d/cvslockd,内容为:
#!/bin/bash
/usr/local/bin/cvslockd

设置文件的属性为可执行:
#chmod +x /etc/rc.d/init.d/cvslockd

2. 查看计算机运行级别,在文件/etc/inittab里看到id:5:initdefault:,则此系统运行级别为5。
3. 到/etc/rc5.d目录下,把你要执行的可执行文件做一个软连接,而且在命名的时候要以大写S字母开头,S之后的数字大小代表执行顺序的先后,数字越大越后执行。
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd

方式二:
在/etc/rc.d/rc.local 添加 exec /usr/local/bin/cvslockd
该方式是在最后启动cvslockd。


The note of install Hyper-V on Windows 2008 Server

Windows 2008 Server 上安装和使用 Hyper-V 笔记

安装 Hyper-V 有几个硬性要求
1. CPU 支持 Virtualization
2. 宿主操作系统需要是 64bit

在安装过程中有几个需要注意的地方
1. 宿主操作系统的Location必须是United States的,否则 Hyper-V Virtual Machine Management Service不能启动
2. 如果CPU 支持 Virtualization 却不能启动 Guest 操作系统,那么需要检查主板BIOS中是否将 Virtualization 打开,BIOS已经打开也不行的话,那么升级下BIOS就可以了。我的 HP dc5750 就是升级到最新的BIOS才行的

Hyper-V Guest 操作系统的支持
Hyper-V 和 VPC Server 相比是明确提出支持 Linux 的,可这并不代表所有的 Linux 发行版都能不错的运行在 Hyper-V 上面。下面是 Microsoft 提供的支持 Linux 列表,更多的支持访问 http://www.microsoft.com/windowsserver2008/en/us/hyperv-supported-guest-os.aspx

Linux Distributions (VMs configured with 1 virtual processor only)
      SUSE Linux Enterprise Server 10 with Service Pack 2 x86 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 2 x64 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 1 x86 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 1 x64 Edition

经过多个发行版安装测试,Ubuntu 8.10, Slackware 12.2, CentOS 5 是无法安装的。ArchLinux 倒是可以不错的运行在 Hyper-V 上面。
安装 Linux 时需要注意的是,网络设备需要使用 Legacy Network Adapter

总结
Hyper-V 比 Virtual PC Server 是一个很大的进步,在实际中使用 Hyper-V 还有很长的路要走,Hyper-V 支持的 Guest 系统都好贵,而且 Hyper-V 本身就只能在一个很贵的 Windows 2008 Server 上使用!还是使用 Linux 作为 Host 划算,而且更自由!


Install GRUB using grub-install

用过GRUB以后才知道这个玩意的强大。GRUB加上各种Linux kernel,可以组合成各种启动和安装系统方式。
现在总结一下安装GURB。

环境:
Virtual Box #虚拟机
LFS-LiveCD #提供安装GRUB环境

省略若干配置虚拟机的文字…

我们需要在一块新磁盘上安装GRUB,这块磁盘在系统中为 /dev/hda

首先要分区,格式化。(fdisk, mkfs.xfs)。目前GRUB也支持XFS文件系统启动了

挂载分区

mkdir /tmp/hda
mount /dev/hda1 /tmp/hda

安装

grub-install --recheck --root-directory=/tmp/hda /dev/hda

注意:
如果不挂载分区,我这里会提示,不知道其他人有没有遇到这个情况

grub-install does not have any corresponding BIOS drive

另外在指定驱动器的时候不需要指定分区号 (hda1)

至此,GRUB就安装结束了,重启计算机后就会发现GRUB的提示环境了。


Multisystem boot via GRUB

以前安装多系统(Linux®+Windows®)都是在一个硬盘上,先安装Windows后安装Linux,然后使用GRUB (or LILO)来引导系统。
如今生活富裕了,硬盘也多了起来,为了更方便的重装系统。我把Linux®和Windows®分别安装在不同的硬盘上。这时就不用严格限制安装系统谁先谁后了。(其实不是Windows®是笨,而是故意不支持通用引导)
硬盘物理连接结构如下
hdd0 — Primary IDE 安装 Linux
hdd2 — Second IDE 安装Windows
为什么不在同一根IDE线上安装硬盘呢?往下看
安装Linux并使用GRUB作为boot程序
进入BIOS,把 Primary IDE 设置为 Disable
安装Windows,此时Windows会将hdd2认作当前计算机中的Primary Disk,这样就会在hdd2的MDR创建引导文件。系统安装完毕,这样就可以通过在BIOS来设置first boot来分别引导Linux或Windows了。
接下来配置GRUB,通过GRUB来引导Windows,而不是频繁的修改BIOS。
编辑 /boot/grub/menu.lst 加上下面的代码

title Windows XP
map (hdd0) (hdd2)
map (hdd2) (hdd0)
rootnoverify (hdd2,0)
chainloader +1

这段配置中最重要的就数那两行map指令了。这个是专门为(DOS/Windows)准备的。参见 GRUB Manual

这样就可以使用GRUB来分别引导Linux和Windows了.

总结:
学习一个工具如何使用,首先的就是通读使用手册. 然后不断的动手去做! 如此,当你不断的向期望的目标努力的时候就获得了经验!

文章中提到的
Windows 即是 Windows®
Linux 即是 Linux®

这些都是人家的注册商标,要尊重!


局域网安装CentOS Linux

简介

这个星球上Linux发行版的老大哥目前还是Redhat。所以用Redhat做服务器端的操作系统,虽不说是最好,也算是更好的选择了。现在Redhat AS版本收费啦,咱们自个儿用就选CentOS吧,根正苗红。根据我自己的实际情况来介绍一下在没有光驱和网络启动芯片时通过局域网来安装CentOS。准确的来说是用Grub启动后用HTTP方式安装。

安装环境介绍

服务器端介绍
操作系统: ubuntu-8.10
Web Server: lighttpd-1.4.19
IP: 192.168.1.200

客户端介绍
原有操作系统: ubuntu-8.04
gurb 启动

安装前的准备
首先我们需要客户端的启动文件 vmlinuz initrd.img 这两个文件可以在CentOS网站下载CentOS-netinstall.iso 里面的启动文件是最佳选择。
然后准备CentOS安装文件,我选择的是dvd版的iso,这样可以节省很多更换光盘的步骤。

挂载iso文件,为了减少访问权限相关的限制,我把目录挂载到/tmp/centos上。

# mount -o loop /path/of/dvd.iso /tmp/centos

建立到web server目录的链接,我的默认路径是 /var/www

# ln -s /tmp/centos /var/www/centos

做好以上步骤后在浏览器中检查是否能访问http://localhost/centos如果可以的话,服务器端的准备工作就做完了

客户端
将启动文件 vmlinuz initrd.img 传送到客户端 /boot 目录下
编辑 /boot/grub/menu.lst

title CentOS
root hda(0,0)
kernel /boot/vmlinuz
initrd /boot/initrd.img

客户端准备工作就做好了,reboot

安装并配置系统
这些事情实在没有想说的兴趣了,手册上写的清清楚楚。在设置web site时,只要填写ip而不需要协议头http://,CentOS directory 填 /centos 其实也就是dvd的根目录,安装系统相关的文件都在那里。

总结:

Linux 的生命力的确很顽强,有各种各样的安装方法,然而最关键的就是客户端如何启动以及安装源的位置,因为我原有Linux系统并且使用grub启动,而且又有另外一台机器作为web server所以选择这种方式来安装。

如果客户端是windows的话,需要安装一个grub4dos。

btw: 其实Windows也可以通过网络安装,也很简单。我们追捧Linux的时候,也应该正视Windows今天的成就。相互学习才会有进步。Windows一直在改进!