Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114775
  • 博文数量: 32
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-05 10:50
文章分类
文章存档

2011年(1)

2008年(31)

我的朋友

分类: LINUX

2008-10-28 11:34:41

把LFS LiveCD安装到硬盘
LFS LiveCD 5.2-5绝对值得一用的linux livecd。虽然没有其它livecd强大,但只有490M的它速度是其它发行版无法比拟的。kernel 2.6.16.38和xorg 6.9 + xfce 4.1,编译环境是gcc 4.0.1 + libc 2.3.6。先不说用它做LFS,光是研究一下它的结构就可以对linux了解很多了。可惜的是这只是一个livecd,不能install。网上传出可以把它安装到硬盘上。查询了相关资料,发现这里所说的安装......并不是把livecd装到硬盘上,而是把livecd从光盘的载体换到硬盘。不是很明白??好说,说详细一点你就明白了。这个livecd里仅有几个文件,一些是说明,一些是用来引导系统和解压的,还有一个文件root.ext2就是整个系统,网上的“安装”只是更改了引导系统,让引导系统不再从光盘去搜寻root.ext2,而从硬盘去查找。这样做有一个好处,一个坏处,好处就是root.ext2移到了硬盘(任何文件系统,但需要内核支持),减少了光驱运行时间,延长了光驱寿命,而坏处.......它还是一个livecd我们所做的一切改动(有意或无意)都会在重启后还原。
  经过几天的研究还有网上查的相关资料,我发现了可以把livecd真正安装到硬盘的方法。像一个发行版一样的使用。下面说说我做的过程,不过在这之前先说说livecd的引导过程。
  首先,光盘引导后,引导程序会在光盘上找到内核linux(或是linux64,64位系统使用的内核),然后调入光盘上的INITRAMFS_DATA_CPIO.GZ,这个文件里包含的程序可以把root.ext2解压(这个文件在光盘上只有490M,是被压缩的,解压后有1.5G),然后开始内核的引导过程,在这个过程里内核会把root.ext2装载到根文件系统(我不清楚原理,但1.5G的文件不可能解出来放在内存,这里用的应该是和虚拟光驱感觉一样的方法,通过接口调用的),然后内核转到根文件系统开始正常的系统启动过程。这里的内核是把ISO9660编译进去的,否则找不到光驱。
  现在我们来开始动手安装吧。当然要先用livecd引导起来。
  用fdisk分区,再用mke2fs建立文件系统(如mke2fs -j /dev/hda10)。然后把分区挂载起来
  mkdir /mnt/livehd
  mount /dev/hda10 /mnt/livehd
  把root.ext2挂载到/mnt/livecd
  mkdir /mnt/livecd
  mount -o loop /dev/shm/.cdrom/root.ext2 /mnt/livecd //不用加-t ext2也可以的
  网上有的说root.ext需要解压才能mount,要装XXXX解压,其实没这个必要,用livecd启动后在/dev/shm/.cdrom/里的root.ext2已经是可以直接mount的了。何必又去mount个cdrom然后解压cdrom里的root.ext2呢:)

****************深度思考添加
我使用的是lfslivecd-x86-6.2-4,光盘启动好后,已经被挂载了/上。

  现在当然是把系统复制到硬盘再做设置
  cp -Rv /mnt/livecd/* /mnt/livehd
  把dev设备挂上
  mount --bind /dev /mnt/livehd/dev
  然后就chroot过去
  chroot /mnt/livehd
  删除原来的/boot,这里面的东西我们用不上了,它们是用来做光盘起动的。
  rm -fr /boot
  mkdir /boot /boot/grub
  cp /usr/lib/grub/i386-pc/stage{1,2} /boot/grub
  现在需要编译内核,内核在/lfs-sources下有一个2.6.16.38的。当然你也可以提前下个其它版本的放在电脑上,再多mount一个区cp过来。
  你可以用两个tty,一个编译内核,一个做必要的设置。内核编译的过程不详说了。不过要注意/boot下的内核名,之后要用到,我不是用make install的。我是用cp arch/i386/boot/bzImage /boot/lfskernel-2.6.20.16(和LFS书上用同样的方法,我用的内核版本是2.6.20.16,不是lfs-sources里的2.6.16.38)
  需要设置的地方最重要的有/etc/fstab /boot/grub/menu.lst
  /etc/fstab,需要把里面加载到/的那一行改成你的设置,比如我的是
  /dev/hda10 / ext3 default 1 1
  我还加上了swap
  /dev/hda11 swap swap pri=1 0 0
  而/boot/grub/menu.lst这个文件是没有的。需要建一个,当然你需要按你的情况来设置。
  cat > /boot/grub/menu.lst << "EOF"
  default 0
  timeout 30
  hiddenmenu
  
  title LFS LiveHD 6.2-5
    root (hd0,9)
    kernel /boot/lfskernel-2.6.20.16 root=/dev/hda10 vga=791 quiet
  title Windows
    root (hd0,0)
    chainloader +1
  EOF
  这里注意root (hd0,?)要用你实际用来装livecd的硬盘分区,kernel /boot/{文件名}要和你的一样,root=/dev/hda{?}也要和你的设置一样

  现在需要做一些小设置。LFS帮我们想的很全了。用现成的。
  cd /lfs-sources
  tar xf lfs-bootscripts-6.2.tar.bz2
  cd lfs-bootscripts-6.2
  make install
  cd ..
  rm -fr lfs-bootscripts-6.2
  LFS脚本装好后去掉启动的选择窗口
  rm -f /etc/rc.d/rcsysint.d/{S59clkconf,S69langconf}
  这时内核差不多也完了吧 :)
  还有个地方/etc/inittab
  删除这个文件里的
  sd:06:once:/usr/bin/shutdown-helper
  这一行,要不会引起重启出错。
  下面的1:xxx 2:xxx.....里改一下,改成
  1:2345:respawn:/sbin/agetty tty1 9600
  2:2345:respawn:/sbin/agetty tty2 9600
  以此类推,这样就有登录了,要不原来的会自动登录.......
  其实livecd已经在你的硬盘上安家了。不过在重启之前,记得最重要的
  passwd root
  livecd默认是空密码,但空密码是不能登录的。

  至此,重启吧,可以去liveHD里玩了。其实过程里设置部分全和LFS手册上的一样或是没多大区别。当然里了系统之后还有很多东西需要设置,如网卡之类。
  再装上个office,这下可以在liveHD下看着手册做LFS了。又快又爽

阅读(3702) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~