2011年2月

LFS 6.7中配置telnet服务并使用PuTTY链接

  安装完了LFS,有个问题比较烦人,那就是中文乱码。
  1.jpg

  没办法,毕竟字符界面下中文编码无法做到原生支持,要在Linux字符界面中支持中文显示,需要安装中文环境,上网找了些资料,感觉都不太好,zhcon虽然经典,但是很久没有更新了,最后放弃了,还是曲线救国吧。
  
  其实字符界面中的中文字符编码都是正确的,只是显示出了问题,那就换个前端显示,以远程连接的方式连接到LFS,所以就想到了telnet和ssh,先试试telnet吧,只要telnet客户端能够支持中文显示就可以了,这样的客户端很多呀,像PuTTY、SecureCRT等等,既然定了方案,那就开工吧。。。
  
  首先,在LFS中安装telnet服务telnetd,由于inetutils附带了一份,只是被LFS屏蔽了,配置编译时使用了--disable-servers禁止了telnetd的构建,只要去掉改该编译选项就可以了:
  ./configure --prefix=/usr --libexecdir=/usr/sbin \
  --localstatedir=/var --disable-ifconfig \
  --disable-logger --disable-syslogd --disable-whois \
  [--disable-servers,去掉该编译选项]
  
  重新编译安装inetutils就可以了
  
  然后,配置telnetd服务
  在/etc目录中创建inetd.conf,添加如下参数行:
  telnet stream tcp nowait root /usr/sbin/telnetd telnetd
  
  最后,启动inetd服务
  
  直接执行命令inetd即可
  
  如果要让inetd开机自启动,方案很多,这里给出一种:
  在/etc/rc.d/rc3.d目录下创建脚本S30inetd:
  输入内容:
  #! /bin/sh
  inetd
  
  即可,如果运行级不是3,在对应的rc*.d目录下创建即可
  
  好了telnet服务已经开启,远程连接到LFS虚拟机即可。
  
  又有新的问题了,使用PuTTY连接的时候,登陆很慢,因为telnet服务需要反向验证客户端,需要在hosts文件中对客户端IP添加一条DNS记录来解决该问题
  
  好了,最后在PuTTY中将字符编码设置为UTF8,这样PuTTY就能正确解码UTF8编码的中文字符了。
2.jpg

  OK,终于看到正确的中文显示了
3.png
  

基于Ubuntu 10.10 构建LFS 6.7总结

  首先扫个盲,呵呵。
  LFS,即Linux From Scratch,LFS不像Ubuntu,Fedora,SUSE等Linux发行版以最终产品的形式发布,而是以文档的形式发布一套构建流程,指导使用者,从源代码自行构建一个LFS系统,也就是说你拿到的LFS实际上只是一个指导手册,其中指明了以下几点::

  1. 什么是LFS
  2. 如何准备构建LFS
  3. 如何获取构建LFS所需的源码包
  4. 如何编译LFS
  5. 如何配置LFS

  从LFS的构建过程中,能够学习到一个常规Linux系统的结构,以及如何去配置Linux系统,毕竟Linus给你的只是Linux内核,而一个真正可用的Linux系统是由很多部件一起工作的。
  当然不能期望通过一个LFS就让你知晓Linux的一切,毕竟这不太现实,而且LFS的目标很明确,就是指导用户构建一个可用的Linux系统,所以LFS不会对其中的操作用动辄几百字去解释透彻,但是对于一个具备Linux基本使用能力的人来说,LFS的解释已经很详细了,能够让使用者知其然,还能知其所以然。

  这里我想把自己的LFS构建经验总结一下,主要是过程中遇到的问题,列出来,欢迎大家围观,呵呵

LFS的主要构建流程:

  1. 准备。包括为LFS分配空间,设置分区,在宿主系统安装相关组件等
  2. 编译一个临时的纯净系统。考虑到现行的发行版中都会或多或少做一些优化调整,这会导致直接编译出来的系统不具备通用性,所以需要基于宿主系统构建一个临时的纯净系统,新的LFS系统所需的相关组件都会在这个纯净的环境中编译
  3. 在上面的纯净系统中编译LFS系统
  4. 配置LFS系统,以使系统能够正常工作
      上面的流程在LFS Book中都以指令的形式列了出来,我们要做的就是按照LFS Book中的说明,一点一点敲字母就可以了,这需要具备一些Linux的基本使用知识来理解操作的含义。

  具体细节这里就不多说了,大家看LFS Book就可以了,这里顺便共享几个文件,方便大家使用。

  我这里主要想把自己编译LFS时遇到的问题总结一下,共享出来:

  我这次编译的LFS是最新(2011.2.12)的6.7版本,用的宿主系统是Ubuntu 10.10,基于VMware WOrkstation 7.1虚拟机。虚拟机使用的是双硬盘,其中一个/dev/sda安装了Ubuntu 10.10,LFS则编译在了另一个硬盘/dev/sdb,这也是为了在制作完LFS后,能够方便的在独立的虚拟机中运行。

Ubuntu的安装就不说了,下面直接说说编译LFS时出现的问题:

  1. 编译Binutls出错
    一开始的时候就出错了,比较打击人。。。
    这里需要安装build-essential和texinfo两个包,因为Ubuntu中没有

  2. 编译gcc出错
    原因很简单,查找问题很恼火。。。
    因为在输出指令的时候,输入languages时少输了末尾的s

  3. 编译glibc出错

因为Ubuntu中安装的是mawk,不是gawk
这里需要安装gawk

  1. 编译过程中要注意指令的大小写,否则很容易出现问题
      这是个细节问题,因为Linux中是区分大小写的,所以要格外注意。因为我是一边在VMWare中操作,一边看LFS Book,LFS Book不是最大化的显示,所以输入指令的时候不容易区分大小写,像C和c,S和s,容易出错,结果编译不过去,仔细一些就可以了

  2. 安装完成LFS后,启动出现问题
      重新启动以引导LFS的时候卡在了这里:kernel_thread_helper 0x6/0x10,原因是根文件系统无法加载,这个问题被称作kernel panic,似乎遇到的朋友还比较多。
      我之前没有编译过Linux内核,并不懂内核配置,但是LFS Book对这里没有任何说明,所以在这里郁闷了很久。最后,找到原因是Linux内核的默认编译选项对sata硬件的支持不完整,有些sata硬件的驱动没有编译进去,比如我使用的VMware 7.1中的sata驱动:
    LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
      这里需要修改编译选项,以支持该sata驱动。我想其他的驱动支持,道理也差不多,注意添加对应的驱动支持就可以了。可以通过lspci命令了解到系统中的pci设备都有哪些,便于在编译内核时选择正确的驱动。这里的lspci是pciutils包中的工具,没有的话需要安装。

我这里说说我选择的编译选项,这里参考了网上的一些资料,对于同样使用VMWare体验LFS的朋友或许会有帮助:

Linux Kernel Configuration
    -> Device Drivers
        -> SCSI device support
            - > SCSI disk support   选中

Linux Kernel Configuration
   -> Device Drivers
       -> Fusion MPT device support   选中
            -> 选中子项(不确定的话就全部选中好了)

Linux Kernel Configuration
    -> Device Drivers
        -> SCSI device support
            - > SCSI low-level drivers  选中
                -> 选中和Fusion-MPT相关的底层驱动以及VMWare PVSCSI driver support
  1. 调整/etc/ftab和/boot/grub/grub.cfg以正确引导独立的LFS并加载分区

  因为我的目的是在独立的硬盘中编译LFS,这样将LFS的虚拟硬盘文件拷贝到新的虚拟机中就可以加载运行了,所以目标系统中是只有一个硬盘的,需要调整上面的两个文件,将原来的sdb对应的改成sda即可,因为LFS所在硬盘是以第二硬盘的形式挂到虚拟机中的。

  grub.cfg是在加载Linux时使用的,这里需要调整;fstab是在Linux启动时,加载分区中的文件系统的,这里也需要修改。

  好了一切正常,截几张图过来看看,呵呵:
1.png

2.png

用PuTTY Telnet过去的效果,算是临时解决了中文无法显示的问题
3.jpg

(转)经常用Linux 但是你知道它和Unix区别吗

  有很多初学Linux的人比较关心Linux和windows的区别,这里还有一点就是Linux Unix的区别,弄清楚一些区别有助于我们对操作系统的了解.这里叙述Linux Unix的区别.

  Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件.

  这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型.

  Linux 的源头要追溯到最古老的UNIX.1969年,Bell实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统.很快,Dennis Richie加入了这个项目,在他们共同努力下诞生了最早的UNIX.Richie受一个更早的项目--MULTICS的启发,将此操作系统命名为 Unix.早期UNIX是用汇编语言编写的,但其第三个版本用一种崭新的编程语言C重新设计了.C是Richie设计出来并用于编写操作系统的程序语言.通过这次重新编写,Unix得以移植到更为强大的 DEC PDP-11/45与11/70计算机上运行.后来发生的一切,正如他们所说,已经成为历史.Unix从实验室走出来并成为了操作系统的主流,现在几乎每个主要的计算机厂商都有其自有版本的Unix.

  Linux起源于一个学生的简单需求.Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统.Linus 对Minix不是很满意,于是决定自己编写软件.他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作.他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域.有人看到了这个软件并开始分发.每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统.值得注意的是Linux并没有包括Unix源码.它是按照公开的POSIX标准重新编写的.Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成.

  另外两大区别:

  1) UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

  2) UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.

  UNIX(5万美圆)而Linux免费

  历史

  Unix的历史久于linux. Linux的思想源于Unix

  产品

  unix和linux都是操作系统的名称.但unix这四个字母除了是操作系统名称外,还作为商标归SCO所有.

  Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.

  Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware

  其他区别

  linux的核心是免费的,自由使用的,核心源代码是开放的.

  而unix的核心并不公开

  在对硬件的要求上,linux比unix要低,没有unix那么苛刻.在安装上linux比unix容易掌握.

  在使用上,linux相对没有unix那么复杂.

  Unix多数是硬件厂商针对自己的硬件平台的操作系统,主要与CPU等有关,如Sun 的Solaris作为商用,定位在其使用SPARC/SPARCII的CPU的工作站及服务器上,当然Solaris也有x86的版本,而Linux也有其于RISC的版本.

  但确切的讲,拿RISC上的Unix与x86上的Linux进行比较不太合适.

  至于价格,个人使用的Linux基本上算是免费的,不同的Linux发行厂商针对企业级应用在基本的系统上有些优化,如RedHat的Enterprise产品,这些产品包括支持服务是比较贵的.

  像IBM/HP/SUN的Unix,因为主要是针对其硬件平台,所以操作系统通常在设备价格中.(没有人单独去买一个Unix操作系统的)

  在性能上,linux没有unix那么全面,但基本上对个人

  用户和小型应用来说是绰绰有余.

  通常情况下,如果你有机会使用到Unix环境,比如银行、电信部门,那一般都是固定机型的Unix.比如电信里SUN的居多,民航里HP的居多,银行里IBM的居多.学习中,不同的Unix命令集有些不同,要注意.

  至于学习,我看还是linux比较好学一点,而且现在喜欢和

  鼓捣linux的人也越来越多,各种有关linux的资料

  也很多.如果是自己想学习,那Linux或是BSD系统是不错的选择.一台x86的机器就可以.

  应用上,除非是大型网站,一般企业或个人,使用Linux即可.

  UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统.

  Linux是一种外观和性能与UNIX相同或更好的操作系统,但,Linux不源于任何版本的UNIX的源代码,并不是UNIX,而是一个类似于UNIX的产品.Linux产品成功的模仿了UNIX系统和功能,具体讲Linux是一套兼容于System V以及BSD UNIX的操作系统,对于System V来说,目前把软件程序源代码拿到Linux底下重新编译之后就可以运行,而对于BSD UNIX来说它的可执行文件可以直接在Linux环境下运行.

  一般来说,Linux是一套遵从POSIX(可移植操作系统环境)规范的一个操作系统,它能够在普通PC计算机上实现全部的UNIX特性,具有多任务、多用户的能力.Linux受到广大计算机爱好者的喜爱的另一个主要原因是,它具有UNIX的全部功能,任何使用UNIX操作系统或想要学习 UNIX操作系统的人都可以从Linux中获益.

  在网络管理能力和安全方面,使用过Linux的人都承认Linux UNIX很相似.UNIX系统一直被用做高端应用或服务器系统,因此拥有一套完善的网络管理机制和规则, Linux沿用了这些出色的规则,使网络的可配置能力很强,为系统管理提供了极大的灵活性.