zoukankan      html  css  js  c++  java
  • 编译LFS

    成功编译并运行linux from scratch 7.7 system,有必要作下总结。
    本次用的编译LFS的环境是:
    虚拟机是virtalbox
    宿主系统为CentOS 7.0 x86_64 (core版本)
    LFS版本为 7.7 system
    我用两块硬盘,一块安装宿主系统,另一个作为LFS的编译安装盘,编译成功后,脱离宿主系统那块硬盘,单独引导启动LFS linux的那块硬盘,登录进入LFS linux。
    虚拟机上安装好centos后,在虚拟机上加一块硬盘,大小20G左右,分区如下

                               磁盘驱动器:/dev/sdb
                         大小:21474836480 字节,21.4 GB
            磁头数:255  每磁道扇区数:63        柱面数:2610
    
        名称        标志       分区类型   文件系统         [标签]         大小 (MB)
     ------------------------------------------------------------------------------
        sdb1        启动        主分区    ext2                               131.61
        sdb2                    主分区    swap                              1019.94
        sdb5                    逻辑分区  ext4                             20323.30*

    sdb1分100多M以后打算给/boot的单独分区,sdb2给swap分区,sdb5 作为系统根目录。
    然后根据LFS手册说明创建好文件系统,把sdb5挂载到/mnt/lfs作为工作目录。按手册下载源文件,创建目录,配置环境等,就开始编译工具链,编译工具链有几个地方需要注意
    1,手册中所有的软件编译命令都默认在解压出来的软件目录中进行,也就是说必须先用tar解压,再cd进行软件目录。
    2,编译完成后用"cd .. "退出软件目录,回到source目录
    3,除非特别说明,删除解压出来的目录和所有编译过程中生成的 <package>-build 目录。也就是说编译成功后把解压出来的源文件目录删除,如果有build目录,也要删除,以免影响下下编译。

    编译工具链的系统基础软件都很顺利。

    由于打算给/boot单独的分区,在编译内核之前,在chroot环境中,先挂载sdb1分区到/boot目录

    mount -t ext2 /dev/sdb1 /boot


    这样编译出来的kernel就会安装到sdb1分区上。

    接下配置grub启动

    cat > /boot/grub/grub.cfg << "EOF"
    # Begin /boot/grub/grub.cfg
    set default=0
    set timeout=5
    
    insmod ext2
    set root=(hd1,5)
    
    menuentry "GNU/Linux, Linux 3.19-lfs-7.7-systemd" {
    linux /vmlinuz-3.19-lfs-7.7-systemd root=/dev/sdb5 ro
    }
    EOF

    完成后,一切看上去已经很OK,于是把宿主系统的那块硬盘卸掉,单独启动LFS linux,也成功出现了系统菜单选择,选择后回车后傻眼了,提示找不到分区。

    通过grub命令发现,硬盘是hd0,而不是hd1,原因很简单,原来宿主系统还是,宿主系统那块盘是hd0,LFS 系统的那块盘是hd1,而现在已经把宿主系统的硬盘卸掉了,只剩下一块LFS linux,理所当然是hd0。

    于是在grub命令下,于是手动设置root和加载linux内核
    set root=(hd0,5)
    linux /vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda5 ro
    boot

    成功加载内核并启动后,报他个错误,也是没发现sdb硬盘,这让我想到了/etc/fstab 的配置,里面还是sdb,没办在,登录不进系统。

    于是关闭虚拟机,重新把宿主系统的那块硬盘加入,引导进入宿主系统,用chroot进入lfs环境,修改/etc/fstab文件如下:

    # Begin /etc/fstab
    /dev/sda5 / ext4 defaults 1 1
    /dev/sda1 /boot ext2 defaults 0 0
    /dev/sda2 swap swap pri=1 0 0
    # End /etc/fstab

    在chroot环境中,把lfa linux的/boot分区挂进来,修改/boot/grub/grub.cfg文件,修改后内容如下

    set default=0
    set timeout=5
    
    insmod ext2
    set root=(hd0,5)
    
    menuentry "GNU/Linux, Linux 3.19-lfs-7.7-systemd" {
    linux (hd0,1)/vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda5 ro
    }

    保存退出。

    关闭系统,把宿主系统卸掉,只引导LFS linux盘,成功进入系统,用root登录,各功能都正常。

    文章出处

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/lycokcc/p/5168641.html
Copyright © 2011-2022 走看看