LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: kikiwarm

chroot + livecd = 硬盘安装LFS

[复制链接]
发表于 2007-6-25 20:18:56 | 显示全部楼层
这个:
mount -vo bind /dev /media/lfslivecd/dev
应该在 tmpfs 和 devpts 之前先被挂载。

-----------------------------------------------------------
cp root.ext2 不是必须的。为什么不是必须的?请继续看:
( 我比较习惯使用 /media ,如果你不习惯可以把所有的 /media 替换成 /mnt )
挂载 iso 文件:
  1. mkdir /media/iso
  2. mount -v -o loop /xxx/xxx/lfslivecd-x86-6.2-5.iso /media/iso
复制代码

当 ls -l /media/iso/ 的时候,如果是已经发现 root.ext2 大小为 1.5GB左右了,就不必再浪费硬盘空间了。
  1. opensuse:~ # ls -l /media/iso
  2. total 497227
  3. drwxr-xr-x 3 root root       2048 Dec 18  2006 boot
  4. -rw-r--r-- 1 root root 1610612736 Jan 29 15:33 root.ext2
复制代码
接下来直接挂载这个 root.ext2 即可。

此处参考手册 http://cross-lfs.org/view/svn/x86/chroot/kernfs.html
  1. mkdir /media/lfslivecd
  2. mount -v -o loop /media/iso/root.ext2 /media/lfslivecd
  3. mount -vt proc proc /media/lfslivecd/proc
  4. mount -vt sysfs sysfs /media/lfslivecd/sys
  5. mount -vo bind /dev /media/lfslivecd/dev
  6. mount -f -vt tmpfs tmpfs /media/lfslivecd/dev/shm
  7. mount -vt devpts devpts /media/lfslivecd/dev/pts   #此处没有加-f 和 -o gid=4,mode=620 的参数
复制代码

现在暂不急于 chroot  . 先检查一下:
  1. ls -l /media/lfslivecd/proc
  2. ls -l /proc
  3. ls -l /media/lfslivecd/sys
  4. ls /sys
  5. ls -l /media/lfslivecd/dev
  6. ls -l /dev
  7. ls -l /media/lfslivecd/dev/shm
  8. ls -l /dev/shm
  9. ls -l /media/lfslivecd/dev/pts
  10. ls -l /dev/pts
复制代码

然后是:
  1. ls /media/lfslivecd/dev/console  -l
  2. ls /dev/console  -l
  3. ls /media/lfslivecd/dev/null -l
  4. ls -l /dev/null
复制代码

通过上面的检查之后,还不要 chroot 。因为此时 root.ext2 是 read-only 的。

由于root.ext2是只读的。现在这样做:
  1. mount -vo bind /tmp /media/lfslivecd/tmp
复制代码
还是检查一下:
  1. ls -l /media/lfslivecd/tmp
  2. ls -l /tmp
复制代码

lfslivecd.iso 中自带了一个用户 jhalfs 。他的home目录是/home/jhalfs
  1. cat /media/lfslivecd/etc/passwd | grep jhalfs
复制代码
屏幕上显示:
  jhalfs:x:101:101:jhalfs:/home/jhalfs:/bin/bash
  1. ls -la /media/lfslivecd/home/jhalfs
复制代码

可以使用lfslivecd.iso中的这个自带的用户来做lfs或者clfs,所以用户也不用我们自己建了。以后手册中的 su - lfs 这样的操作就可以改为 su - jhalfs
先在主系统中建一个目录,然后用 mount --bind /xxx/xxx /zzz/zzz  的办法将主系统中的目录挂载到lfslivecd中。请放心,由于lfslivecd是只读的,这样的操作不会改写lfslivecd.iso的内容。
  1. mkdir -v /home/jhalfs
  2. mount -v --bind /home/jhalfs /media/lfslivecd/home/jhalfs
复制代码

再检查:
  1. ls -la /home/jhalfs
  2. ls -la /media/lfslivecd/home/jhalfs
复制代码

以后把手册上的 /tools 就改为 /tmp/tools . CLFS 的还有 /cross-tools 这个链接文件。 因为,这个/tmp 是主系统的,可以写入。

补充:这里也可以把主系统中的 /mnt 目录挂载到 livecd 中的 mnt 目录:
  1. mount -v --bind /mnt /media/lfslivecd/mnt
复制代码

进入lfslivecd开发环境:
  1. chroot /media/lfslivecd
  2. whoami
  3. who
  4. w
  5. cat /etc/issue
  6. df /
  7. df ./
复制代码
然后,转到 /tmp 目录。这个目录是可写的。
  1. cd /tmp
复制代码

在chroot环境中改 /home/jhalfs 属主(组)为 jhalfs:jhalfs
  1. chown jhalfs:jhalfs /home/jhalfs
复制代码

然后检查一下开发环境:
  1. cat > version-check.sh << "EOF"
  2. #!/bin/bash
  3. # Simple script to list version numbers of critical development tools
  4. bash --version | head -n1 | cut -d" " -f2-4
  5. echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-4
  6. bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
  7. echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
  8. diff --version | head -n1
  9. find --version | head -n1
  10. gawk --version | head -n1
  11. gcc --version | head -n1
  12. /lib/libc.so.6 | head -n1 | cut -d" " -f1-7
  13. grep --version | head -n1
  14. gzip --version | head -n1
  15. make --version | head -n1
  16. patch --version | head -n1
  17. sed --version | head -n1
  18. tar --version | head -n1
  19. EOF
  20. bash version-check.sh
复制代码

现在检查内核版本信息(从主系统挂载的)
  1. cat /proc/version
复制代码

这里需要注意一下。如果主系统是32位的,不可以编译x86_64或者Pure64。

之后,可以按照手册来做了。注意,在chroot环境中的 /tmp 和 /home/jhalfs 都是从主系统中挂载的,是可写的。
所有的 /tools 全 改为 /tmp/tools
这样,很多地方就不能再使用复制粘贴的办法了。对于想熟练命令的朋友可一试。
当然,如果想偷懒,仍然还是有办法的。

还有需要注意的是,不要在 chroot 环境中使用关机或者重启机器的命令。
回复 支持 反对

使用道具 举报

发表于 2007-6-28 17:02:22 | 显示全部楼层
to:kikiwarm

如果安装出错了,需要重新来过,需要把root.ext2删掉,重新拷贝一份新的吗?
(好像要把,要不然那些记录会留下来马?)
回复 支持 反对

使用道具 举报

发表于 2007-6-28 17:02:22 | 显示全部楼层
网络问题,发重复了,呵呵
回复 支持 反对

使用道具 举报

发表于 2007-6-29 02:22:21 | 显示全部楼层
反正我拿livecd是成功了,没试验其他方法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表