58 lines
1.8 KiB
Bash
58 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# prepare_and_download.sh
|
|
# 宿主环境准备 + LFS 12.2 源码/补丁下载
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
LFS_WORKDIR="$PWD/lfs_build"
|
|
LFS_VERSION="12.2"
|
|
CPU_CORES="$(nproc)"
|
|
|
|
HOST_PKGS=(build-essential bison flex libssl-dev libncurses-dev \
|
|
xorriso grub-pc-bin grub-efi-amd64-bin mtools dosfstools \
|
|
gcc g++ make wget xz-utils squashfs-tools rsync cpio bc \
|
|
perl git parted util-linux kmod syslinux-utils)
|
|
|
|
info(){ echo -e "\e[34m[INFO]\e[0m $*"; }
|
|
|
|
# 安装宿主依赖
|
|
info "安装宿主依赖..."
|
|
apt-get update -y
|
|
apt-get install -y "${HOST_PKGS[@]}"
|
|
|
|
# 创建工作目录
|
|
info "创建工作目录 $LFS_WORKDIR ..."
|
|
rm -rf "$LFS_WORKDIR"
|
|
mkdir -p "$LFS_WORKDIR"/{sources,build,iso,rootfs,tmp}
|
|
|
|
# 下载 LFS 源码
|
|
cd "$LFS_WORKDIR/sources"
|
|
info "下载 LFS wget-list 和 patch-list ..."
|
|
wget -c "http://www.linuxfromscratch.org/lfs/view/stable/wget-list" -O wget-list
|
|
wget -c "http://www.linuxfromscratch.org/lfs/view/stable/patch-list" -O patch-list
|
|
|
|
info "下载 LFS 源码包..."
|
|
while read -r line; do
|
|
[[ "$line" =~ ^# ]] && continue
|
|
pkg=$(echo "$line"|awk '{print $1}')
|
|
[ -f "$pkg" ] || wget -c "http://www.linuxfromscratch.org/lfs/view/stable/$pkg"
|
|
done < wget-list
|
|
|
|
info "下载补丁..."
|
|
while read -r line; do
|
|
[[ "$line" =~ ^# ]] && continue
|
|
patch=$(echo "$line"|awk '{print $1}')
|
|
[ -f "$patch" ] || wget -c "http://www.linuxfromscratch.org/lfs/view/stable/$patch"
|
|
done < patch-list
|
|
|
|
# 下载内核与 BusyBox
|
|
cd "$LFS_WORKDIR/build"
|
|
KERNEL_VER="6.6.10"
|
|
BUSYBOX_VER="1.36.1"
|
|
info "下载 Linux 内核 $KERNEL_VER 和 BusyBox $BUSYBOX_VER ..."
|
|
wget -c "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-$KERNEL_VER.tar.xz"
|
|
wget -c "https://busybox.net/downloads/busybox-$BUSYBOX_VER.tar.bz2"
|
|
|
|
info "宿主准备 + 下载源码完成"
|
|
|