4.1 搭建初始系统
4.1.1 安装一个系统环境
export DISTRO_URL=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/40/Everything/x86_64/os/
sudo dnf install @core @c-development rpm-build git python3-devel texinfo zlib-devel \
gettext-devel rpm-devel tcl ncurses-devel openssl-devel bc wget meson ninja-build \
gperf help2man \
--installroot /opt/distro --disablerepo="*" --repofrompath base,${DISTRO_URL} \
--releasever 40 --nogpgcheck
unset DISTRO_URL
4.1.2 配置初始系统
pushd /opt/distro
sudo mount -t devtmpfs dev dev
sudo mount -t proc proc proc
sudo mount -t sysfs sys sys
sudo mount -t devpts devpts dev/pts -o gid=5,mode=620
sudo mount -t tmpfs shm dev/shm
sudo mount -t tmpfs tmpfs tmp -o nosuid,nodev
sudo mount -t tmpfs tmpfs run -o nosuid,nodev,mode=755
popd
sudo cp /etc/resolv.conf /opt/distro/etc/
4.1.3 下载全部源代码
sudo rsync -r --progress --delete --update \
rsync://mirrors.tuna.tsinghua.edu.cn/fedora/releases/40/Everything/source/tree/ /opt/srpms
sudo mkdir -pv /opt/distro/opt/srpms
sudo mount --bind -o ro /opt/srpms /opt/distro/opt/srpms
4.1.4 登录初始系统
sudo chroot /opt/distro /bin/env -i HOME=/root TERM="${TERM}" \
PS1='\u:\w\$ ' /bin/bash --login +h
4.1.5 配置软件仓库
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/*.repo
nano /etc/yum.repos.d/fedora.repo
修改fedora.repo,修改[fedora]仓库的baseurl为:
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Everything/$basearch/os/
在metalink前面加上#,注释掉这一行。
将enabled的值修改为1,启用[fedora]仓库。
修改[fedora-source]仓库的baseurl为:
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Everything/source/tree/
在metalink前面加上#,注释掉这一行。
将enabled的值保持为0。
如果下载了Fedora Linux的全部源代码(前面我们的确已经下载了),那么baseurl可以设置为:
baseurl=file:///opt/srpms/
如果要移植的版本已经发布有一段时间了,那么我们也可以修改fedora-updates.repo,将其中的[updates]仓库修改为:
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Everything/$basearch/
在metalink前面加上#,注释掉这一行。
将enabled的值保持为0,禁用[updates]仓库。
4.2 创作基地的搭建和设置
4.2.1 设置环境变量
export SYSDIR=/opt/mydistro
4.2.2 建立创作基地目录
mkdir -pv ${SYSDIR}
4.2.3 创建必要的目录
mkdir -pv ${SYSDIR}/sources
mkdir -pv ${SYSDIR}/build
install -dv ${SYSDIR}/tools
install -dv ${SYSDIR}/cross-tools
ln -sv ${SYSDIR}/tools /
ln -sv ${SYSDIR}/cross-tools /
4.2.4 创建制作用户
groupadd loongson
useradd -s /bin/bash -g loongson -m -k /dev/null loongson
usermod -a -G wheel loongson
passwd loongson # 设置用户密码
chown -Rv loongson ${SYSDIR}
chmod -v a+wt ${SYSDIR}/{tools,cross-tools,sources,build}
4.2.5 设置制作用户
su - loongson
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 SYSDIR="/opt/mydistro"
export BUILDDIR="${SYSDIR}/build"
export DOWNLOADDIR="${SYSDIR}/sources"
export LC_ALL=POSIX
export CROSS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
export CROSS_TARGET="loongarch64-unknown-linux-gnu"
export MABI="lp64d"
export BUILD_ARCH="-march=loongarch64"
export BUILD_MABI="-mabi=${MABI}"
export BUILD64="-mabi=lp64d"
export LD_LIBRARY_PATH="${SYSDIR}/cross-tools/lib:${SYSDIR}/cross-tools/${CROSS_TARGET}/lib"
export PATH=/cross-tools/bin:/bin:/usr/bin:${PATH}
unset CFLAGS
unset CXXFLAGS
EOF
source ~/.bash_profile
export # 检查用户设置