|
目前网上关于用jhalfs-2.3.1建立LFS的文章相当罕见。。。但俺只有两张livecd 分别是:lfslivecd-x86-6.3-r2160.iso和 lfslivecd-x86-6.3-r2145.iso ,那时下载时随便找个新版本就下载了,后来才发现,天啊,文档缺啊,这两个是新版本呢。。。幸好找到了 LFS-BOOK-6.3-rc1-HTML文档和飞豹大侠的《 手把手教你如何建立自己的Linux系统 第二版》。。。前天手动完成了第一个mylinux,哈哈,高兴,好像镜镜姐姐说的:高兴得在被窝里也偷笑。。。
但想要是用jhalfs-2.3.1,怎么做呢,于是漫开了探索的步伐。。。(建议初学者不要用这种方法)
下面是详细过程,好像手把手那么详细了,不用急。。开始吧
准备好lfslivecd-x86-6.3-r2160.iso 从vmware下启动,提示:Number of processors可以选two(若你想快点),内存呢,四五百M分得出吧,,选LIS logic(我选这个,不知可以选BUS logic?可以试试,告诉我哦。。o(∩_∩)o...),我用IDE,听说选scsi也可以,但配置内核时要记得选支持SCSI的选项哦,具体后面再说。。)
1、进入可以一直回车直到命令行出现
2、设置密码(执行jhalfs前最好设置一下密码)
passwd root
passwd jhalfs
3分区:
命令cfdisk /dev/hda
看到什么了呢。。
分吧,我分为hda1:6000(/)和hda2:2000(swap)
mkswap /dev/hda2 格式化swap
mke2fs /dev/hda1 格式化hda1使用格式是ext3
swapon /dev/hda2 使用swap分区
export LFS=/mnt/lfs
mkdir –pv $LFS
mount /dev/hda1 $LFS 把hda1加到到mnt目录下
mkdir –pv $LFS (lfs必须在jhalfs设置时和这里保持一致)
chmod -v a+wt /mnt/lfs
chown -v jhalfs /mnt/lfs (这个很重要否则jhalfs提示没有写权限)
$LFS/tools/不用创建,jhalfs会自动创建
注意也不用创建lfs帐户了,jhalfs会处理
4、转到jhalfs用户
# su jhalfs
5、转到jhalfs用户下的jhalfs
$ cd
$ cd jhalfs-2.3.1
6、修改编译优化参数(可选)
改O3pipe_march文件
$ vi /home/jhalfs/jhalfs-2.1/optimize/opt_config.d/O3pipe_march
以下是O3pipe_march的内容:
CFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4"改成你使用的CPU类型 如我的是amd的则(athlon-xp)
CXXFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4"同上
LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe
OTHER_CFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4"同上
OTHER_CXXFLAGS_O3pipe_march=$CXXFLAGS_O3pipe" -march=pentium4"同上
OTHER_LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe
(唐师父说:按esc键,接着输入冒号:,在冒号后面输入wq,回车退去。)
7、然后开始执行 make或者time make (。。你的眼睛是否在转呢。。不是贼溜溜的,是雪亮的。。哈哈o(∩_∩)o...)
出现以下菜单(注红线标注的地方是值得注意的地方,其他地方默认设置都可以了)
--- BOOK Settings --->
Use BOOK (Linux From Scratch) --->选择要编译的类型
(X) Linux From Scratch要编译LFS选择这个
( ) Cross-Compiled Linux From Scratch这个是CLFS
( ) Cross-Compiled Linux From Scratch (Sysroot method)也是CLFS不过还在开发
( ) Cross-Compiled Linux From Scratch (Embedded Systems)貌似嵌入系统的CLFS
( ) Hardened Linux From Scratch HLFS这个是用在安全方面的 ( ) Beyond Linux From Scratch BLFS这个大家都知道
Release (Working Copy) ---> 使用哪个版本的BOOK
( ) SVN 最新的BOO,开发中的
(X) Working Copy 稳定版,也是光盘上带的
( ) Branch or stable book 分枝??
(/usr/share/LFS-BOOK-6.2-XML) Loc of working copy (mandatory)选择书的位置,默认的主可以
[ ] Add custom tool support
[ ] Add blfs-tool support
--- General Settings --->常规设置
[ ] Change the default user/group for this build 建立LFS的用户和组,可以不选
(/mnt/build_dir) Build Directory 建立的LFS位置,自己按需要改 (这里设置/mnt/lfs)
Retrieve source files 源的位置
(/lfs-sources) Package Archive Directory 别改,默认就可以
(http://ftp.lfs-matrix.net/) FTP mirror 如果需要下载,使用这个地址下
Always retrieve kernel package (see help)
Run the makefile 退出菜单后直接make
[ ] Rebuild files
--- Build Settings --->
Run testsuites 运行测试,默认是选上的,建议不要取消
Tests level (Only final system Glibc, GCC and Binutils testsuites) ---> 可以选择测试的内容默认的就行了
Flavour (Don't stop on test suite failures) --->
[ ] Use a custom fstab file 使用fstab文件,需要指定fstab文件位置
[ ] Build the kernel 要不要自动编译内核,需要指定内核配置文件的位置,一般没有设定好的配置文件不要选择此项,jhalfs执行完毕后自己编译内核
Strip Installed Binaries/Libraries 好像是自动清理调试代码
Install vim-lang package vim的语言支持补丁,建议加上
(GMT) TimeZone 时区 我的是(Asia/Shanghai)
($LANG) Language 语言设置,你在使用光盘启动的时候选择的语言就是你$LANG的内容 镜镜姐姐推荐en_US.UTF8
Groff page size (letter) --->
--- Advanced Features --->高级设置
Create SBU and disk usage report
[ ] Run comparison analysis on final stage
Use optimization (see help) 使用优化参数
Optimization level (Final system only) --->全部默认就行了
--- Internal Settings (WARNING: for jhalfs developers only) --->
[ ] Rebuild the Makefile (see help)
--- Load an Alternate Configuration File
Save Configuration to an Alternate File
完成后退出程序开始配置
余下的过程都是自动化的,耐心等待完成即可,一般不会出现错误!
去休息一下吧,唐师父说,andy 那时在唱《布拉格广场》,之后他也跟着唱起来了:
A a fu shou a a fu shou yap so so sory so so so …还跳着舞旋转。。。o(∩_∩)o…
开始编译了,我在VM上干的,一点开始,到六点多就收工了
执行完毕后会看到以下信息
To be able to boot your new system you need to follow the next steps:
- Enter to the chroot using the command found in the section
- Entering the Chroot Environment - except if building CLFS with METHOO=boot.
- Set a password for the root user
。。。。。。。。
If you are an experienced LFS user, several of those steps can be skipped or done in
a different way. But then, that is something that you already know and there is no
need to discuss it here.
Have a nice day :-)
至此,你的LFS半成品就可新鲜出炉了。我们还得进行最后的收尾工作!
下面的过程就很重要了,一般在网上也找不到文档,由于jhalfs是自动化过程,所以执行完毕后也不知道到哪一步了,网上说直接执行到第7章了其实也不全面,jhalfs除了内核没有编译(如果你有配置文件也可以选择让jhalfs执行),bootstrip的安装也完成了,剩下的工作就是配置、编译内核、设置grub,如果这个过程没有问题就大功告成了!我的军队,前进。。。哈哈。。
1、 Jhalfs执行完毕后处于jhalfs用户的状态,执行一下代码:exit
是不是回到root了呢。。
2 1) mount --bind /dev /mnt/lfs/dev (这个非常重要,关系到grub能不能找到设备,这个要在进入chroot环境之前做
2)加载必要的文件系统
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount –vt devpts devpts $LFS/dev/pts
mount –vt tmpfs shm $LFS/dev/shm
3)Chroot到目标系统下
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login
好啦,看到什么了。。。呵呵。。那很好哦。。go on
3 设定root password
passwd root
(下面的操作就和《手把手教你如何建立自己的Linux系统 第二版》后面部分的差不多相同了)
4时间设置(Configuring the setclock Script)
代码:
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=1
# End /etc/sysconfig/clock
EOF
5设置bash下的键盘功能键设置
代码:
cat > /etc/inputrc << "EOF"
set horizontal-scroll-mode Off
set meta-flag On
set input-meta On
set convert-meta Off
set output-meta On
set bell-style none
"\eOd": backward-word
"\eOc": forward-word
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
"\eOH": beginning-of-line
"\eOF": end-of-line
"\e[H": beginning-of-line
"\e[F": end-of-line
EOF
6设置Bash Shell启动文件(The Bash Shell Startup Files)
代码:
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=zh_CN.UTF-8
export INPUTRC=/etc/inputrc
alias ls="ls --color"
export PS1='\u:\w\$ '
# End /etc/profile
EOF
7设置本地网络名
代码:
echo "HOSTNAME=mylinux" > /etc/sysconfig/network
8
设置hosts文件
代码:
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (no network card version)
127.0.0.1 mylinux localhost
# End /etc/hosts (no network card version)
EOF
9设置网络的静态地址
代码:
cd /etc/sysconfig/network-devices &&
mkdir -v ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
注意:IP、GATEWAY、BROADCAST的地址根据自己的实际情况设置。
10设置DNS
代码:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
nameserver 你的首个DNS的地址
nameserver 你的第二DNS的地址
# End /etc/resolv.conf
EOF
(中国的是:202.101.98.53 OR 202.101.98.54,应该不会改吧,呵呵。。)
11建立fstab文件
代码:
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
/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
# End /etc/fstab
EOF
镜镜姐姐提醒:(请注意硬盘设备号!一定要按照自己的分区设置,不要照抄青铜镜的!要不你的系统会起不来了!)
好啦,寒窗苦学LFS终于好戏上台啦。。。
12安装内核Linux-2.6.22.5
代码:
cd /sources
tar xvf linux-2.6.22.5.tar.bz2
cd linux-2.6.22.5
make mrproper
make menuconfig
根据你的机器实际情况配置内核选项,这里为了说明方便,以VMWare5.5为基础虚拟的硬件来配置内核
如果在建立虚拟机的时候是选择的BusLogic的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->CI devices加入(Creative) Ensoniq AudioPCI 1371/1373的支持,编译成模块即可
文件系统的支持,需要根据之前将目标系统分区格式化的情况而定,使用了什么文件系统就需要加入该文件系统的支持,因之前采用的是Xfs文件系统,因此在File Systems->XFS support加入XFS的支持,可以采用编译到内核来避免未用initrd脚本来加载模块而导致启动失败
同时还需要加入framebuffer字体支持,在Device Drivers->Graphics support->Console display driver support中加入Framebuffer Console support并选择上Select compiled-in fonts,选上VGA 8x16 font这一种字体就可以了,这里将这些选择都编译到内核中
可以保存退出了
代码:
make
make modules_install
cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.22.5
cp -v System.map /boot/System.map-2.6.22.5
cp -v .config /boot/config-2.6.22.5
install -d /usr/share/doc/linux-2.6.22.5
cp -r Documentation/* /usr/share/doc/linux-2.6.22.
13安装Grub,使系统能启动,这里设置需要根据情况而修改,这里以之前介绍的分区设置为例:
代码:
grub
出现什么了呢。。。
输入root (hd0,0)
输入setup (hd0)
quit
14 FHS 规定 GRUB 的 menu.lst 文件必须链接到 /etc/grub/menu.lst。为了符合这个规定,可以用下面的命令:
将menu.lst连接到/etc目录下
代码:
mkdir -v /etc/grub
ln -sv /boot/grub/menu.lst /etc/grub
15退出制作环境:
代码:
logout
卸载虚拟文件系统:
引用:
________________________________________
umount -v $LFS/dev/pts
umount -v $LFS/dev/shm
umount -v $LFS/dev
umount -v $LFS/proc
umount -v $LFS/sys
________________________________________
卸载 LFS 自己的文件系统:
引用:
________________________________________umount -v $LFS
16好啦,真的要收工啦。。。
重启系统
shutdown -r now
怎么样。。。o(∩_∩)o… |
|