博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重走LFS之路:(七) 基础系统编译准备
阅读量:6079 次
发布时间:2019-06-20

本文共 2680 字,大约阅读时间需要 8 分钟。

重走LFS之路:(七) 基础系统编译准备

(题图来自: techradar.com)

准备虚拟内核文件系统

建立系统挂载目录

 
  1. mkdir -pv $LFS/{
    dev,proc,sys,run}

创建初始设备节点

 
  1. sudo mknod -m 600 $LFS/dev/console c 5 1
  2. sudo mknod -m 666 $LFS/dev/null c 1 3

挂载并填充设备目录

 
  1. sudo mount -v bind /dev $LFS/dev

挂载虚拟内核文件系统

 
  1. mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
  2. mount -vt proc proc $LFS/proc
  3. mount -vt sysfs sysfs $LFS/sys
  4. mount -vt tmpfs tmpfs $LFS/run

建立一个符号链接

 
  1. if [ -h $LFS/dev/shm ]; then
  2. mkdir -pv $LFS/$(readlink $LFS/dev/shm)
  3. fi

这时候就可以chroot到lfs的工具环境里面来进行基础系统的编译,但是在这之前需要先在$LFS中建立root目录,然后再chroot进去编译。

进入chroot环境

 
  1. sudo chroot $LFS /tools/bin/env -i \
  2. HOME=/root \
  3. TERM=”$TERM \
  4. PS1=’${
    debian_chroot:+($debian_chroot)}\[\033[01;31m\][\A]\[\033[01;33m\]\u\[\033[00m\]@\[\033[01;32m\]\h:\[\033[01;34m\]\w\[\033[00m\]$  \
  5. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  6. /tools/bin/bash login +h

建立必要目录、符号链接与文件

 
  1. mkdir -pv /{
    bin,boot,etc/{
    opt,sysconfig},home,lib/firmware,mnt,opt}
  2. mkdir -pv /{
    media/{
    floppy,cdrom},sbin,srv,var}
  3. install -dv -m 0750 /root
  4. install -dv -m 1777 /tmp /var/tmp
  5. mkdir -pv /usr/{,local/}{
    bin,include,lib,sbin,src}
  6. mkdir -pv /usr/{,local/}share/{
    color,dict,doc,info,locale,man}
  7. mkdir -v /usr/{,local/}share/{
    misc,terminfo,zoneinfo}
  8. mkdir -v /usr/libexec
  9. mkdir -pv /usr/{,local/}share/man/man{
    1..8}
  10. case $(uname -m) in
  11. x86_64) ln -sv lib /lib64
  12. ln -sv lib /usr/lib64
  13. ln -sv lib /usr/local/lib64 ;;
  14. esac
  15. mkdir -v /var/{
    log,mail,spool}
  16. ln -sv /run /var/run
  17. ln -sv /run/lock /var/lock
  18. mkdir -pv /var/{
    opt,cache,lib/{
    color,misc,locate},local}

建立基本文件和符号链接

 
  1. ln -sv /tools/bin/{
    bash,cat,echo,pwd,stty} /bin
  2. ln -sv /tools/bin/perl /usr/bin
  3. ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
  4. ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
  5. sed s/tools/usr/’ /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
  6. ln -sv bash /bin/sh
  7. ln -sv /proc/self/mounts /etc/mtab

创建用户存储文件passwd

 
  1. cat > /etc/passwd << EOF
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/dev/null:/bin/false
  4. daemon:x:6:6:Daemon User:/dev/null:/bin/false
  5. messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
  6. nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
  7. EOF

创建用户组文件group

 
  1. cat > /etc/group << EOF
  2. root:x:0:
  3. bin:x:1:daemon
  4. sys:x:2:
  5. kmem:x:3:
  6. tape:x:4:
  7. tty:x:5:
  8. daemon:x:6:
  9. floppy:x:7:
  10. disk:x:8:
  11. lp:x:9:
  12. dialout:x:10:
  13. audio:x:11:
  14. video:x:12:
  15. utmp:x:13:
  16. usb:x:14:
  17. cdrom:x:15:
  18. adm:x:16:
  19. messagebus:x:18:
  20. systemd-journal:x:23:
  21. input:x:24:
  22. mail:x:34:
  23. nogroup:x:99:
  24. users:x:999:
  25. EOF

这时候可以把用户名位置那讨厌的“I have no name!”去掉了

 
  1. exec /tools/bin/bash login +h

用户名成功变身root

再建立一些必要的日志文件,就可以进行系统编译啦

 
  1. touch /var/log/{
    btmp,lastlog,wtmp}
  2. chgrp -v utmp /var/log/lastlog
  3. chmod -v 664 /var/log/lastlog
  4. chmod -v 600 /var/log/btmp
原文发布时间:2015-04-10
本文来自云栖合作伙伴“linux中国”

转载地址:http://ewogx.baihongyu.com/

你可能感兴趣的文章
OPENGL半透明图像产生黑色光环
查看>>
我的学习路线
查看>>
day16-jQuery扩展以及自执行函数的应用
查看>>
使用Linux输出重定向将debug信息和ERROR信息分离
查看>>
金额正则表达式
查看>>
Ubuntu中使用WPS
查看>>
c#插入数据库
查看>>
0922继承,练习题目-作业
查看>>
数论--高斯消元法
查看>>
用 Java 实现的日志切割清理工具(源代码下载)
查看>>
尚学堂java答案解析 第二章
查看>>
Struts2+JSON+JQUERY DEMO
查看>>
nodejs下的express安装
查看>>
Ubuntu root 密码 sudo passwd
查看>>
STL - C++ 11的Lambda表达式(下)
查看>>
Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
查看>>
JS 总结
查看>>
面向切面编程(AOP)
查看>>
第三次作业
查看>>
JDBC编程:使用 Statement 修改数据库
查看>>