Crane
Table_bottom

Search
Loading
Table_bottom

分类
Table_bottom

随机文章
Table_bottom

标签云
Table_bottom

最新评论
Table_bottom

链接
Table_bottom

功能
Table_bottom

[LFS]安装完成

吼吼,经过两天的努力,LFS的构建工作终于完成了。

先mark一下这个时间,2009.10.17 20:03

于是,从2009.10.15 19:00-2009.10.17 20:03  近50小时的时间,生产出来一linux。

哈哈哈,以前对编译内核是无比的恐怖,没想到这次编居然快了很多,真的不错,都说LFS就编译速度最爽了,果然不假。

介绍一下LFS:

全名是Linux From Scratch,意思是从零开始构建linux系统,整个系统中的工具都是通过现场编译出来的,是真正量身定做的操作系统,不过制作它还是需要一个可以编译程序的linux操作系统,livecd是一个很好的选择,当然正在使用的发行版也可以,不过livecd本身带好了所有的软件包,比较方便。

这个适合对linux有一定了解的人来做,适合想提高运行效率的人来做,适合想深入了解linux的人来做,想研究linux的人,建议都来做一次LFS来加深对linux的理解。

一些资源:

官方网站:http://www.linuxfromscratch.org/ 

linuxsir:手把手教你如何建立自己的Linux系统(LFS速成手册) (这个是6.3的文档,我是看这个和官方文档结合做出来的)

当前最新版本6.5,这里是官方文档:http://www.linuxfromscratch.org/lfs/view/stable/

ps:刚刚发现貌似编译的内核有点问题,有个驱动模块没有好,隔一段时间提示个错误信息。得去解决一下,然后考虑BLFS,毕竟操作系统是要用的,这个刚做好的LFS还缺很多应用呢!

[LFS]安装进行时

自从今年寒假就想着要做一次LFS的实验,当时信心满满地下好livecd,结果寒假净看电视了,一直没有动手,现在终于下定决心搞一次了,下好了LFS6.3的livecd,因为第一次做,livecd的成功率比较高,而且包含了所有的源码包,不用再去网上下了,比较方便。工作从2009.10.15号晚上7点开始进行,这里大概记录下进程。

从硬盘分了10G出来给LFS用,分好区,挂上去,建好LFS的基地,正式开始LFS之旅。

看别人的说法都是先在虚拟机上做一次,然后有经验了再在真实机器上布署,我觉得还是真实机器效率高些,就直接划个分区给它,就在这开始了,说实话,我以前没有看过LFS的文档,但是据说文档是很详细的,只要你有一定的linux基础,能明白每条命令是干什么用的,然后就照着手册上的命令一路打下去,那也成了,是不是和windows的一路回车法有点像呢!

ps:这篇日志是在livecd自带的桌面环境的SeaMonkey中写的,这也是我在linux下的第一篇日志,而且现在机器的状态是没有windows。

好了,开始记录LFS中的一些杂碎。

2009.10.15 20:10

由于当时做符号链接时ln -sv $LFS/tools / 时少打了后面那个/,把符号链接生成在root目录里面了,导致后面用lfs用户编译时出现Permision denied。重启修改后正常进行。

由于寝室晚上要断电熄灯,故做完第一次生成工具链后就关机了。

2009.10.16

首先调整工具链,没有问题,然后编译安装各种工具,一点问题都没有,只是中间把数字1和字母l搞混过一次,不过很容易就发现错误了。

第一次遇到错误是构建目标系统(第6章)生成glibc时,test出现两个错误,以为哪里命令打错了,就重做了一遍,由于这里的make和make check时间都比较长,花了不少时间,同时也在查资料,文档说其中一个可以ignore,但是另外一个文档上只说是常见错误,没说怎么办,上网google一下,看好几篇都说可以直接ignore,只要后面工具链调整的时候没出现问题,就证明前面的都是正确的。

2009.10.17

接着昨天工作调整工具链,这是最后 一次调整工具链,然后以后编译生成的都是目标系统的组成部分,果然是good luck,没有问题,测试通过,于是开始一项项的编译utilities,好多的啊!

写这篇日志时,正在编译autoconf……

 

 

分享代码的好地方

介绍一个分享以及在线运行代码的好地方,codepad,在线运行支持语言种类也很多,当然那个PlainText就免谈了(其实是分享用)。

Language:













界面很简洁,一看就知道怎么用,注意到下面那个Private选项了吗?这里其实可以分享代码,是个geek的好地方,有的人甚至写出了VIM上 用的插件,可以直接在vim里面写代码,然后发布到这里来分享。

程序员用的东西一向以简洁高效著称,这里的注册就很简单,只要你打个用户名和密码就成,密码也让你只打一遍,请保证正确,不过geek一般都自信不会打错。

想看最近都有哪些代码提交,点击那个Recent Pastes就可以看到一大串的列表了,还有提交时间。

Linux死机了怎么办

使用电脑死机是很正常的事,如果系统负载过大,那么程序不能及时响应,很容易死机的。对于个人用户来说,没什么大 不了的,我强行关机再重启就解决问题了,但是如果是在服务器上呢,且不说服务器需要全天候工作提供服务,不能停止,更重要的是数据的安全,强行关机的话未同步的数据就会丢失,这是不允许出现的情况,那要怎么办呢?

如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,那样只会适得其反,可以先试试文字界面,按ctrl+alt+f2(F1-F6一般都可以),会切换到另外一个虚拟终端,需要一个账号来登入,这时键盘响应可能非常慢,但是是可以响应的,进入后打top命令看一下进程,等这个表刷那么一两次,就可以确定占用资源比较大的进程了,把它kill掉,这样可以解决相当一部分问题。

但是有的时候是比较底层的软件出现问题,那这个方法就不适用了,但是这就引出了这篇文章要说的强强的方法。reisub方法,说具体一点,是一种系统请求,直接交给内核处理。键盘上一般都有一个键,SysRq,和PrintScreen在一个键位上,这就是系统请求的键。这个方法可以在死机的情况下安全的重启计算机,数据不会丢失。

具体操作是,按住Alt+SysRq,再依次按下reisub几个键,按完b系统就会重启。

下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:

unRaw 将键盘控制从 X Server 那里抢回来
tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后
kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭
Sync 将所有数据同步至磁盘
Unmount 将所有分区挂载为只读模式
reBoot 重启

这里有个问题要注意一下,最好不要快速连续地按下这几个键,要有间隔,大概是估计每个间隔10秒左右,因为每一步操作都需要时间,而且s键之后因为同步数据比较慢,可以停20秒。

最后一个问题是怎么记住这个方法呢,当然记住了上面说的每一步操作的也可以记住,但是这里有个比较好一点的方法,那就是reisub正好是busier反着写的顺序,而busier这么好记,正好还有系统很繁忙的意思,不错。

这样的话在对付linux死机的时候又多了一个杀手锏。

更多关于sys request的内容请稳步这里

C语言有点变态

直接看这个程序

 

#include<stdio.h>
int f(int x)
{
        printf("%d\n",x);
}
int main(void)
{
        int (*pf)(int);
        pf=f;   //正常用法
        pf(5);
        (**pf)(5);      //这是什么
        (****************f)(5)//这个变态啊
        pf=&f;  //这个也没问题
        pf(6);
        pf=*****f;      //这是干什么
        pf(7);
        system("pause");
        return 0;
}

看着很神奇,至少有些我从来没那样写过,但是这些全部是合法的,可以编译通过。