-
Notifications
You must be signed in to change notification settings - Fork 2
/
install
119 lines (98 loc) · 5 KB
/
install
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
# Это временно. Переменную timezone должна определить ndms (прошивка)
if [ -f "/var/TZ" ]; then
export TZ="$(cat /var/TZ)"
else
export TZ="UTC"
fi
logger -t installer '[1/5] Начало установки системы пакетов "Entware"...'
check_fs_opt="$(mount | grep 'on /opt ' | cut -d' ' -f5)"
case "$check_fs_opt" in
ext*)
logger -t installer 'Info: Раздел пригоден для установки.'
;;
*ntfs*)
logger -t installer 'Info: Раздел NTFS! Атрибуты "owner:group" могут не поддерживаться.'
logger -t installer 'При возникновении проблем, используйте накопитель с файловой системой ext2/ext3/ext4.'
;;
*hfs*)
logger -t installer 'Info: Раздел с HFS! (!не тестировалось!)'
logger -t installer 'При возникновении проблем, используйте накопитель с файловой системой ext2/ext3/ext4.'
;;
ubifs)
logger -t installer 'Info: Раздел с UBIFS! (!не тестировалось!)'
logger -t installer 'При возникновении проблем, используйте внешний накопитель с файловой системой ext2/ext3/ext4.'
;;
*)
logger -t installer 'Critical error: Неизвестный тип ФС. Используйте накопитель с файловой системой ext2/ext3/ext4. Отменяем...'
logger -t installer 'Выход из установки.'
exit 1
;;
esac
# Только для opkg. Остальные каталоги будут созданы пакетом opt-ndmsv2
logger -t installer 'Info: Создание каталогов...'
for folder in lib/opkg tmp var/lock; do
if [ ! -d "/opt/$folder" ]; then
mkdir -p /opt/$folder
fi
done
# opkg update
logger -t installer '[2/5] Загрузка и установка основных пакетов...'
if ! opkg update >/dev/null 2>&1
then
logger -t installer 'Critical error: Во время обновления списка пакетов произошла ошибка.'
logger -t installer 'Выход из установки.'
exit 1
fi
# install basic packages
for ipk in libgcc libc libpthread librt entware-release findutils grep ldconfig locales opkg zoneinfo-asia zoneinfo-europe opt-ndmsv2 dropbear poorbox busybox
do
logger -t installer "Info: Устанавливается пакет \"$ipk\"..."
if ! opkg install $ipk >/dev/null 2>&1
then
logger -t installer "Critical error: Во время установки пакета \"$ipk\" произошла ошибка."
logger -t installer 'Выход из установки.'
exit 1
else
logger -t installer "Info: Пакет \"$ipk\" установлен."
sleep 1
fi
done
logger -t installer 'Info: Установка пакетов прошла успешно!'
ldconfig >/dev/null 2>&1
# Установка прав для многопользовательской среды
chmod 777 /opt/tmp
# keygen
logger -t installer '[3/5] Генерация SSH-ключей...'
for key in rsa ecdsa ed25519; do
rm /opt/etc/dropbear/dropbear_${key}_host_key
logger -t installer "Info: Генерируется ключ \"$key\"..."
if ! dropbearkey -t $key -f /opt/etc/dropbear/dropbear_${key}_host_key >/dev/null 2>&1
then
logger -t installer "Critical error: Во время генерации ключа \"$key\" произошла ошибка."
logger -t installer 'Выход из установки.'
exit 1
else
logger -t installer "Info: Ключ \"$key\" создан."
sleep 1
fi
done
logger -t installer '[4/5] Настройка сценария запуска, установка часового пояса и запуск "dropbear"...'
# TZ
timezone="$(echo $(wget -qO - localhost:79/rci/show/clock/date/tz | grep locality | cut -d':' -f2 | sed 's#\("\|,\)##g'))"
if [ -n "$timezone" ]; then
ln -sf /opt/share/zoneinfo/"$timezone" /opt/etc/localtime
fi
# SSH
if [ -f "/usr/sbin/dropbear" ] || [ -n "$(pidof dropbear)" ]; then
sed -i "s,PORT=22\$,PORT=222," /opt/etc/config/dropbear.conf
fi
/opt/etc/init.d/S51dropbear start
wget -qO - --post-data='[{"opkg":{"initrc":{"path":"/opt/etc/init.d/rc.unslung"}}},{"system":{"configuration":{"save":true}}}]' localhost:79/rci/ >/dev/null 2>&1
if grep -q "222" /opt/etc/config/dropbear.conf; then
logger -t installer 'Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic, порт - 222).'
else
logger -t installer 'Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic).'
fi
logger -t installer '[5/5] Установка системы пакетов "Entware" завершена! Не забудьте сменить пароль и номер порта!'
rm /opt/etc/init.d/doinstall
rm "$0"