-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlfs.sh
executable file
·103 lines (83 loc) · 2.48 KB
/
lfs.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/bash
# LFS Version 11.0-systemd
export LFS=/mnt/lfs
export LFS_TGT=x86_64-lfs-linux-gnu
export LFS_DISK=/dev/sda
export SRC_DIR="$LFS/sources/src_dir"
export MAKEFLAGS='-j4'
error() { echo -e "$1" && exit; }
echo -e "Make sure to mount $LFS_DISK before running this script!\n"\
"If this is THE FIRST TIME you run this script, chown $LFS to your user!"
select yn in "Continue" "Exit"; do
case $yn in
Continue )
break ;;
Exit ) error "User exits!" ;;
esac
done
if ! grep -q $LFS /proc/mounts; then
error "Mount $LFS_DISK to $LFS first!!!"
fi
echo "Running..."
sleep 3
mkdir -pv $LFS/{sources,etc,var} $LFS/usr/{bin,lib,sbin}
mkdir -pv $SRC_DIR
if ! grep -q $SRC_DIR /proc/mounts; then
sudo mount -t tmpfs -o size=6G tmpfs $SRC_DIR
fi
[ -f $LFS/cleanedup ] || mkdir -pv $LFS/tools
if ! [ -d $LFS/bin ]; then
for i in bin lib sbin; do
ln -sv usr/$i $LFS/$i
done
fi
case $(uname -m) in
x86_64) mkdir -pv $LFS/lib64 ;;
esac
cp -rf *.csv *.sh *.py chapter* $LFS/sources
cd $LFS/sources
export PATH="$LFS/tools/bin:$PATH"
if [ ! -f packages.csv ] || [ ! -f patches.csv ]; then
if [ ! -d ./venv ]; then
python -m venv venv
fi
source ./venv/bin/activate
pip install -r requirements.txt
python scrape.py
deactivate
fi
python download.py
if [ "$(cat failed_packages.csv | wc -l)" != "0" ] ||
[ "$(cat failed_patches.csv | wc -l)" != "0" ]; then
error "Some packages or patches are failed to download!"
else
rm -f failed_patches.csv failed_packages.csv
fi
# Chapter 5
for package in binutils gcc linux-api-headers glibc libstdc++; do
source install_package.sh 5 "$package"
done
# Chapter 6
for package in m4 ncurses bash coreutils diffutils file findutils \
gawk grep gzip make patch sed tar 'xz utils' binutils gcc; do
source install_package.sh 6 "$package"
done
chmod +x prepare_chroot.sh chroot_lfs.sh chroot_lfs2.sh
sudo ./prepare_chroot.sh "$LFS"
echo "RUNNING IN CHROOT ENVIRONMENT..."
sleep 3
for script in '/sources/chroot_lfs.sh' '/sources/chroot_lfs2.sh'; do
sudo chroot "$LFS" /usr/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH="/usr/bin:/usr/sbin" \
/bin/bash --login +h -c "$script"
done
sudo chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/usr/bin:/usr/sbin \
MAKEFLAGS='-j4' \
/bin/bash --login
exit 0