CSDN博客

img RobinsonNie

基于nalfs.note笔记之上. nALFS配置相关笔记(位于CD可引导Linux)

发表于2008/9/28 8:11:00  412人阅读

+-----------------------------------------------------------------------------+
|                         第一部分 文档说明                                    |
+-----------------------------------------------------------------------------+
1 作用
##########
  基于nalfs.note笔记之上.
  nALFS配置相关笔记(位于CD可引导Linux)

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 实验环境
##########
说明: VMware Workstation 5.5.1 build-19175
      IDE(0:0) 5GB



2 CDBOOT上执行nALFS前的准备
###########################
2.1 创建相应硬盘和cdrom设备文件
===============================
注意: 由于CDBOOT引导的我们构建的根文件系统当中采用了devfs, 而并没有相应的
      /dev/hda /dev/hda1 /dev/hd2这样的设备文件. 需要我们自己创建这样的设备
      文件. 可以通过# cat /proc/partitions当中的内容获得系统当中已存设备及
      其主从设备号, 进而# mknod 来创建.
      另外, cdrom的设备也需要用mknod单独创建.
      # mknod /dev/cdrom b 22 0


      
2.2 对硬盘进行分区及格式化
    并完成对光盘/硬盘的挂载
===========================
[root@hellokitty ~]# /var/bin/fdisk /dev/hda
/proc/partitions中内容有效,而fdisk -l有时会失效.(有设备也不显示)
将/dev/hda分成对个区: /dev/hda1(id: 83)  root partition  2GB
                      /dev/hda2(id: 82)  swap partition  512MB


[root@hellokitty ~]# /var/bin/mkfs.ext2 /dev/hda1
[root@hellokitty ~]# mkswap /dev/hda2
[root@hellokitty ~]# mount /dev/hda1 /mnt/lfs
[root@hellokitty ~]# mount /dev/cdrom /mnt/cdrom


2.3
===
已存BUG说明: CDBOOT系统当中使用mkfs.ext2(无论是Busybox还是我从宿主系统上拷贝的)
             当分区大于3G时,均不能正常格式化,出错信息:
             Couldn't write 8 blocks in inode table starting at 524290


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

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

<!ENTITY orig_packages_dir "/mnt/cdrom/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 "linux">         与终端的$TERM应一致.
                               在文本终端当中echo $TERM为: linux

<!-- grub settings (these need to be in grub's notation) -->
<!ENTITY grub-root "hd0,0">    指明grub的root分区
<!ENTITY grub-install-location "hd0">


3.2
===
[nie@hellokitty LFS-6.1.1]$ vi config/profile.ent

<!ENTITY lfs-profile '/var/bin/LFS-6.1.1'>
<!ENTITY skeleton 'skeleton'>

lfs_profile指明LFS配置文件位置, 其在CDBOOT根文件系统位于/var/bin/LFS-6.1.1.
必须正确指明路径位置,否则拷贝配置文件时将出错.


3.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


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

[nie@hellokitty skeleton]$ cd etc
[nie@hellokitty etc]$ vi fstab
/dev/hda1       /               ext3    defaults        1 1
/dev/hda2       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/hda1与/dev/hda2两个分区要明确出来.


3.5
===
以非交互式执行
# nALFS -i LFS.xml  


3.6
===
修改chapter05/addinguser.xml文件如下: 将如下创建LFS用户的使用注释掉.
    <!--
    <execute command="groupadd -f lfs" />
    <execute command="id -u &lfs-user; &real-amp;&gt; /dev/null || useradd -s /bin/bash -g lfs -m -k /dev/null &lfs-user;" />
    <execute command="echo &lfs-user;:&lfs-password; | chpasswd" />
    -->

因为在构建CDBOOT的根文件系统的/etc/passwd /etc/shadow /etc/group文件当中已经
包括了lfs用户的创建. username : lfs   passwd : lfs



3.7
===
修改nALFS的XML配置文件: 使其在cha5仅仅是完成将已经做好的gnu工作链进行解压.
然后在cha6直接chroot到临时工作环境(gnu 工作链)来进行剩下的安装.

3.7.1
-----
修改LFS.xml文件, 使其在cha5仅有
      <xi:include href="chapter05/gnutoolchain.xml" />

3.7.2
-----
# vi chapter05/creatingtoolsdir.xml
   加入    <source>"i686-pc-linux-gnu.tar.bz2"</source>

3.7.3
-----
# vi chapter05/gnutoolchain.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE alfs SYSTEM "../DTD/ALFS.dtd"
[
<!ENTITY % general_entities SYSTEM "../config/general.ent">
<!ENTITY % package_entities SYSTEM "../config/package.ent">

%general_entities;
%package_entities;
]>
<alfs>
  <package name="i686-pc-linux-gnu" version="">
    <stage name="Unpacking">
      <unpack>
        <digest>81371a8d58c07bb30aa625d1f153f46c</digest>
        <archive>&packages_dir;/i686-pc-linux-gnu.tar.bz2</archive>
        <destination>/tools</destination>
      </unpack>
    </stage>
  </package>
</alfs>


3.7.4
-----
# vi chapter06/kernfs.xml
    <mkdir base="&LFS;">
      <option>parents</option>
      <name>proc</name>
      <name>sys</name>
      <name>dev</name>      <!-- 需要创建dev目录 -->
      <name>dev/shm</name>  <!-- -->
      <name>dev/pts</name>  <!-- -->
    </mkdir>

    <execute command="mount">
      <param>-f</param>
      <param>-t tmpfs</param>
      <param>tmpfs</param>
      <param>&LFS;/dev</param>
    </execute>
    <mkdir base="&LFS;">    <!-- 加上这个段落原因是/dev被挂载为tmpfs了,原先创建的shm/pts均隐藏-->
      <option>parents</option>
      <name>dev/shm</name>
      <name>dev/pts</name>
    </mkdir>





4 关于nALFS安装
###############
4.1
===
[nie@hellokitty nALFS-1.2.6]$ ./configure --prefix=/home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs-withoutX/usr

然后修改config.h文件, 改正库路径.(nALFS使用了dlopen)
[nie@hellokitty nALFS-1.2.6]$ vi config.h
#define HANDLERS_DIRECTORY "/usr/lib/nALFS"

这步修改非常重要,否则在CDBOOT上将导致nALFS无法打开其正常的库,
进而无法分析XML文件.

[nie@hellokitty nALFS-1.2.6]$ make
[nie@hellokitty nALFS-1.2.6]$ make install

--prefix指明安装到CDBOOT根文件系统的usr目录当中


5 参考文档
##########

0 0

相关博文

我的热门文章

img
取 消
img