-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathclfs.sh
More file actions
executable file
·138 lines (110 loc) · 3.49 KB
/
clfs.sh
File metadata and controls
executable file
·138 lines (110 loc) · 3.49 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
#######################################
# LFS
# Version: test
_lfs ()
{
# Устанавливаем точное время.
which ntpdate 2> /dev/null && ntpdate 0.europe.pool.ntp.org
# Определяем основную переменную.
local LFS_PWD=`dirname "${0}"`
[ "${LFS_PWD}" == '.' ] && local LFS_PWD=`pwd`
# Определяем все переменные и функции.
for _function in ${LFS_PWD}/_functions/*.sh
do
source ${_function}
done
# Должен быть хотя бы один аргумент.
if [ "$#" -eq 0 ]; then
cat << EOF
./lfs.sh [ Опции ]
Опции:
-t | --tools Сборка пакетов из раздела "5. Constructing a Temporary System" книги LFS.
-s | --system Сборка пакетов из раздела "6. Installing Basic System Software",
"7. Setting Up System Bootscripts" и
"8. Making the LFS System Bootable" книги LFS.
-b | --blfs Сборка пакетов из книги BLFS.
-u | --update Обновление пакетов.
-m | --mount Смонтировать разделы из файла ./disk для новой системы.
-d | --download Загрузка пакетов.
-c | --chroot По завершению установки войти в систему с chroot.
--clean Очистка логов и результируюших пакетов.
EOF
exit 0
fi
# Проверяем входные аргументы.
for _ARG in $*
do
case "${_ARG}" in
-u | --update)
PACKAGES_PATCHES_LFS_FLAG=1
;;
-m | --mount)
MOUNT_LFS_FLAG=1
;;
-t | --tools)
TOOLS_LFS_FLAG=2
;;
-s | --system)
SYSTEM_LFS_FLAG=3
;;
-b | --blfs)
BLFS_FLAG=1
;;
-c | --chroot)
CHROOT_FLAG=1
;;
-d | --download)
PACKAGES_LFS_FLAG=1
;;
--clean)
if [ -z "$(fgrep "${LFS}" /proc/mounts)" ]; then
rm -Rfv ${BUILD_DIR} /tools ${LFS} ${LFS_OUT}
else
color-echo 'Остались смонтироваными ФС!' ${RED}
exit 1
fi
exit
;;
esac
done
# Сменяем права доступа на скрипты если имеется пользователь i.
[ -n "$(grep ^i: /etc/passwd 2> /dev/null)" ] && chown i:i -R ${LFS_PWD}
# Размонтирование разделов.
umount_lfs || exit ${?}
# Перехватываем ошибки.
local restoretrap
set -eE
restoretrap=`trap -p ERR`
trap '_ERROR' ERR
eval $restoretrap
# Подготовка и монтирование разделов.
mount_lfs
# Обновление пакетов
f_packages_patches
# Назначение переменных (массивов) хроняших информацию о пакетах.
array_packages
# Скачиваем пакеты.
packages_lfs
# Создание необходимых каталогов и сборка временной системы.
tools_lfs
# Сборка основной системы.
f_system
# Сборка BLFS.
f_beyond
# system configure
if [ "${SYSTEM_LFS_FLAG}" -ne 0 ] || [ "${BLFS_FLAG}" -ne 0 ]; then
f_chroot "${LFS_PWD}/_chroot/f_system_configure.sh"
fi
# Входим в chroot
f_chroot
# Размонтирование разделов и очистка системы.
umount_lfs
# Сменяем права доступа на скрипты если имеется пользователь i.
[ -n "$(grep ^i: /etc/passwd 2> /dev/null)" ] && chown i:i -R ${LFS_PWD}
# Прекрашяем перехватывать ошибки.
set +Ee
}
setterm -blank 0
_lfs $*
#######################################