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

原创 2008年09月28日 08:11:00
+-----------------------------------------------------------------------------+
|                         第一部分 文档说明                                    |
+-----------------------------------------------------------------------------+
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 参考文档
##########

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

+-----------------------------------------------------------------------------+|                    ...
  • RobinsonNie
  • RobinsonNie
  • 2008年09月28日 08:10
  • 625

LVM逻辑卷分区笔记

磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复...
  • jiangyiaxiu
  • jiangyiaxiu
  • 2011年11月11日 01:00
  • 4614

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

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

Linux 下好用的笔记软件

NoteCase 支持带树形索引的笔记及文档管理,并可以将文档导出为 html 等格式。 同时支持 Linux 和 Win 。 可惜开源的版本已经停止开发了,最后一版是 1.9.8。  ...
  • gtnl2009
  • gtnl2009
  • 2009年07月20日 16:58
  • 1673

我的Linux运维笔记

最近帮实验室装了两台服务器,计算用的服务器放在内网,通过一台堡垒机与外界相连。碰到很多小问题,在这里记录一下。...
  • huangbo10
  • huangbo10
  • 2016年11月15日 01:14
  • 739

Linux下使用云笔记

Linux下使用云笔记有时学习的时候总是要做一些学习笔记,笔记的同步就是一个大问题,特别是实验室不用用U盘的情况下。磁盘损坏,笔记无法导出是很头疼的问题,经常在linux下做开发就很想用一个兼容各大平...
  • hzh1061071926
  • hzh1061071926
  • 2015年08月24日 23:34
  • 491

Linux安装为知笔记Wiznote

在Ubuntu系统下可以通过官方PPA仓库安装: $ sudo add-apt-repository ppa:wiznote-team $ sudo apt-get update $ sudo ap...
  • mkosto
  • mkosto
  • 2016年10月29日 15:39
  • 4046

[转载]一个好用的Linux下的笔记软件Xournal(pdf加注释)

原文链接:http://blog.sciencenet.cn/home.php?mod=space&uid=109151&do=blog&id=225549  首先说明一点,这个软件在ubuntu下用...
  • wfing
  • wfing
  • 2011年07月01日 15:38
  • 4348

用mkisofs制作可启动的linux光盘

在我的另一篇文章“制作一张最小系统的gentoo安装光盘”里介绍了,可以在现有iso文件基础上添加进自己想要的包,从而无网络安装最小linxu系统。这篇文章介绍怎么把这张光盘制作出来。下面的英文是我的...
  • mayabin
  • mayabin
  • 2006年08月23日 12:10
  • 5211

Android开发笔记(一百一十二)开发工具

Eclipse/ADT ADT是Google在Eclipse基础上封装了Android开发工具的环境,最新版本是2014年7月2日发布的adt-bundle-windows-x86_64-201407...
  • aqi00
  • aqi00
  • 2016年07月19日 11:30
  • 2900
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 基于nalfs.note笔记之上. nALFS配置相关笔记(位于CD可引导Linux)
举报原因:
原因补充:

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