免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1901 | 回复: 1
打印 上一主题 下一主题

手把手教你如何建立自己的Linux系统(LFS速成手册)(转)(三) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-29 15:56 |只看该作者 |倒序浏览
从现在开始一直到第六章的Stripping Again之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  mount -vt proc proc $LFS/proc
  mount -vt sysfs sysfs $LFS/sys
  5.Chroot到目标系统下
  chroot "$LFS" /tools/bin/env -i \
  HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
   PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  /bin/bash --login +h
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources
  export LFS=/sources
Util-linux-2.12q

tar xvf $LFS/util-linux-2.12q.tar.bz2
cd util-linux-2.12q
sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
    hwclock/hwclock.c
mkdir -p /var/lib/hwclock
patch -Np1 -i $LFS/util-linux-2.12q-cramfs-1.patch
patch -Np1 -i $LFS/util-linux-2.12q-umount_fix-1.patch
./configure
make HAVE_KILL=yes HAVE_SLN=yes
make HAVE_KILL=yes HAVE_SLN=yes install
mv /usr/bin/logger /bin
cd ..
rm -rf util-linux-2.12q

相关知识点:
  util-linux-2.12q如果在GCC4下编译会有一个Bug,需要打补丁,建议使用util-linux-2.12r。

退出chroot环境:
logout
为Strip而进入chroot环境:

chroot $LFS /tools/bin/env -i \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /tools/bin/bash --login

如果现在重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  mount -vt proc proc $LFS/proc
  mount -vt sysfs sysfs $LFS/sys
  5.Chroot到目标系统下
  chroot $LFS /tools/bin/env -i \
  HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
  PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  /tools/bin/bash --login
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources
  export LFS=/sources
Strip

/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
   -exec /tools/bin/strip --strip-debug '{}' ';'

退出chroot环境
logout
为最后的设置进入chroot环境

chroot "$LFS" /usr/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

从现在开始一直到制作结束,重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  mount -vt proc proc $LFS/proc
  mount -vt sysfs sysfs $LFS/sys
  5.Chroot到目标系统下
  chroot "$LFS" /usr/bin/env -i \
  HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
   PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  /bin/bash --login
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources
  export LFS=/sources
LFS-Bootscripts-3.2.1

tar xvf lfs-bootscripts-3.2.1.tar.bz2
cd lfs-bootscripts-3.2.1
make install
cd ..
rm -rf lfs-bootscripts-3.2.1

时间设置(Configuring the setclock Script)

cat > /etc/sysconfig/clock
设置bash下的键盘功能键设置

cat > /etc/inputrc
设置Bash Shell启动文件(The Bash Shell Startup Files)

cat > /etc/profile
设置本地网络名

echo "HOSTNAME=mylinux" > /etc/sysconfig/network

设置hosts文件

cat > /etc/hosts
设置网络的静态地址

cd /etc/sysconfig/network-devices &&
mkdir -v ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4
注意:IP、GATEWAY、BROADCAST的地址根据自己的实际情况设置。
设置DNS


cat > /etc/resolv.conf
建立fstab文件

cat > /etc/fstab
注意:这里的磁盘名以及文件系统名需要根据实际情况修改。
安装内核Linux-2.6.11.12


cd /sources
tar xvf linux-2.6.11.12.tar.bz2
cd linux-2.6.11.12
make mrproper
make menuconfig

根据你的机器实际情况配置内核选项,这里为了说明方便,以VMWare5.0为基础虚拟的硬件来配置内核如果你想支持loop设备,那么应在Device Drivers->Block devices加入Loopback device support和Cryptoloop Support的支持

如果在建立虚拟机的时候是选择的SCSI的磁盘,那么应该在Device Drivers->SCSI device support->SCSI low-level drivers下加入BusLogic SCSI support的支持,可以采用编译到内核来避免未用initrd脚本来加载模块而导致启动失败

如果想支持网络则应该在Device Drivers->Networking support->Ethernet (10 or 100Mbit)加入AMD PCnet32 PCI support的支持,可以采用编译到内核也可以编译成模块的方式

如果想支持声卡则应该在Device Drivers->Sound->Advanced Linux Sound Architecture->PCI devices加入(Creative) Ensoniq AudioPCI 1371/1373的支持,编译成模块即可
文件系统的支持,需要根据之前将目标系统分区格式化的情况而定,使用了什么文件系统就需要加入该文件系统的支持,因之前采用的是Xfs文件系统,因此在File Systems->XFS support加入XFS的支持,可以采用编译到内核来避免未用initrd脚本来加载模块而导致启动失败

可以保存退出了

make
make modules_install
cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12
cp -v System.map /boot/System.map-2.6.11.12
cp -v .config /boot/config-2.6.11.12

安装Grub,使系统能启动,这里设置需要根据情况而修改,这里以之前介绍的分区设置为例:

grub

输入root (hd0,1)
输入setup (hd0)
quit
设置grub启动菜单

cat > /boot/grub/menu.lst
注意:这里root后面的磁盘分区需要根据实际情况调整。
将menu.lst连接到/etc目录下


mkdir -v /etc/grub
ln -sv /boot/grub/menu.lst /etc/grub

退出制作环境:
logout
现在已经完成了lfs的安装,可以重新启动来运行我们自己的系统咯!
Grub启动界面

启动完成


(转载请保持文章的完整性,请注明作者和出处)

                               作者:冲天飞豹(youbest)
                               Email:youbest@sina.com
                               2006年2月25日
更新日志:
2006年3月14日:
开始工具链的制作

tar xvf /lfs-sources/binutils-2.15.94.0.2.2.tar.bz2
命令之前加一条命令:
cd $LFS/sources
由linuxsir上的aiai报告。
第六章的Readline-5.0
漏掉一条命令
mv -v /lib/lib{readline,history}.a /usr/lib
由linuxsir上的Abull发现并报告。

2006年3月17日:
为方便阅读、避免造成看错命令,修改部分命令表达方式

SPECFILE=`gcc --print-file specs`
改为
SPECFILE=$(gcc --print-file specs)

export TCLPATH=`pwd`
改为
export TCLPATH=$(pwd)

perl -pi -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g;' \
    -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' \
        `gcc --print-file specs`

改为
perl -pi -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g;' \
    -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' \
        $(gcc --print-file specs)

由linuxsir上的终极幻想建议。

2006年3月20日:
输入上的错误
将linux-Lib-Headers-2.6.11.2修正为linux-lib-headers-2.6.11.2
由cublog上的ops805@gmail.com发现并报告

2006年3月27日:
将bash-doc-3.0.tar.bz2误写为bash-doc-3.0.tar.gz
已改正过来
由linuxsir上的yoshubom发现并报告

2006年8月11日:
在弥补删除binutils的方法中漏掉一条命令
../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls \
--enable-shared --with-lib-path=/tools/lib
已增加
由linuxsir上的diyself发现并报告

2006年9月11日:
localedef -i zh_TW -f EUC_TW zh_CN
改为
localedef -i zh_TW -f EUC-TW zh_CN
由linuxsir上的stonebreaker发现并报告

2006年9月11日:
在制作工具链开始处增加了对tar xvf命令的解释。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20483/showart_349437.html

论坛徽章:
0
2 [报告]
发表于 2012-12-21 17:10 |只看该作者
回复 1# h0ng123


     解压之后怎么安装?在lfs中。系统搭建到最后阶段了,不会配置shell 启动文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP