eth0s/02-base

177 lines
3.8 KiB
Text
Raw Normal View History

2021-04-18 08:19:42 +08:00
#!/bin/sh
lfs_dirs() {
2021-05-04 08:20:54 +08:00
mkdir -pv $LFS/bin $LFS/usr/lib $LFS/usr/bin $LFS/etc || true
for i in bash cat chmod dd echo ln mkdir pwd rm stty touch; do
ln -svf /tools/bin/$i $LFS/bin
done
for i in env install perl printf; do
ln -svf /tools/bin/$i $LFS/usr/bin
done
ln -svf /tools/lib/libgcc_s.so /tools/lib/libgcc_s.so.1 $LFS/usr/lib
ln -svf /tools/lib/libstdc++.a /tools/lib/libstdc++.so /tools/lib/libstdc++.so.6 $LFS/usr/lib
ln -svf bash $LFS/bin/sh
ln -svf /proc/self/mounts $LFS/etc/mtab
cat > $LFS/etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
wheel:x:97:
nogroup:x:99:
users:x:999:
EOF
# pkgutils
2021-05-04 08:20:54 +08:00
mkdir -p \
$LFS/var/lib/pkg/pkg \
$LFS/var/lib/pkg/src \
$LFS/var/lib/pkg/work
touch $LFS/var/lib/pkg/db
}
mount_pseudo() {
2021-05-04 08:20:54 +08:00
mkdir -p $LFS/dev $LFS/run $LFS/proc $LFS/sys
mount --bind /dev $LFS/dev
mount -t devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -t proc proc $LFS/proc
mount -t sysfs sysfs $LFS/sys
mount -t tmpfs tmpfs $LFS/run
if [ -h $LFS/dev/shm ]; then
mkdir -p $LFS/$(readlink $LFS/dev/shm)
fi
}
umount_pseudo() {
2020-06-12 16:42:33 +08:00
unmount $LFS/dev/pts
unmount $LFS/dev
unmount $LFS/run
unmount $LFS/proc
unmount $LFS/sys
}
2020-11-13 13:58:01 +08:00
mountbind_srcpkg() {
mount --bind $SRCDIR $LFS/var/lib/pkg/src
mount --bind $PKGDIR $LFS/var/lib/pkg/pkg
}
unmountbind_srcpkg() {
unmount $LFS/var/lib/pkg/src
unmount $LFS/var/lib/pkg/pkg
}
2020-06-12 16:42:33 +08:00
unmount() {
while true; do
mountpoint -q $1 || break
umount $1 2>/dev/null
done
2019-10-06 17:55:25 +08:00
}
runinchroot() {
2021-05-04 08:20:54 +08:00
cd $LFS >/dev/null 2>&1
mount_pseudo
2020-11-13 13:58:01 +08:00
mountbind_srcpkg
cp -L /etc/resolv.conf $LFS/etc/
chroot "$LFS" $ENVLFS -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin $@
retval=$?
2020-11-13 13:58:01 +08:00
unmountbind_srcpkg
umount_pseudo
2021-05-04 08:20:54 +08:00
cd - >/dev/null 2>&1
return $retval
}
interrupted() {
die "script $(basename $0) aborted!"
}
die() {
[ "$@" ] && printerror $@
2020-11-13 13:58:01 +08:00
unmountbind_srcpkg
umount_pseudo
exit 1
}
printerror() {
2021-05-04 08:20:54 +08:00
echo "ERROR: $@"
}
2021-05-04 08:20:54 +08:00
trap "interrupted" 1 2 3 15
if [ $(id -u) != 0 ]; then
echo "$0 script need to run as root!"
exit 1
fi
2020-11-13 13:58:01 +08:00
CWD=$PWD
if [ -f $CWD/config ]; then
2021-05-04 08:20:54 +08:00
. $CWD/config
2020-11-13 13:58:01 +08:00
fi
MAKEFLAGS="${MAKEFLAGS:--j$(nproc)}"
2021-04-18 08:19:42 +08:00
LFS="${LFS:-$CWD/lfs-rootfs}"
2020-11-13 13:58:01 +08:00
PKGDIR="${PKGDIR:-$CWD/pkg}"
SRCDIR="${SRCDIR:-$CWD/src}"
2021-04-18 08:19:42 +08:00
WORKDIR="${WORKDIR:-$CWD/work}"
CFLAGS="${CFLAGS:--O2 -march=x86-64 -pipe}"
2020-11-13 13:58:01 +08:00
2021-05-04 08:20:54 +08:00
mkdir -p $PKGDIR $SRCDIR $WORKDIR
if [ -x $LFS/usr/bin/env ]; then
ENVLFS=/usr/bin/env
else
ENVLFS=/tools/bin/env
fi
2020-06-12 16:42:33 +08:00
PKGS="filesystem linux-api-headers man-pages glibc tzdata zlib bzip2 file readline m4 bc binutils gmp mpfr mpc attr acl shadow gcc
2021-05-04 08:20:54 +08:00
pkgconf ncurses libcap sed psmisc iana-etc bison flex grep bash libtool gdbm gperf expat inetutils
perl perl-xml-parser intltool autoconf automake xz kmod gettext elfutils libffi openssl python3 coreutils
diffutils gawk findutils groff fuse2 grub less gzip iproute2 kbd libpipeline make patch man-db tar texinfo vim procps-ng
util-linux e2fsprogs sysklogd sysvinit eudev lfs-bootscripts linux-firmware libarchive mkinitramfs linux libtasn1 p11-kit ca-certificates
2019-11-05 00:27:20 +08:00
wget pkgutils libnl dbus libxml2 dhcpcd wpa_supplicant lzo lz4 squashfs-tools popt efivar pciutils efibootmgr libpng which freetype2 dosfstools grub-efi
2020-07-02 23:33:24 +08:00
curl ports httpup gpm libevent links mtools syslinux"
if [ ! -f $LFS/var/lib/pkg/db ]; then
lfs_dirs
fi
2020-06-28 23:38:04 +08:00
rm -fr $LFS/usr/ports
mkdir -p $LFS/usr/ports/
2020-06-12 16:42:33 +08:00
echo "==> Copying ports"
cp -Ra ports/* $LFS/usr/ports/
for pkg in $PKGS; do
case $pkg in
filesystem|gcc|bash|perl|coreutils) runinchroot pkgin -i -ic $pkg || die;;
*) runinchroot pkgin -i $pkg || die;;
esac
done
exit 0