1、概念说明:
主系统:即在硬件上直接运行的操作系统。
用户系统:即跑在主系统之上但系统软件在逻辑上独立于主系统的操作系统,如使用虚拟机中的系统、chroot进入的系统,通常用于某个具体需求而安装。
目标系统:构建生成的系统,运行在目标架构的硬件环境上。
2、使用需求:
“勇豹”提供了一组脚本和工具用来交叉编译构建操作系统发行版,然而要想让这些脚本和工具正常工作,需要用户系统满足运行所需的软件环境。
以下是一个对用户系统的概要性需求描述:
1、一个基本的GNU/Linux操作系统发行版,可使用例如Fedora Linux发行版。
2、发行版中需要提供构建系统过程中所需的软件包:
(1) binutils、gcc、make等软件编译相关的软件包;
(2)一些构建host环境工具所需要的一些开发包,如openssl-devel、libxml2-devel等;
(3)常用的工具命令,如doxygen、gtk-doc等。
3、构建过程需要大量的存储空间,因此剩余可用于构建的空间容量不少于50G。
运行环境安装:
为了不破坏主系统的情况下,通常可以创建一个专用的运行“勇豹”的用户系统。
以下是一个用户系统安装内容的示范,例如在Fedora系统中使用以下命令安装一个额外的系统环境:
export DISTRO_URL=https://mirrors.bfsu.edu.cn/fedora/releases/38/Everything/x86_64/os/
sudo dnf install @core @c-development glibc-langpack-zh rpm-build git wget texinfo \
zlib-devel rsync libunistring-devel libffi-devel gc-devel \
expat-devel pcre2-devel glib2-devel cmake openssl-devel libyaml-devel \
libxml2-devel cairo-devel libxslt-devel gettext-devel \
glibc-static glib2-static libstdc++-static zlib-static gmp-static \
fpc tcl ncurses-devel gperf openssl icu docbook-style-xsl bc squashfs-tools \
graphviz doxygen xmlto xcursorgen dbus-glib lynx gtk-doc \
--installroot ${HOME}/mybuild --disablerepo="*" \
--repofrompath core,${DISTRO_URL} \
--releasever 38 --nogpgcheck
unset DISTRO_URL
上面的命令将在主系统的用户目录中创建一个mybuild目录,其中安装了一个Fedora Linux系统,该系统将作为后续的用户系统进行使用。
接下来切换到该用户系统中:
sudo chroot ${HOME}/mybuild
第一次进入用户系统环境后需要挂载必要的文件系统:
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devtmpfs dev /dev
mount -t devpts devpts /dev/pts
mount -t tmpfs shmfs /dev/shm
如果没有再次启动计算机或者卸载文件系统,当再次切换到该用户系统时不需要再次挂载,否则需要重新挂载以上的文件系统。
用户系统环境的安装亦可采用docker等方式,安装方式(待补充)
例如安装了unbuntu 22.04版本的docker环境,用户需要使用如下的命令安装所需的软件包:
apt-get install git vim build-essential libzstd-dev gettext texinfo zlib1g-dev rsync gawk bison \
libgmp-dev sudo autoconf libunistring-dev libffi-dev pkg-config libgc-dev tcl \
language-pack-zh-hans wget python3 libexpat1-dev libpcre2-dev flex libglib2.0-dev \
libxml2-dev cmake libssl-dev libcairo-dev libxslt1-dev xsltproc docbook-xsl bc \
graphviz doxygen xmlto gperf ss-dev squashfs-tools
4、创建普通用户
无论是哪种方式建立的用户系统环境,都建议创建一个普通用户用于“勇豹”系统的制作,这样可减少因为一些意外的操作而导致对用户系统甚至主系统破坏的情况。
使用以下命令创建用户
groupadd yongbao
useradd -s /bin/bash -g yongbao -m -k /dev/null yongbao
使用命令切换到新创建的用户:
su - yongbao
为制作用户设置最精简和必要的环境变量,以帮助后续制作过程的开展。
cat > ~/.bash_profile << "EOF"
exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
export LC_ALL=zh_CN.UTF-8
export PATH=/usr/bin:/usr/local/bin
unset CFLAGS
unset CXXFLAGS
EOF
启用用户环境的设置,使用命令:
source ~/.bash_profile
5、设置用户权限
因“勇豹”的制作过程中需要使用root权限进行目录的挂载,为减少认证的次数,建议给刚创建的用户赋予挂载目录的权限。
使用以下命令修改权限设置文件:
sudo visudo
加入以下内容并保存
yongbao localhost=(root) NOPASSWD: /bin/mount, /bin/umount
这里设置yongbao用户在本机上而非远程访问操作时可以在不输入密码的情况下使用mount和umount两个命令。
若希望远程访问也可以不输入密码,则可将"localhost"改为"ALL"。
权限设置完成后就可以使用“勇豹”构建Linux系统了,新手入门,请参考《最简使用指南》,更详细的使用请参考《“勇豹”使用指南》