zoukankan      html  css  js  c++  java
  • LFS(Linux From Scratch)学习

    一、环境准备

    使用Debian平台,需做如下环境检查:

    1、检查各个需要的工具及内核版本号,看看是否符合lfs7.7的列表要求

    2、检查需要用到的库,一共有三个,gmp, mpfr和mpc

    工具检查脚本如下:

    #filename:check_env.sh
     
    #/bin/sh
    export LC_ALL=C
    
    # check for bash
    bash --version | head -n1 | cut -d" " -f2-4
    echo "/bin/sh -> `readlink -f /bin/sh`"
    echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
    bison --version | head -n1
    
    # check for yacc
    if [ -h /usr/bin/yacc ]; then
        echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
    elif [ -x /usr/bin/yacc ]; then
        echo yacc is `/usr/bin/yacc --version | head -n1`
    else
        echo "yacc not found"
    fi
    
    # check for other
    bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
    echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
    diff --version | head -n1
    find --version | head -n1
    gawk --version | head -n1
    if [ -h /usr/bin/awk ]; then
        echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
    elif [ -x /usr/bin/awk ]; then
        echo yacc is `/usr/bin/awk --version | head -n1`
    else
        echo "awk not found"
    fi
    
    gcc --version | head -n1
    g++ --version | head -n1
    ldd --version | head -n1 | cut -d" " -f2- # glibc version
    grep --version | head -n1
    gzip --version | head -n1
    cat /proc/version
    m4 --version | head -n1
    make --version | head -n1
    patch --version | head -n1
    echo Perl `perl -V:version`
    sed --version | head -n1
    tar --version | head -n1
    makeinfo --version | head -n1
    xz --version | head -n1
    
    echo "main(){}" > dummy.c && g++ -o dummy dummy.c
    if [ -x dummy ]; then
        echo "g++ compilation OK";
    else
        echo "g++ compilation failed";
    fi
    
    rm -f dummy.c dummy

    若结果如下,则环境就绪

    image

    若出现“command not found”,则缺少工具,可执行如下命令进行安装(以安装gawk工具为例)

    sudo aptitude install gawk

    库检查脚本如下:

    #filename:check_lib.sh
     
    #!/bin/bash
    
    for lib in lib{gmp,mpfr,mpc}.la; do
        echo $lib: $(
                        if find /usr/lib* -name $lib | grep -q $lib; then
                            :;
                        else
                            echo not;
                        fi
                    ) found
    done
    
    unset lib

    image

    结果显示,三个库目前都不具备

    二、存储设备准备

    LFS的编译需要单独有一块存储,条件不好的就单独划个分区,条件好的就再挂块硬盘,实在不行就新建个目录来做这件事好了,只不过这样是没法引导起来,只能chroot之后当编译环境用。

    下面以VMware新建一块SATA硬盘,然后接入虚拟机,分区,挂载为例来描述这个过程。

     

    点击“编辑虚拟机设置”,选择添加硬盘,如下图:

    image

    选择“SATA(A)”,点击“下一步”,如下图:

    image

    选择“创建新的虚拟磁盘”,点击“下一步”,如下图:

    image

    设置磁盘大小为:20G,然后选择“将虚拟磁盘存储为单个文件”,点击“下一步”,如下图:

    image

    点击“完成”,如下图:

    image

    点击“确定”,如下图:

    image

    启动虚拟机,执行如下命令,查看新的硬盘信息

    ls -l /dev | grep sd

    新的硬盘为sdb,如下图:

    image

    执行如下命令后,选择”New”来新建一个分区,如下图:

    cfdisk /dev/sdb

    image

    选择[Primary],创建一个新的主分区,如下图:

    image

    提示Size (in MB),选择要创建的分区大小为:128,如下图:

    image

    选择[Beginning],在空闲空间的起始位置来添加一个分区,如下图:

    image

    选择[ Bootable ],回车,在上方新建的分区这一栏Flags字段会出现Boot字样,如下图:

    image

    方向键按向下,光标选中”Free Space”,建立交换分区。基本上都是重复刚才的步骤,只不过大小改成1024,不需要置Boot标识。

    image

    移动光标到[ Type ],更改文件系统类型,回车后进入类型选择菜单,编号默认输入就是82,也就是”Linux swap / Solaris”,直接回车即可

    image

    此时回到主菜单,可以看到第二个分区sdb2的”FS Type”一项改成了”Linux swap / Solaris”,如下图:

    image

    按方向键向下,选中Free Space,重复sdb1的创建步骤,类型选择[Logical],大小默认最大即可,不需要更改,如下图:

    image

    此时回到主菜单,可以看到Name栏会显示sdb5,如下图:

    image

    新的硬盘分区表建立完毕,需要写入硬盘了,横移光标到[ Write ],回车,如下图:

    image

    提示”Are you sure you want to write the partition table to disk? (yes or no):”,敲入“yes”并回车,如下图:

    image

    右移光标到[ Quit ]回车,退出cfdisk,如下图:

    image

    至此,分区工作完成,LFS需要的独立存储设备与分区准备完毕,如下图:

    image

     

    三、磁盘初始化与源码准备

    下面需要格式化分区,步骤如下:

    /dev/sdb1使用ext2,执行如下命令,如下图

    mkfs -v -t ext2 /dev/sdb1

    image

    /dev/sdb2使用swap,执行如下命令,如下图

    mkswap /dev/sdb2

    image

    /dev/sdb5使用ext4,执行如下命令,如下图

    mkfs -v -t ext4 /dev/sdb5

    image

    执行如下命令,创建目录:/mnt/lfs

    mkdir -pv /mnt/lfs

    image

    方便起见,把/mnt/lfs目录的属主改为当前用户,否则每次操作都要加sudo,执行如下命令

    chown -R lenovo.sudo lfs/

    image

    把lfs工程的主要存储分区/dev/sdb5挂载到这个目录上

    mount -v -t ext4 /dev/sdb5 /mnt/lfs

    image

    每次宿主系统重启之后,都需要重新export和mount,方便起见,执行如下命令,建立环境变量$LFS=/mnt/lfs

    vi ~/.bashrc
    #在文件尾添加如下内容
    export LFS=/mnt/lfs

    执行如下命令,使环境变量立即生效

    source ~/.bashrc

    至此我们就可以在$LFS上面来下载和编译我们所需的lfs组件了。

    下面,新建用于存储源码的目录,并下载源码

    mkdir $LFS/src
    cd $LFS/src
    

    wget http://www.haopingrui.cn/lfs.tar.gz 124e1eb0e52f176ab84c38118b4975e3

    image

    至此,分区和源码准备完成。

  • 相关阅读:
    devDependencies和dependencies的版本写法
    dependencies 与 devDependencies 的区别
    Java +selenium Navigation接口介绍
    Java + selenium window()接口方法介绍
    Java + selenium Timeout接口用法介绍
    Java + selenium 启动谷歌浏览器
    selenium 3 下载 + Java使用
    Rsync 实现服务器文件的同步——服务端的安装配置
    selenium V1.0和V2.0差别对比
    PHP的安装配置
  • 原文地址:https://www.cnblogs.com/274914765qq/p/4413784.html
Copyright © 2011-2022 走看看