nALFS配置相关笔记(位于工作站上的实验)--nalfs.note

原创 2008年09月28日 08:10:00
+-----------------------------------------------------------------------------+
|                         第一部分 文档说明                                    |
+-----------------------------------------------------------------------------+
1 作用
##########
  nALFS配置相关笔记(位于工作站上的实验)

2 版权
######
  版权: 聂大鹏(dozec)

3.2 作者
========
3.2.1 作者1
-----------
   姓名: 聂大鹏
   email: dozec@mail.csdn.net

4 产生时间
##########
  时间: 2007-2-9

5 版本
######
  版本: 0.1 版

6 修订过程
##########
6.1 第0.1版
===========


+-----------------------------------------------------------------------------+
|                         第二部分 文档正文                                    |
+-----------------------------------------------------------------------------+
1 实验环境
##########
工作站: RHEL4
        Linux version 2.6.14.7
        gcc version 3.4.6 20060404 (Red Hat 3.4.6-3))
        CPU: Pentium 1.7G
        Memory: 256MB
        装LFS根分区: /dev/hdd1 (hdd是一块4.3G硬盘)
           swap分区: /dev/hdd2        
        /dev/hdd1               1         427     3429846   83  Linux
        /dev/hdd2             428         524      779152+  82  Linux swap



2 笔记
######
2.0 格式化/dev/hdd1与/dev/hdd2
==============================
nALFS不能帮我们完成分区及格式化, 需要我们自己手动完成.
并且需要我们自己挂载. (其实可以修改profileXML配置文件来达到执行fdisk分区
及格式化,挂载文件系统自动化)

[root@hellokitty mnt]# mkfs.ext2 /dev/hdd1
[root@hellokitty mnt]# mkswap /dev/hdd2
[root@hellokitty ~]# mount /dev/hdd1 /mnt/lfs


2.1 nALFS说明
=============
nALFS的安装详见安装包内README. 其是通过读取指定XML配置文件所描述的action sequence
来执行命令的. LFS-6.1.1目录(从profile-LFS-edition.tar.bz2)下包含有执行LFS6.1.1安装
的所有XML文件. 但仍需要有一些文件需要我们提前来配置, 2.2节将主要阐述哪些文件需要配置.

在下载profile, 使用的是profile-LFS-6.1.1.tar.bz2.好几个类似的.


2.2 配置profile-LFS-6.1.1
===========================
2.1.1 总体说明
------------
把profile-LFS-6.1.1.tar.bz2解压后生成LFS-6.1.1/目录.
该目录中主要有config/skeleton两个目录需要我们来配置.

2.1.2
-----
[nie@hellokitty LFS-6.1.1]$ vi config/general.ent
以下仅对修改项目或者重要项目进行说明:

<!ENTITY LFS "/mnt/lfs">       指明目标根文件系统挂载点
                               挂载设备到/mnt/lfs需要我们手动来完成.然后先能执行
                               nALFS

<!ENTITY orig_packages_dir "/var/ftp/pub/lfs_source/">
                               软件包所在目录.

<!ENTITY localtime "/usr/share/zoneinfo/Asia/Shanghai">
                               时区设置

<!ENTITY lfs-user "lfs">       创建系统时所使用的临时用户,如果不存在将会自动创建
<!ENTITY lfs-password "lfs">   密码.

<!ENTITY password "root">      设定目标LFS系统的root密码

<!ENTITY LFS-version "6.1">

<!ENTITY TERM "xterm">         与终端的$TERM应一致.
                               在xwindow当中echo $TERM为 : xterm
                               在文本终端当中echo $TERM为: linux
                               ***非常重要,配置不对将无法继续进行.

<!-- grub settings (these need to be in grub's notation) -->
<!ENTITY grub-root "hd0,0">    指明grub的root分区
<!ENTITY grub-install-location "hd1">
                               指明grub安装位置
说明: grub的root分区指的就是存在有kernel/initrd的分区,它可能是根分区
      也可能是/boot分区,也可能是其它.
      grub对于分区是linux当中的分区号-1, <hd0, 0>指的就是相应盘上的第1个分区.
实验说明: 宿主系统位于/dev/hda上, 而LFS根文件系统装在/dev/hdd上.
          当LFS装完之后,我会把/dev/hda取下,以使/dev/hdd能够引导系统至新装LFS.
          此时由于只有一块硬盘,grub会把它映射为(hd0,0)==> hd0 : /dev/hdd
                                                          ,0  : 第1个分区

总结: GRUB当中,对于<hd1,0>这种表示方法,分区肯定是照Linux当中分区表示-1.
      但hd1不一定对应于/dev/hdb. 这是因为grub对于设备的表示依赖于设备映射.
      如果系统当中有一块硬盘(/dev/hda in linux), 会映射为hd0.
      如果系统当中有两块硬盘(/dev/hdd in linux), 第二块会映射为hd1.
                         
另外,默认情况下grub是不会安装到你指定的位置的,需要修改chapter08/grub.xml
将注释的grub安装命令不注释从而执行就OK.
    <!-- Uncomment the following if you wish to allow grub to install itself automatically.-->
    <!-- If uncommenting remove the space between the two dashes (- -) in order for the
     command to work properly -->
    <execute command="grub --batch">
      <prefix>echo -e "root (&grub-root;)/nsetup (&grub-install-location;)/nquit" | </prefix>
      <param>1&gt;/dev/null</param>
      <param>2&gt;/dev/null</param>
    </execute>



2.1.3
-----
拷贝一个内核配置文件(make menuconfig生成的.config)到skeleton下
,并重命名为linux-kernel-config. 我已经有一个备份的了, 直接copy就OK.
nALFS最后会以此config作为内核的配置来编译生成内核.

[nie@hellokitty LFS-6.1-1]$ cd skeleton/
[nie@hellokitty skeleton]$ cp ~/dev_home/graduation_paper/linux-2.6.14.7-/bak/target/config linux-kernel-config


2.1.4
-----
[nie@hellokitty skeleton]$ vi boot/grub/menu.lst
kernel /boot/lfskernel-[linux-version] root=/dev/hdd1
这是传给kernel的命令行参数, 故使用/dev/hdd1, 与grub的表示方法不同.

[nie@hellokitty skeleton]$ cd etc
[nie@hellokitty etc]$ vi fstab
/dev/hdd1       /               ext3    defaults        1 1
/dev/hdd2       swap            swap    pri=1           0 0
proc            /proc           proc    defaults        0 0
sysfs           /sys            sysfs   defaults        0 0
devpts          /dev/pts        devpts  gid=4,mode=620  0 0
shm             /dev/shm        tmpfs   defaults        0 0

/dev/hdd1与/dev/hdd2两个分区要明确出来.


[nie@hellokitty etc]$ vi hosts
仅留一行
127.0.0.1 localhost hellokitty   #加入这个主机名


[nie@hellokitty etc]$ vi sysconfig/network
HOSTNAME=hellokitty


[nie@hellokitty etc]$ vi sysconfig/network-devices/ifconfig.eth0/ipv4
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.1

2.1.5 关于package.ent
---------------------
package.ent里面包含有LFS当中所用的所用软件包release和name. 有时候会和LiveCD
当中的source tar不一样, 修改一下. 下面仅是例子, 需要根据实际情况来进行修改.

[root@hellokitty config]# vi package.ent
<!ENTITY perl-version "5.8.7">
<!ENTITY udev-rules-version "4">
<!ENTITY vim-security-patch "vim-&vim-version;-security_fix-2.patch">
<!ENTITY zlib-version "1.2.3">
通常改了软件包edition后, 相应的digest通常是错的.
可以通过# md5sum packet   来获得相应的md5 digest, 然后去修改package.ent当中相应
软件包的md5 digest就可. 需要重新启动nALFS以使新的md5 digest让nALFS重新读取.


另外, 在package.ent里有的时候会缺少相应补丁的项, 例如: 当nALFS出下如下项后
│-: patch: **** read error : Is a directoryc-linuxthreads-2.3.4.tar.bz2.                                      ││E: Patching failed. -i /tools/packages-6.1/nts): glibc-build   

检查了cha6/glibc.xml里, 发现打了3个补丁:
glibc-2.3.4-rtld_search_dirs-1.patch
glibc-2.3.4-fix_test-1.patch
glibc-2.3.4-tls_assert-1.patch
但package.ent里却只有一个补丁项的说明, 从而导致copy到/tools下的也仅有这一个补丁
修改后的package.ent如下:
原有的补丁项:
<!ENTITY glibc-fix-testsuite-patch "glibc-&glibc-version;&glibc-cvs-tag;-fix_test-1.patch">

追加的补丁项:
<!ENTITY glibc-rtld-search-dirs-patch "glibc-&glibc-version;&glibc-cvs-tag;-rtld_search_dirs-1.patch">
<!ENTITY glibc-tls-assert-patch "glibc-&glibc-version;&glibc-cvs-tag;-tls_assert-1.patch">
         |---------------------|
         这个名字需要查看cha6/glibc.xml相就的项才能确定, 因为这里定义的值最后会被替换
         到cha6/glibc.xml当中 ,  所以要一致.



在第6章执行到BASH时,出现如下错误
E: Unknown archive (/tools/packages-6.1/).                                        
E: Unpacking /tools/packages-6.1/ failed.   

经检查和对照LFS-6.1.1文档发现: 文档当中一个建议性的可选的bash-doc包在profile当中的成为
了必须的选项, 把这个包从xml当中注释掉就可
# vi chapter05/bash.xml
    <stage name="Unpacking">
      <unpack>
        <digest>&bash-md5;</digest>
        <archive>&packages_dir;/&bash-package;</archive>
        <destination>&build_dir;</destination>
      </unpack>
      <!--   HERE...
      <unpack>
        <digest>&bash-docs-md5;</digest>
        <archive>&packages_dir;/&bash-docs-package;</archive>
        <destination>&build_dir;/&bash-directory;</destination>
      </unpack>
      -->
    </stage>




2.1.6
-----
   Execute "./runit.sh {skeleton}" as root, providing the name of the
   directory you created in step 3. Please note that if you have installed
   nALFS into a location other than /usr/local/bin you will need to edit
   runit.sh to point to your copy of nALFS.

[nie@hellokitty LFS-6.1-1]$ pwd
/home/nie/dev_home/graduation_paper/nALFS/LFS-6.1-1
[nie@hellokitty LFS-6.1-1]$ su -
Password:
__/etc/profile
__/etc/bashrc
[root@hellokitty ~]# cd /home/nie/dev_home/graduation_paper/nALFS/LFS-6.1-1
[root@hellokitty LFS-6.1-1]# ./runit.sh skeleton


2.1.7
-----
./runit.sh skeleton之后, 按s会可能出现的4个选项.
需要说明是: 我们使用的xml配置文件当中存在一个树型的关系
            LFS.xml (树顶)
                |
                |-- 各章节的xml
                        |
                        |-- 各章节当中相应软件包或者命令的xml
当我们处于树顶LFS.xml时, 可以直接按n来向下执行.

    m  - Run only marked elements. You can mark elements by pressing
         'Insert' or '*'. It doesn't matter whether they are already
         successfully executed or not - all marked elements will run
         again.

    c  - Run only the current element and its children. Elements marked
         with '#' will be skipped.

    n  - Run current element, its children, and all the elements below
         the current (on the same level/depth). Elements marked with
         '#' will be skipped.

    f  - Force running of current element and its children. Elements
         marked with '#' will also be executed.


另外当安装哪个包失败之后, 经过调试修改之后, 可以按m将树型中的已经执行过的项设置为#
代表已经执行成功. 然后重回LFS.xml树顶, 执行s, n. 便可以skip已经执行项, 而去执行新项.



2.1.8
------
下面的文件描述了创建tools目录,以及向其中的packages-6.1目录拷贝软件包.
chapter05/creatingtoolsdir.xml

问题出现在拷贝软件包的描述不完整, 有一些软件包/补丁并没有说明,从而导致没有
被copy到packages-6.1目录中.例如: libxml2  nALFS  需要我们手动向里添加.



2.1.9
-----
关于GURB的问题:
执行 # grub-install /dev/hdd 会出现如下错误:
'/dev/hdd does not have any corresponding BIOS drive.'

解决方法:
# grub-install --recheck /dev/hdd
# grub-install /dev/hdd




3 参考文档
##########

ecplice在导入现有工程时提示:某些项目因位于工作空间目录中而被隐藏

无论是写java还是Android,ecplice都是很不错的选择,但是有时在导入工程时提示:某些项目因位于工作空间目录中而被隐藏,“项目”和“下一步”为不可选 此类原因无非有二 (1)工程中的....
  • qq_27246079
  • qq_27246079
  • 2016年04月08日 21:34
  • 2034

hibernate使用c3p0数据源

在配置好hibernate连接数据库环境的前提下,我们进行如下操作就可以搭建好hibernate中使用c3p0数据源的环境了。 1). 导入 jar 包: hibernate-release-4....
  • wanghaiping1993
  • wanghaiping1993
  • 2014年08月30日 08:37
  • 929

实验 15 交换机基本配置

一.实验目的: 1.掌握交换机基本配置的步骤和方法。 2.掌握查看和测试交换机基本配置的步骤和方法。 二.实验要点: 配置交换机的基本参数,检查交换机的基本参数配置。 三.实验设备: 交换...
  • super_cui
  • super_cui
  • 2017年05月02日 19:35
  • 751

SSL协议到底工作在OSI模型中的那一层?

一、SSL是啥?  SSL(Secure Socket Layer安全套接层)以及其继承者TSL(Transport Layer Security 传输层安全)是为了网络通信安全 提供安全及数据...
  • Better2326
  • Better2326
  • 2015年09月11日 13:01
  • 6812

一个ArcGIS实验

ArcGIS实验关于EPSG EPSG:European Petroleum Survey Group (EPSG), 。》>http://www.epsg.org/,它成立于1986年,并在20...
  • GeneralLi95
  • GeneralLi95
  • 2017年11月16日 21:17
  • 106

REHL5.4工作站上搭建VNCSERVER

1、vim /etc/sysconfig/vncservers 配置vnc用户和端口号如图1: 注:必须在linux系统中先创建好相应用户 2、用每个账户登录并输入vncserver 创建vn...
  • zlllz120
  • zlllz120
  • 2015年09月12日 20:35
  • 307

探索CDN之四:回到CDN实验

探索CDN之四:回到CDN实验本系列文章将从初学者视角,一步一步循序渐进地探索CDN的相关知识。本文为系列第四篇,在前面探索的基础上,回到CDN实验,思考如何加入BIND完成实验,并思考如何集群化。主...
  • github_35384800
  • github_35384800
  • 2016年07月06日 16:53
  • 364

大数据学习笔记·研究现状

什么是大数据如果逐字逐句来看两家公司对大数据的定义,你们会发现这两个定义非常相似,其中都提到了大量、高速和多样化的信息;关注发现、分析、洞见和决策制定。我想在某种意义上,在这个高度竞争的社会,创新意味...
  • xiang_freedom
  • xiang_freedom
  • 2016年04月22日 19:29
  • 3963

telnet实验报告

Telnet远程登陆实验实验目的 学习Telnet远程登录的原理 掌握Telnet远程登的方法 实验环境 操作机:Windows 10 虚拟机工作环境:VMware workstation 目标机1:...
  • zs391077005
  • zs391077005
  • 2016年12月17日 00:16
  • 1168

图论相关算法知识总结

今天是暑假集训的第四场比赛,题目稍微有难度,但是前三道还算比较水,第一道题因为是图论题,当时一看就是裸的tarjan算法的模板题,但是好久没写这算法,临时上网找的模板,可惜忘了重边处理,就没过,在此也...
  • uestct
  • uestct
  • 2015年07月19日 22:43
  • 65
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nALFS配置相关笔记(位于工作站上的实验)--nalfs.note
举报原因:
原因补充:

(最多只允许输入30个字)