构建自己的Linux系统记录(三)

来源:互联网 发布:nginx alias useless 编辑:程序博客网 时间:2024/04/20 09:30

定制GNU/Linux系统-临时系统

由主系统建立临时系统,再通过临时系统建立目标系统,最终使得目标系统能够完全独立运行

工作环境的准备
export SYSDIR=/opt/mylinux

设置环境变量,不带参数的export可以查看现有的环境变量

mkdir -pv ${SYSDIR}/sourcesmount /dev/sda2 ${SYSDIR}

建立目录,挂载到第二块分区上,-p递归创建,无父目录,就先建立父目录,-v 显示结果,可以写成-pv或-p -v,rmdir删除目录也是一样的

mkdir -pv ${SYSDIR}/sourcesnkdir -pv ${SYSDIR}/buildchmod -v a+wt ${SYSDIR}/{sources,build}

建立制作过程源代码和软件包存放的地方,chmod修改sources,build的权限,-v显示结果,

权限分为3部分,u(拥有者),g(拥有组成员),o(其他用户),a表示全部,权限分别为rwx(写,读,执行)
(u)|(g)|(o)
rwx|rwx|rwx
每个用一组二进制表示111,+表示增加某个权限,-表示去掉,t是一种特殊标志,表示该文件只有用户所有者才能删除,可自己查找其他资料
这组二进制数字常被显示成八进制,执行后会显示1777表示,rwxrwxrwx,1表示有特殊标志

mkdir -pv ${SYSDIR}/toolsln -sv ${SYSDIR}/tools /

建立临时系统存放目录,ln是建立软链接,执行以后访问 /tools 和 ${SYSDIR}/tools 是一样的,类似于windows下的mklink,网盘同步的时候很有用。

groupadd mylinuxuseradd -s /bin/bash -g mylinux -m -k /dev/null mylinuxpasswd mylinux

建立制作系统用户,每个用户都必须属于一个组,-s指定该用户使用的shell,一般为bash,-g指定用户属于的组,-m,指定用户目录所在地,一般为/home,-k指定用户复制的配置文件,/dev/null表示不复制,最后是用户名,passwd修改密码

chown -v mylinux ${SYSDIR}/toolschown -v mylinux ${SYSDIR}/sourceschown -v mylinux ${SYSDIR}/build

设置临时系统,软件包,编译用的目录归制作用户所有

su - mylinux

切换到制作用户

可以用pwd显示当前所在的目录,可以用whoami显示自己当前的用户名

建立用户的启动设置脚本
在 ~/ 目录下 ,也就是当前用户目录下
建立 .bash_profile ,文件内容为

exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash

建立 .bashrc ,文件内容为

set +humask 022SYSDIR=/opt/mylinuxLC_ALL=POSIXPATH=/tools/bin:/bin:/usr/binDOWNLOADDIR=${SYSDIR}/sourcesBUILDDIR=${SYSDIR}/buildexport SYSDIR LC_ALL PATH DOWNLIADDIR BUILDDIR

然后应用这些设置脚本

source ~/.bash_profile

建立用于测试的文件,在${BUILDDIR}下建立test.c

#include <stdio.h>int main(){    printf("OK\n");    return 0;}

这就建立好了基本的工作环境,接下来是编译软件包,开始一步步建立linux操作系统,我用的源代码就是镜像文件里提供的,出现错误也好处理,也可以去网站下载最新的源码。

编译软件保的过程,大致为
-软件包解压 tar xvf <解压的文件> -C <解压到的位置> x进行解压缩操作,v文件校验输出,f指定解压的文件,-C指定目录
-进入源代码目录 pushd 和 popd 进入目录像栈一样,只要配对使用,就可以回到初始目录
-给源代码应用补丁 patch -Np1 -i <包含路径的补丁文件名> N代表应用补丁内容,对应的R表示删除补丁,p代表补丁文件中省略的目录数量,i指定文件名
-配置源代码 通过目录中的 configure
-编译源代码通过make可以指定参数
-检查编译安装过程的正确性,看最后的输出,
-可以通过日志文件记录编译过程的输出, make 2>&1 | tee make.log tee是从标准输入读取然后输出到标准输出和文件,| 是管道命令将make 产生的输出作为输入到 tee, 2>&1表示同时也要输出到标准输出
-删除代码目录 rm是删除的命令 指定参数 -r表示可以删除目录指定-f不需要任何提示强制删除

一切准备就绪,终于可以开始编译建立linux了,虽然有很多地方还是不清楚,但这些命令还是以后通过不断的使用来熟悉吧!

0 0
原创粉丝点击