-
Notifications
You must be signed in to change notification settings - Fork 0
/
archmy2l.sh
4028 lines (3904 loc) · 333 KB
/
archmy2l.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
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#!/bin/bash
apptitle="Arch Linux Fast Install v2.4 LegasyBIOS - Version: 2024.07.31.00.40.38 (GPLv3)"
baseurl=https://raw.githubusercontent.com/MarcMilany/archmy_2020/master/url%20links%20abbreviated/git%20url
cpl=0
skipfont="0"
fspkgs=""
iso_label="ARCH_$(date +%Y%m)"
iso_version=$(date +%Y.%m.%d)
gpg_key=
verbose=""
EDITOR=nano
###
ARCHMY2L="russian" # Installer default language (Язык установки по умолчанию)
script_path=$(readlink -f ${0%/*}) # эта опция канонизируется путем рекурсивного следования каждой символической ссылке в каждом компоненте данного имени; все, кроме последнего компонента должны существовать
###
umask 0022 # Определение окончательных прав доступа - Для суперпользователя (root) umask по умолчанию равна 0022
set -e # Эта команда остановит выполнение сценария после сбоя команды и будет отправлен код ошибки
# set -euxo pipefail # прекращает выполнение скрипта, даже если одна из частей пайпа завершилась ошибкой
#####################
### Help and usage (--help or -h) (Справка)
_help() {
echo -e "${BLUE}
Installation guide - Arch Wiki
${BOLD}For more information, see the wiki: \
${GREY}<https://wiki.archlinux.org/index.php/Installation_guide>${NC}"
}
###
### SHARED VARIABLES AND FUNCTIONS (ОБЩИЕ ПЕРЕМЕННЫЕ И ФУНКЦИИ)
### Shell color codes (Цветовые коды оболочки)
RED="\e[1;31m"; GREEN="\e[1;32m"; YELLOW="\e[1;33m"; GREY="\e[3;93m"
BLUE="\e[1;34m"; CYAN="\e[1;36m"; BOLD="\e[1;37m"; MAGENTA="\e[1;35m"; NC="\e[0m"
###
### Automatic error detection (Автоматическое обнаружение ошибок)
_set() {
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
}
###
_set() {
set -e "\n${RED}Error: ${YELLOW}${*}${NC}"
_note "${MSG_ERROR}"
sleep 1; $$
}
###
###############################
# Information (Информация)
_arch_fast_install_banner_2() {
echo -e "${YELLOW}
***************************** ИНФОРМАЦИЯ! *****************************
${NC}
Продолжается работа скрипта: - будет проходить установка первоначально необходимого софта (пакетов), запуск необходимых служб, запись данных в конфиги (hhh.conf) по настройке системы.
В процессе работы сценария (скрипта) Вам будет предложено выполнить следующие действия:
Ввести имя пользователя (username), ввести имя компьютера (hostname), а также установить пароль для пользователя (username) и администратора (root).
Настроить состояние аппаратных часов 'UTC или Localtime', но Вы можете отказаться и настроить их уже из системы Arch'a.
Будут заданы вопросы: на установку той, или иной утилиты (пакета), и на какой аппаратной базе будет установлена система (для установки Xorg 'обычно называемый просто X' и драйверов) - Будьте Внимательными!
Смысл в том, что все изменения Вы делаете предварительно в самом скрипте и получаете возможность быстрой установки утилит (пакетов), которые Вы решили установить (при условии, что Вы его изменили под себя, в противном случае скрипт установит софт (пакеты) прописанный изначально.
Не переживайте софт (пакеты) скачивается и устанавливается из 'Официальных репозиториев Arch Linux'. В любой ситуации выбор всегда за вами.
${BLUE}
*********************************************************************** ${NC}"
}
###
echo ""
echo " Второй этап установки Arch'a "
### Display banner (Дисплей баннер)
#echo ""
_arch_fast_install_banner_2
###
sleep 05
echo ""
echo -e "${GREEN}=> ${NC}Для проверки интернета можно пропинговать какой-либо сервис"
ping google.com -W 2 -c 1 # Отправить эхо-запрос по протоколу ICMP на имя или IP-адрес целевого узла
#ping -c 2 archlinux.org # Утилита ping - это очень простой инструмент для диагностики сети
# ping -6 ya.ru # пинг узла ya.ru с использованием протокола Ipv6
### Формат командной строки: ping [-t] [-a] [-n число] [-l размер] [-f] [-i TTL] [-v TOS] [-r число] [-s число] [[-j списокУзлов] | [-k списокУзлов]] [-w таймаут] конечноеИмя ; https://ab57.ru/cmdlist/ping.html
echo -e "${CYAN}==> ${NC}Если пинг идёт едем дальше ... :)"
###
echo ""
#echo -e "${BLUE}:: ${NC}Синхронизация системных часов"
#timedatectl set-ntp true
#echo -e "${BLUE}:: ${NC}Посмотрим статус службы NTP (NTP service)"
#timedatectl status
#echo -e "${BLUE}:: ${NC}Посмотрим текущее состояние аппаратных и программных часов"
#timedatectl
###
echo ""
echo -e "${BLUE}:: ${NC}Обновим вашу систему (базу данных пакетов)"
echo -e "${YELLOW}:: ${NC}Загружаем базу данных пакетов независимо от того, есть ли какие-либо изменения в версиях или нет."
echo ""
echo " Брелок для ключей Arch Linux PGP (Репозиторий для пакета связки ключей Arch Linux) "
pacman -Sy --noconfirm --needed --noprogressbar --quiet archlinux-keyring # Брелок для ключей Arch Linux PGP ; https://git.archlinux.org/archlinux-keyring.git/ (для hkps://hkps.pool.sks-keyservers.net)
pacman -Syyu --noconfirm # Обновим вашу систему (базу данных пакетов)
sleep 1
#################
clear
echo ""
echo -e "${GREEN}==> ${NC}Вводим название компьютера (host name), и имя пользователя (user name)"
echo -e "${MAGENTA}=> ${BOLD}Используйте в названии (host name) только буквы латинского алфавита (a-zA-Z0-9) (можно с заглавной буквы). Латиница - это английские буквы. Кириллица - русские. ${NC}"
echo ""
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
read -p " => Введите имя компьютера: " hostname
# echo -e "${Yellow}Как бы вы хотели назвать этот компьютер?${NoColor}"
# read hostname; clear #
echo ""
echo -e "${MAGENTA}=> ${BOLD}Используйте в имени (user name) только буквы латинского алфавита (в нижнем (маленькие) регистре (a-z)(a-z0-9_-)), и цифры ${NC}"
echo ""
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
read -p " => Введите имя пользователя: " username
# echo -e "Какое имя пользователя вам нужно?"
# read username; clear
###
echo -e "${BLUE}:: ${NC}Прописываем имя компьютера"
echo $hostname > /etc/hostname
###
echo ""
echo -e "${RED}==> ${NC}Очистить папку конфигурации (настроек), кеш, и скрытые каталоги в /home/$username от старой установленной системы? "
echo -e "${CYAN}:: ${BOLD}Если таковая присутствует, и не была удалена при создании новой разметки диска. ${NC}"
echo -e "${YELLOW}==> ${NC}Будьте осторожны! Если Вы сомневаетесь в своих действиях, просто пропустите этот пункт."
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да очистить папки конфигов, 0 - Нет пропустить очистку: " i_rm # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_rm" =~ [^10] ]]
do
:
done
if [[ $i_rm == 0 ]]; then
clear
echo ""
echo " Очистка пропущена "
elif [[ $i_rm == 1 ]]; then
clear
rm -rf /home/$username/.*
echo ""
echo " Очистка завершена "
fi
####################
echo ""
echo -e "${GREEN}==> ${NC}Устанавливаем ваш часовой пояс (localtime)."
echo " Всё завязано на времени, поэтому очень важно, чтобы часы шли правильно... :) "
echo -e "${BLUE}:: ${BOLD}Для начала вот ваши данные по дате, времени и часовому поясу: ${NC}"
date +'%d/%m/%Y %H:%M:%S [%:z %Z]' # одновременно отображает дату и часовой пояс
echo -e "${MAGENTA}:: ${BOLD}Мир состоит из шести частей света: Азия, Африка, Америка, Европа, Австралия и Океания, Антарктика (Антарктида с прибрежными морями и островами). Иногда Океанию и Арктику выделяют в отдельные части света. ${NC}"
echo -e "${CYAN}:: ${NC}Наиболее популярный и поддерживаемый в большинстве дистрибутивов способ установки часового пояса для всех пользователей с помощью символической ссылки (symbolic link) "/etc/localtime" на файл нужного часового пояса."
echo -e "${CYAN}:: ${NC}Для создания символической ссылки используется команда "ln -sf" или "ln -svf"."
echo " ln -sf /usr/share/zoneinfo/Частъ Света/Город /etc/localtime " # (где Region - ваш регион, City - ваш город)
echo " ln -sf /usr/share/zoneinfo/Зона/Субзона /etc/localtime "
echo " ln -sf /usr/share/zoneinfo/Регион/Город /etc/localtime "
echo " ln -svf /usr/share/zoneinfo/Europe/Moscow /etc/localtime - это полный вид команды "
echo -e "${CYAN}:: ${NC}Для нас сейчас нужна малая толика от всей команды это - (Частъ Света/Город)."
echo -e "${CYAN} Пример (timezone): ${NC}Europe/Moscow, Europe/Minsk, Europe/Kiev, Europe/Berlin, Europe/Paris, Asia/Yekaterinburg, Asia/Almaty, Africa/Nairobi, America/Chicago, America/New_York, America/Indiana/Indianapolis, Australia/Sydney, Antarctica/Vostok, Arctic/Longyearbyen, Atlantic/Azores, Indian/Maldives, и так далее..."
#echo -e "${BLUE}:: ${NC}Выведем список временных зон только для Европы:"
#timedatectl list-timezones | grep Europe | less # воспользуемся grep и ограничим область поиска
echo -e "${MAGENTA}=> ${BOLD}Используйте только буквы латинского алфавита (a-zA-Z) (начиная название с заглавной буквы). ${NC}"
echo " (Example) - в переводе это Пример, Наглядный, типичный образец,... "
# Итак создадим ссылку на нужный файл временной зоны:
echo " Укажите вашу (timezone), как это показано выше в примере. "
echo ""
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
read -p " => Введите свою таймзону в формате Example/Example: " timezone
# Создадим ссылку на нужный файл временной зоны:
#ln -sv /usr/share/zoneinfo/UTC /etc/localtime # UTC - часы дают универсальное время на нулевом часовом поясе
ln -svf /usr/share/zoneinfo/$timezone /etc/localtime
#ln -sf /usr/share/zoneinfo/$timezone /etc/localtime
# Создадим резервную копию текущего часового пояса:
#cp /etc/localtime /etc/localtime.bak
cp /etc/localtime /etc/localtime.backup
# Запишем название часового пояса в /etc/timezone:
echo $timezone > /etc/timezone
# timedatectl set-timezone Europe/Moscow # установка часового пояса
#timedatectl set-timezone $timezone # установка часового пояса
ls -lh /etc/localtime # для просмотра символической ссылки, которая указывает на текущий часовой пояс, используемый в системе
###
echo ""
echo -e "${GREEN}=> ${BOLD}Это ваш часовой пояс (timezone) - '$timezone' ${NC}"
echo -e "${BLUE}:: ${BOLD}Ваши данные по дате, времени и часовому поясу: ${NC}"
date +'%d/%m/%Y %H:%M:%S [%:z %Z]' # одновременно отображает дату и часовой пояс
###
echo -e "${BLUE}:: ${NC}Синхронизируем аппаратное время с системным"
echo " Устанавливаются аппаратные часы из системных часов. "
hwclock --systohc # Эта команда предполагает, что аппаратные часы настроены в формате UTC.
# hwclock --adjust # Порой значение аппаратного времени может сбиваться - выровняем!
# hwclock -w # переведёт аппаратные часы
sleep 01
###
echo ""
echo -e "${GREEN}==> ${NC}Настроим состояние аппаратных и программных часов."
echo -e "${YELLOW}==> ${NC}Вы можете пропустить этот шаг, если сейчас ваш часовой пояс настроен правильно, или Вы не уверены в правильности выбора! "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - UTC, 2 - Localtime,
0 - Пропустить настройку: " hw_clock # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$hw_clock" =~ [^120] ]]
do
:
done
if [[ $hw_clock == 0 ]]; then
echo ""
echo " Настройка часов (времени) пропущена "
elif [[ $hw_clock == 1 ]]; then
hwclock --systohc --utc
echo ""
echo " Вы выбрали hwclock --systohc --utc "
echo " UTC - часы дают универсальное время на нулевом часовом поясе "
elif [[ $hw_clock == 2 ]]; then
hwclock --systohc --local
echo ""
echo " Вы выбрали hwclock --systohc --localtime "
echo " Localtime - часы идут по времени локального часового пояса "
fi
###
echo ""
echo -e "${BLUE}:: ${NC}Посмотрим обновление времени (если настройка не была пропущена)"
#timedatectl show
date +'%d/%m/%Y %H:%M:%S [%:z %Z]' # одновременно отображает дату и часовой пояс
#echo "$(date -u "+%F %H:%M")" # Текущая полная дата
## %F - полная дата, то же что и %Y-%m-%d; %H - hour (00..23); %M - minute (00..59)
######################
sleep 01
echo ""
echo -e "${BLUE}:: ${NC}Файл hosts — это текстовый документ, который содержит в себе информацию о домене и IP-адресе, который ему соответствует. Располагается hosts на локальных машинах."
echo " С помощью этого файла вы можете управлять маршрутизацией трафика и разрешением IP-адресов в имена DNS. Приоритет данного файла позволяет обрабатывать сетевые запросы до их передачи публичным или частным DNS-серверам. "
echo ""
echo -e "${BLUE}:: ${NC}Изменяем имя хоста"
echo "127.0.0.1 localhost" > /etc/hosts
echo "# 127.0.0.1 localhost.(none)" >> /etc/hosts
echo "127.0.1.1 $hostname" >> /etc/hosts
echo "127.0.1.1 $hostname.localdomain $hostname" >> /etc/hosts
echo "127.0.0.1 localhost.localdomain" >> /etc/hosts
echo "127.0.0.1 local" >> /etc/hosts
echo "255.255.255.255 broadcasthost" >> /etc/hosts
echo "::1 localhost ip6-localhost ip6-loopback" >> /etc/hosts
echo "fe80::1%lo0 localhost" >> /etc/hosts
echo "ff00::0 ip6-localnet" >> /etc/hosts
echo "ff00::0 ip6-mcastprefix" >> /etc/hosts
echo "ff02::1 ip6-allnodes" >> /etc/hosts
echo "ff02::2 ip6-allrouters" >> /etc/hosts
echo "ff02::3 ip6-allhosts" >> /etc/hosts
echo "0.0.0.0 0.0.0.0" >> /etc/hosts
#######################
echo " Для начала сделаем его бэкап /etc/hosts "
echo " hosts — это текстовый документ, который содержит в себе информацию о домене и IP-адресе "
#cp /etc/hosts /etc/hosts.back
cp -v /etc/hosts /etc/hosts.back # Для начала сделаем его бэкап
# cp -v /etc/hosts /etc/hosts.original # -v или --verbose -Выводить информацию о каждом файле, который обрабатывает команда cp.
###
echo -e "${BLUE}:: ${NC}Добавляем русскую локаль системы"
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen
###
echo -e "${BLUE}:: ${NC}Обновим текущую локаль системы"
locale-gen # Мы ввели locale-gen для генерации тех самых локалей
###
sleep 02
echo -e "${BLUE}:: ${NC}Указываем язык системы"
echo 'LANG="ru_RU.UTF-8"' > /etc/locale.conf
#echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
echo "LC_COLLATE=C" >> /etc/locale.conf
echo 'LC_ADDRESS="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_IDENTIFICATION="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_MEASUREMENT="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_MONETARY="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_MESSAGES="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_NAME="ru_RU.UTF-8"' >> /etc/locale.conf
echo '#LC_CTYPE="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_NUMERIC="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_PAPER="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_TELEPHONE="ru_RU.UTF-8"' >> /etc/locale.conf
echo 'LC_TIME="ru_RU.UTF-8"' >> /etc/locale.conf
###
echo -e "${BLUE}:: ${NC}Вписываем KEYMAP=ru FONT=cyr-sun16 FONT=ter-v16n FONT=ter-v16b"
echo 'KEYMAP=ru' >> /etc/vconsole.conf
echo '#LOCALE=ru_RU.UTF-8' >> /etc/vconsole.conf
## Шрифт с поддержкой кирилицы
echo 'FONT=cyr-sun16' >> /etc/vconsole.conf
echo '#FONT=ter-v16n' >> /etc/vconsole.conf
echo '#FONT=ter-v16b' >> /etc/vconsole.conf
echo '#FONT=ter-u16b' >> /etc/vconsole.conf
echo 'FONT_MAP=' >> /etc/vconsole.conf
echo '#CONSOLEFONT="cyr-sun16' >> /etc/vconsole.conf
echo 'CONSOLEMAP=' >> /etc/vconsole.conf
echo '#TIMEZONE=Europe/Moscow' >> /etc/vconsole.conf
echo '#HARDWARECLOCK=UTC' >> /etc/vconsole.conf
echo '#HARDWARECLOCK=localtime' >> /etc/vconsole.conf
echo '#USECOLOR=yes' >> /etc/vconsole.conf
echo 'COMPRESSION="lz4"' >> /etc/mkinitcpio.conf
#echo 'COMPRESSION="xz"' >> /etc/mkinitcpio.conf
echo "vboxdrv" > /etc/modules-load.d/virtualbox.conf
###
## Список всех доступных русских раскладок клавиатуры
# ls /usr/share/kbd/keymaps/i386/qwerty/ru*
## Русская раскладка с переключением по Alt+Shift
#echo 'KEYMAP="ruwin_alt_sh-UTF-8"' > /etc/vconsole.conf
## аналогично вызову
# localectl set-keymap ruwin_alt_sh-UTF-8
#######################
clear
echo ""
echo -e "${BLUE}:: ${NC}Проверим корректность загрузки установленных микрокодов "
echo -e "${MAGENTA}=> ${NC}Если таковые (микрокод-ы: amd-ucode; intel-ucode) были установлены! "
echo " Если микрокод был успешно загружен, Вы увидите несколько сообщений об этом "
echo " Будьте внимательны! Вы можете пропустить это действие. "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да проверим корректность загрузки, 0 - Нет пропустить: " x_ucode # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$x_ucode" =~ [^10] ]]
do
:
done
if [[ $x_ucode == 0 ]]; then
echo ""
echo " Проверка пропущена "
elif [[ $x_ucode == 1 ]]; then
echo ""
echo " Выполним проверку корректности загрузки установленных микрокодов "
dmesg | grep microcode
fi
sleep 04
###
echo ""
echo -e "${GREEN}==> ${NC}Установить Микрокод для процессора INTEL_CPU, AMD_CPU?"
echo -e "${BLUE}:: ${BOLD}Обновление Microcode (matching CPU) ${NC}"
echo -e "${BLUE}:: ${BOLD}Процессор — уникальный идентификационный номер каждого процессора, начиная с 0.
название модели — полное название процессора, включая марку процессора. После того, как вы точно узнаете, какой у вас тип ЦП, вы можете проверить в документации по продукту технические характеристики вашего процессора. ${NC}"
echo " Производители процессоров выпускают обновления стабильности и безопасности
для микрокода процессора "
echo " Огласите весь список, пожалуйста! :) "
echo " 1 - Для процессоров AMD установите пакет amd-ucode . "
echo " 2 - Для процессоров Intel установите пакет intel-ucode . "
echo " 3 - Если Arch находится на съемном носителе, Вы должны установить микрокод для обоих производителей процессоров!!! "
echo -e "${GREEN}==> ${BOLD}Вот ВАШ процессор (название модели — полное название процессора),включая количество процессоров:${NC}"
grep -m 1 'model name' /proc/cpuinfo # model name
# lscpu | grep -i 'Model name' # BIOS Model name
# lscpu | grep -i "Model name:" | cut -d':' -f2- - # model name
grep -c 'model name' /proc/cpuinfo # распечатать количество процессоров
# lscpu | grep -i "CPU(s)" # сведения о ЦП, например количество ядер ЦП
echo -e "${BLUE}:: ${BOLD} Для Arch Linux на съемном носителе добавьте оба файла initrd в настройки загрузчика!${NC}"
echo " Их порядок не имеет значения, если они оба указаны до реального образа initramfs. "
echo -e "${MAGENTA}=> ${NC}Вы можете пропустить этот шаг, если не уверены в правильности выбора"
echo " Будьте внимательны! Без этих обновлений Вы можете наблюдать ложные падения или неожиданные зависания системы, которые может быть сложно отследить. "
echo -e "${YELLOW}==> ${NC}Установка производится в порядке перечисления"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Для процессоров AMD, 2 - Для процессоров INTEL,
3 - Для процессоров AMD и INTEL, 0 - Нет Пропустить этот шаг: " prog_cpu # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$prog_cpu" =~ [^1230] ]]
do
:
done
if [[ $prog_cpu == 0 ]]; then
echo ""
echo " Установка микрокода процессоров пропущена "
elif [[ $prog_cpu == 1 ]]; then
echo ""
echo " Устанавливаем uCode для процессоров - AMD "
pacman -S amd-ucode --noconfirm # Образ обновления микрокода для процессоров AMD
echo " Установлены обновления стабильности и безопасности для микрокода процессора - AMD "
echo " После завершения установки пакета программного обеспечения нужно перезагрузить компьютер "
elif [[ $prog_cpu == 2 ]]; then
echo ""
echo " Устанавливаем uCode для процессоров - INTEL "
pacman -S intel-ucode --noconfirm # Образ обновления микрокода для процессоров INTEL
pacman -S iucode-tool --noconfirm # Инструмент для управления пакетами микрокода Intel® IA-32 / X86-64
echo " Установлены обновления стабильности и безопасности для микрокода процессора - INTEL "
echo " После завершения установки пакета программного обеспечения нужно перезагрузить компьютер "
elif [[ $prog_cpu == 3 ]]; then
echo ""
echo " Устанавливаем uCode для процессоров - AMD и INTEL "
pacman -S amd-ucode intel-ucode --noconfirm # Образ обновления микрокода для процессоров AMD и INTEL
pacman -S iucode-tool --noconfirm # Инструмент для управления пакетами микрокода Intel® IA-32 / X86-64
echo " Установлены обновления стабильности и безопасности для микрокода процессоров - AMD и INTEL "
echo " После завершения установки пакета программного обеспечения нужно перезагрузить компьютер "
fi
sleep 1
#####################
clear
echo ""
echo -e "${GREEN}==> ${NC}Создадим загрузочный RAM диск (начальный RAM-диск)"
echo -e "${MAGENTA}:: ${BOLD}Arch Linux имеет mkinitcpio - это Bash скрипт используемый для создания начального загрузочного диска системы. ${NC}"
echo -e "${CYAN}:: ${NC}mkinitcpio является модульным инструментом для построения initramfs CPIO образа, предлагая много преимуществ по сравнению с альтернативными методами. Предоставляет много возможностей для настройки из командной строки ядра без необходимости пересборки образа."
echo -e "${YELLOW}:: ${NC}Чтобы избежать ошибки при создании RAM (mkinitcpio -p), вспомните какое именно ядро Вы выбрали ранее. И загрузочный RAM диск (начальный RAM-диск) будет создан именно с таким же ядром, иначе 'ВАЙ ВАЙ'!"
echo " Будьте внимательными! Здесь представлены варианты создания RAM-диска, с конкретными ядрами. "
echo -e "${YELLOW}==> ${NC}Установка производится в порядке перечисления"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - для ядра LINUX, 2 - для ядра LINUX_HARDENED,
3 - для ядра LINUX_LTS, 4 - для ядра LINUX_ZEN,
0 - Пропустить создание загрузочного RAM диска: " x_ram # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$x_ram" =~ [^12340] ]]
do
:
done
if [[ $x_ram == 1 ]]; then
clear
echo ""
echo " Создадим загрузочный RAM диск - для ядра (linux) "
mkinitcpio -p linux # mkinitcpio -P linux - при ошибке!
elif [[ $x_ram == 2 ]]; then
clear
echo ""
echo " Создадим загрузочный RAM диск - для ядра (linux-hardened) "
mkinitcpio -p linux-hardened
elif [[ $x_ram == 3 ]]; then
clear
echo ""
echo " Создадим загрузочный RAM диск - для ядра (linux-lts) "
mkinitcpio -p linux-lts
elif [[ $x_ram == 4 ]]; then
clear
echo ""
echo " Создадим загрузочный RAM диск - для ядра (linux-zen) "
mkinitcpio -p linux-zen
elif [[ $x_ram == 0 ]]; then
echo " Создание загрузочного RAM диска пропущено "
fi
sleep 1
####################
clear
echo ""
echo -e "${GREEN}==> ${NC}Создаём root пароль (Root Password)"
echo " Пароль должен содержать от 6 до 15 символов, включающих цифры (1-0) и знаки (!'':[@]),
и латинские буквы разного регистра! "
echo -e "${MAGENTA}=> ${BOLD}По умолчанию, на большинстве систем Linux в консоле не показывается введенный пароль.
Это сделано из соображений безопасности, чтобы никто не мог увидеть длину вашего пароля.${NC}"
echo " => Введите Root Password (Пароль суперпользователя), вводим пароль 2 раза "
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
passwd
# echo -e "${Yellow}Какой пароль должен быть у учетной записи root (администратора)?${NoColor}"
# read rootpassword; clear
###
clear
echo ""
echo -e "${GREEN}==> ${NC}Установить (bootloader) загрузчик GRUB(legacy)?"
echo -e "${BLUE}:: ${NC}Установка GRUB2 в процессе установки Arch Linux"
echo " 1 - Установка полноценной BIOS-версии загрузчика GRUB(legacy), тогда укажите "1" "
echo " Файлы загрузчика будут установлены в каталог /boot. Код GRUB (boot.img) будет встроен в начальный сектор, а загрузочный образ core.img в просвет перед первым разделом MBR, или BIOS boot partition для GPT. "
echo " 2 - Если нужно установить BIOS-версию загрузчика из-под системы, загруженной в режиме UEFI, тогда укажите "2" "
echo " В этом варианте требуется принудительно задать программе установки нужную сборку GRUB - "
echo -e "${CYAN} Пример: ${NC}grub-install --target=i386-pc /dev/sdX (sda; sdb; sdc; sdd)"
echo -e "${YELLOW}:: ${BOLD}В этих вариантах большого отличия нет, кроме команд выполнения.
Не зависимо от вашего выбора нужно ввести маркер sdX-диска куда будет установлен GRUB.${NC}"
echo -e "${YELLOW}==> ${NC}Вы можете пропустить этот шаг, если у вас уже имеется BOOT раздел от другой (предыдущей) системы gnu-linux, с установленным на нём GRUB."
echo " Будьте внимательны! В этом действии выбор остаётся за вами. "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Установить GRUB(legacy), 2 - GRUB --target=i386-pc,
0 - Нет пропустить: " i_grub # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_grub" =~ [^120] ]]
do
:
done
if [[ $i_grub == 1 ]]; then
echo ""
pacman -Syy # обновление баз пакмэна (pacman)
pacman -S grub --noconfirm # Файлы и утилиты для установки GRUB2 содержатся в пакете grub
# pacman -S --noconfirm --needed grub # GNU GR и унифицированный загрузчик (2)
pacman -S libisoburn --noconfirm # Интерфейс для библиотек libburn и libisofs; https://dev.lovelyhq.com/libburnia
pacman -S dosfstools --noconfirm # Утилиты файловой системы DOS; Для поддержки grub-mkrescue FAT FS и EFI; https://github.com/dosfstools/dosfstools
uname -rm # для определения архитектуры процессора, имени хоста системы и версии ядра, работающего в системе
lsblk -f # Команда lsblk выводит список всех блочных устройств
echo ""
echo -e "${YELLOW}=> Примечание: ${BOLD}/dev/sdX - диск (не раздел), на котором должен быть установлен GRUB. ${NC}"
echo ""
# Если вы используете LVM для вашего /boot, вы можете установить GRUB на нескольких физических дисках.
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
read -p " => Укажите диск куда установить GRUB (sda/sdb например sda или sdb) : " x_cfd # To confirm the input actions, click 'Enter' ; # Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter")
grub-install /dev/$x_cfd # Записываем загрузчик в MBR (Master Boot Record) нашего внутреннего накопителя (sda; sdb; sdc; sdd)
# grub-install --recheck /dev/$x_cfd # Если Вы получили сообщение об ошибке (--recheck - удалить существующую карту устройств)
# grub-install --boot-directory=/mnt/boot /dev/$x_cfd # установить файлы загрузчика в другой каталог
# echo 'GRUB_DISABLE_OS_PROBER=false' >> /etc/default/grub
sed -i 's/#GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/' /etc/default/grub
echo " Загрузчик GRUB установлен на выбранный вами диск (раздел). "
elif [[ $i_grub == 2 ]]; then
echo ""
pacman -Syy # обновление баз пакмэна (pacman)
pacman -S grub --noconfirm # Файлы и утилиты для установки GRUB2 содержатся в пакете grub
uname -rm # для определения архитектуры процессора, имени хоста системы и версии ядра, работающего в системе
lsblk -f # Команда lsblk выводит список всех блочных устройств
echo ""
echo -e "${YELLOW}=> Примечание: ${BOLD}/dev/sdX - диск (а не раздел ), на котором должен быть установлен GRUB. ${NC}"
echo ""
# Если вы используете LVM для вашего /boot, вы можете установить GRUB на нескольких физических дисках.
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
read -p " => Укажите диск куда установить GRUB (sda/sdb например sda или sdb) : " x_cfd # To confirm the input actions, click 'Enter' ; # Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter")
# Если нужно установить BIOS-версию загрузчика из-под системы, загруженной в режиме UEFI
grub-install --target=i386-pc /dev/$x_cfd # Записываем загрузчик в MBR (Master Boot Record) нашего внутреннего накопителя (sda; sdb; sdc; sdd)
# grub-install --target=i386-pc --recheck /dev/$x_cfd # Если Вы получили сообщение об ошибке
# grub-install --target=i386-pc --force --recheck /dev/$x_cfd
#echo 'GRUB_DISABLE_OS_PROBER=false' >> /etc/default/grub
# sed -i 's/# GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/' /etc/sudoers
sed -i 's/#GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/g' /etc/default/grub # # добавить в загрузчик grub другие os или раскомментить строку GRUB_DISABLE_OS_PROBER в /etc/default/grub
# sed -i 's/#GRUB_DISABLE_OS_PROBER=false\n/g' /etc/pacman.conf
echo " Загрузчик GRUB установлен на выбранный вами диск (раздел) "
elif [[ $i_grub == 0 ]]; then
echo ""
echo " Операция установки загрузчик GRUB пропущена "
fi
sleep 2
###
clear
echo ""
echo -e "${GREEN}==> ${NC}Если на компьютере будут несколько ОС (dual_boot), то это также ставим."
echo -e "${CYAN}:: ${NC}Это утилиты для обнаружения других ОС на наборе дисков, для доступа к дискам MS-DOS, а также библиотека, позволяющая реализовать файловую систему в программе пользовательского пространства."
echo -e "${YELLOW}=> ${NC}Для двойной загрузки Arch Linux с другой системой Linux, Windows, установить другой Linux без загрузчика, вам необходимо установить утилиту os-prober, необходимую для обнаружения других операционных систем."
echo " И обновить загрузчик Arch Linux, чтобы иметь возможность загружать новую ОС."
echo " Будьте внимательны! Если Вы сомневаетесь в своих действиях, ещё раз обдумайте... "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да установить, 0 - Нет пропустить: " dual_boot # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$dual_boot" =~ [^10] ]]
do
:
done
if [[ $dual_boot == 1 ]]; then
echo ""
echo " Устанавливаем программы (пакеты) для определения другой-(их) OS "
pacman -S os-prober mtools fuse --noconfirm #grub-customizer # Утилита для обнаружения других ОС на наборе дисков; Сборник утилит для доступа к дискам MS-DOS;
echo " Программы (пакеты) установлены "
elif [[ $dual_boot == 0 ]]; then
echo ""
echo " Установка программ (пакетов) пропущена. "
fi
sleep 1
###
echo ""
echo -e "${BLUE}:: ${NC}Обновляем grub.cfg (Сгенерируем grub.cfg)"
grub-mkconfig -o /boot/grub/grub.cfg # создаём конфигурационный файл
sleep 1
###
clear
echo ""
echo -e "${GREEN}==> ${NC}Установить программы (пакеты) для Wi-fi?"
echo -e "${CYAN}:: ${NC}Если у Вас есть Wi-fi модуль и Вы сейчас его не используете, но будете использовать в будущем."
echo " Или Вы подключены через Wi-fi, то эти (пакеты) обязательно установите. "
echo " Будьте внимательны! Если Вы сомневаетесь в своих действиях, ещё раз обдумайте... "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да установить, 0 - Нет пропустить: " i_wifi # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_wifi" =~ [^10] ]]
do
:
done
if [[ $i_wifi == 1 ]]; then
echo ""
echo " Устанавливаем программы (пакеты) для Wi-fi "
pacman -S dialog wpa_supplicant iw wireless_tools net-tools --noconfirm # Инструмент для отображения диалоговых окон из сценариев оболочки; Утилита, обеспечивающая согласование ключей для беспроводных сетей WPA; Утилита настройки интерфейса командной строки на основе nl80211 для беспроводных устройств; Инструменты, позволяющие управлять беспроводными расширениями; Инструменты настройки для сети Linux.
echo " Программы (пакеты) для Wi-fi установлены "
elif [[ $i_wifi == 0 ]]; then
echo ""
echo " Установка программ (пакетов) пропущена. "
fi
sleep 1
###
clear
echo ""
echo -e "${GREEN}==> ${NC}Добавляем пользователя и прописываем права, (присвоение) групп. "
echo -e "${MAGENTA}=> ${BOLD}В сценарии (скрипта) прописано несколько вариантов! ${NC}"
echo -e "${CYAN}:: ${BOLD}Для создания нового пользователя воспользуемся командой useradd:
# useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash newuser ${NC}"
echo " Расшифровка команды: "
echo " # useradd -m -g [основная группа] -G [список дополнительных групп] -s [командный интерпретатор] [имя пользователя] "
echo " -m — создаёт домашний каталог, вида /home/[имя пользователя]. "
echo " -g — имя или номер основной группы пользователя. "
echo " -G — список дополнительных групп, в которые входит пользователь. "
echo " -s — определяет командную оболочку пользователя /bin/bash . "
echo -e "${CYAN}:: ${BOLD}Давайте рассмотрим варианты (действия), которые будут выполняться: ${NC}"
echo " 1 - Добавляем пользователя, прописываем права, и добавляем группы : "
echo " (audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel) "
echo " 2 - Добавляем пользователя, прописываем права, и добавляем группы : "
echo " (adm + audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel) "
echo " 3 - Добавляем пользователя, прописываем права, и добавляем пользователя в группу : "
echo " (wheel), то выбирайте вариант - "3" "
echo -e "${CYAN}:: ${BOLD}Далее, пользователь из установленной системы добавляет себя любимого(ую), в нужную группу /etc/group.${NC}"
echo -e "${YELLOW}=> Вы НЕ можете пропустить этот шаг (пункт)! ${NC}"
echo " Будьте внимательны! В этом действии выбор остаётся за вами."
echo -e "${YELLOW}==> ${NC}Действия выполняются в указанном порядке"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Группы (audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel),
2 - Группы (adm + audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel),
3 - Вы выбрали группу (wheel): " i_groups # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_groups" =~ [^123] ]]
do
:
done
if [[ $i_groups == 1 ]]; then
useradd -m -g users -G audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel -s /bin/bash $username
usermod -a -G audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel $username
userdbctl groups-of-user $username
clear
echo ""
echo " Пользователь успешно добавлен в группы и права пользователя "
elif [[ $i_groups == 2 ]]; then
useradd -m -g users -G adm,audio,games,lp,disk,network,optical,power,scanner,storage,video,rfkill,sys,wheel -s /bin/bash $username
clear
echo ""
echo " Пользователь успешно добавлен в группы и права пользователя "
elif [[ $i_groups == 3 ]]; then
useradd -m -g users -G wheel -s /bin/bash $username
clear
echo ""
echo " Пользователь успешно добавлен в группы и права пользователя "
fi
###
echo ""
echo -e "${GREEN}==> ${NC}Устанавливаем пароль пользователя (User Password)"
echo " Пароль должен содержать от 6 до 15 символов, включающих цифры (1-0) и знаки (!'':[@]),
и латинские буквы разного регистра! "
echo -e "${MAGENTA}=> ${BOLD}По умолчанию, на большинстве систем Linux в консоле не показывается введенный пароль.
Это сделано из соображений безопасности, чтобы никто не мог увидеть длину вашего пароля.${NC}"
echo " => Введите User Password (Пароль пользователя) - для $username, вводим пароль 2 раза "
echo " Чтобы подтвердить действия ввода, нажмите кнопку 'Ввод' ("Enter") "
passwd $username
# echo -e "Какой пароль должен быть у юзера ${username}?"
# read userpassword; clear
###
echo ""
echo -e "${BLUE}:: ${NC}Проверим статус пароля для всех учетных записей пользователей в вашей системе"
echo -e "${CYAN}:: ${NC}В выведенном списке те записи, которые сопровождены значением (лат.буквой) P - значит на этой учетной записи установлен пароль!"
echo -e "${CYAN} Пример: ${NC}(root P 10/11/2020 -1 -1 -1 -1; или $username P 10/11/2020 0 99999 7 -1)"
passwd -Sa # -S, --status вывести статус пароля
###
echo ""
echo -e "${GREEN}==> ${NC}Информация о пользователе (полное имя пользователя и связанная с ним информация)"
echo -e "${CYAN}:: ${NC}Пользователь в Linux может хранить большое количество связанной с ним информации, в том числе номера домашних и офисных телефонов, номер кабинета и многое другое."
echo " Мы обычно пропускаем заполнение этой информации (так как всё это необязательно) - при создании пользователя. "
echo -e "${CYAN}:: ${NC}На первом этапе достаточно имени пользователя, и подтверждаем - нажмите кнопку 'Ввод'(Enter)."
echo " Ввод другой информации (Кабинет, Телефон в кабинете, Домашний телефон) можно пропустить - просто нажмите 'Ввод'(Enter). "
echo -e "${YELLOW}==> ${NC}Вы можете пропустить этот шаг, если не уверены в правильности выбора"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Вводим информация о пользователе, 0 - Пропустить этот шаг: " i_finger # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_finger" =~ [^10] ]]
do
:
done
if [[ $i_finger == 1 ]]; then
echo ""
echo " Информация о my username : (достаточно имени) "
chfn $username
elif [[ $i_finger == 0 ]]; then
echo ""
echo " Настройка пропущена "
fi
###
echo ""
echo -e "${BLUE}:: ${NC}Устанавливаем (пакет) SUDO."
echo -e "${CYAN}=> ${NC}Пакет sudo позволяет системному администратору предоставить определенным пользователям (или группам пользователей) возможность запускать некоторые (или все) команды в роли пользователя root или в роли другого пользователя, указываемого в командах или в аргументах."
pacman -S --noconfirm --needed sudo # возможность запускать некоторые команды от имени пользователя root
# pacman -S sudo --noconfirm # - пока присутствует в pkglist.x86_64
###
clear
echo ""
echo -e "${GREEN}==> ${NC}Настраиваем запрос пароля "Пользователя" при выполнении команды "sudo". "
echo " Чтобы начать использовать sudo как непривилегированный пользователь, его нужно настроить должным образом. "
echo " Огласите весь список, пожалуйста! :) "
echo " 1 - Пользователям (членам) группы wheel доступ к sudo С запросом пароля "
echo " 2 - Пользователям (членам) группы wheel доступ к sudo (NOPASSWD) БЕЗ запроса пароля "
echo -e "${RED}==> ${BOLD}Выбрав '2' (раскомментировав) данную опцию, особых требований к безопасности нет, но может есть какие-то очень негативные моменты в этом?... ${NC}"
echo " 3-(0) - Добавление настроек sudo пропущено "
echo " Далее все настройки в файле /etc/sudoers пользователь произведёт сам(а) "
echo " Например: под строкой root ALL=(ALL:ALL) ALL - пропишет - $username ALL=(ALL) ALL "
echo -e "${YELLOW}==> ${NC}Вы можете пропустить этот шаг, если не уверены в правильности выбора"
echo " Будьте внимательны! В любой ситуации выбор всегда остаётся за вами."
echo -e "${CYAN}:: ${NC}На данном этапе порекомендую вариант "1" (sudo С запросом пароля) "
echo -e "${YELLOW}==> ${NC}Действия выполняются в указанном порядке"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - С запросом пароля, 2 - БЕЗ запроса пароля,
0 - Пропустить этот шаг: " i_sudo # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_sudo" =~ [^120] ]]
do
:
done
if [[ $i_sudo == 0 ]]; then
clear
echo ""
echo " Добавление настройки sudo пропущено "
elif [[ $i_sudo == 1 ]]; then
echo ""
echo " Резервное копирование исходного файла Sudoers..."
cp -v /etc/sudoers /etc/sudoers.original # -v или --verbose -Выводить информацию о каждом файле, который обрабатывает команда cp.
echo " Права доступа к файлам Sudoers "
### И владелец, и группа для sudoers файла должны быть равны 0. Права доступа к файлу должны быть установлены на 0440. Эти разрешения установлены по умолчанию, но если вы случайно измените их, их следует немедленно изменить обратно, иначе sudo завершится ошибкой.
# chown -c root:root /etc/sudoers # Команда chown используется для изменения владельца и группы владельцев файла
# chmod -c 0440 /etc/sudoers # Права доступа к файлам Sudoers
chmod 0440 /etc/sudoers # 0440 даст владельцу (root) и группе права на чтение
# chmod 0700 /etc/sudoers # 0700 даст владельцу (root) права на чтение, запись и выполнение
# chmod +w /etc/sudoers # Если запись в файл не разрешена, то надо выставить дополнительное право
{
echo ""
echo '%wheel ALL=(ALL) ALL'
} >>/etc/sudoers
# echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers
# sed -i 's/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers
# sed -i '/%wheel ALL=(ALL) ALL/s/^#//' /etc/sudoers # Раскомментируйте, чтобы разрешить членам группы wheel выполнять любую команду
# sed -i 's/# %sudo ALL=(ALL) ALL/%sudo ALL=(ALL) ALL/' /etc/sudoers
#####
# Эта конфигурация особенно полезна для тех, кто использует терминальные мультиплексоры, такие как screen, tmux или rat poison, а также для тех, кто использует sudo из scripts / cronjobs:
# This config is especially helpful for those using terminal multiplexers like screen, tmux, or ratpoison, and those using sudo from scripts/cronjobs:
{
echo ""
echo 'Defaults !requiretty, !tty_tickets, !umask'
echo 'Defaults visiblepw, path_info, insults, lecture=always'
echo 'Defaults loglinelen=0, logfile =/var/log/sudo.log, log_year, log_host, syslog=auth'
echo 'Defaults passwd_tries=3, passwd_timeout=1'
echo 'Defaults env_reset, always_set_home, set_home, set_logname'
echo 'Defaults !env_editor, editor="/usr/bin/vim:/usr/bin/vi:/usr/bin/nano"'
echo 'Defaults timestamp_timeout=15'
echo 'Defaults passprompt="[sudo] password for %u: "'
echo 'Defaults lecture=never'
} >>/etc/sudoers
### <<< sudo и %wheel ALL=(ALL) NOPASSWD: ALL >>> ####
### Кстати, рекомендую добавить запрет выполнения нескольких команд -
### чтобы не было возможности стать рутом через $sudo su (многи об этой фиче забывают)!
{
echo ""
echo '## Groups of commands. Often used to group related commands together.'
echo '# Cmnd_Alias SHELLS = /bin/sh,/bin/csh,/usr/local/bin/tcsh'
echo '# Cmnd_Alias SSH = /usr/bin/ssh'
echo '# Cmnd_Alias SU = /bin/su'
echo '# dreamer ALL = (ALL) NOPASSWD: ALL,!SU,SHELLS,!SSH'
} >>/etc/sudoers
###
### Второй способ: --(Но в этом случае при запросе пароля USER - вводим пароль ROOT)!!!
# echo -e "${RED}Добавление "${username}" в sudoers.${NC}\n"
# echo -e "%wheel ALL=(ALL) ALL\nDefaults rootpw" > /etc/sudoers.d/99_wheel
# echo -e "${RED}"${username}" теперь является частью группы ${WHITE}%wheel.${NC}\n"
clear
echo ""
echo " Sudo с запросом пароля выполнено "
###
echo ""
echo -e "${BLUE}:: ${NC}Просмотреть содержимое файла Sudoers"
cat /etc/sudoers # cat читает данные из файла или стандартного ввода и выводит их на экран
sleep 02
elif [[ $i_sudo == 2 ]]; then
echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
# sed -i 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
###
### Второй способ: --(Но в этом случае запроса пароля USER - НЕ Будет)!!!
# echo -e "${RED}Добавление "${username}" в sudoers.${NC}\n"
# echo -e "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/g_wheel
# echo -e "${RED}"${username}" теперь является частью группы ${WHITE}%wheel.${NC}\n"
clear
echo ""
echo " Sudo nopassword (БЕЗ запроса пароля) добавлено "
fi
###
echo ""
echo -e "${GREEN}==> ${NC}Добавим репозиторий "Multilib" - Для работы 32-битных приложений в 64-битной системе?"
echo -e "${BLUE}:: ${NC}Раскомментируем репозиторий [multilib]"
echo -e "${CYAN}:: ${BOLD}"Multilib" репозиторий может пригодится позже при установке OpenGL (multilib) для драйверов видеокарт, а также для различных библиотек необходимого вам софта. ${NC}"
echo " Чтобы исключить в дальнейшем ошибки в работе системы, рекомендую вариант "1" (добавить Multilib репозиторий). "
echo " Будьте внимательны! Если Вы сомневаетесь в своих действиях, ещё раз обдумайте... "
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да добавить Multilib репозиторий
0 - Нет пропустить настройку : " i_multilib # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_multilib" =~ [^10] ]]
do
:
done
if [[ $i_multilib == 0 ]]; then
# clear
echo ""
echo " Добавление Multilib репозитория пропущено "
elif [[ $i_multilib == 1 ]]; then
echo ""
echo " Резервное копирование исходного файла /etc/pacman.conf "
cp /etc/pacman.conf /etc/pacman.conf.backup # Всегда, сначала сделайте резервную копию вашего pacman.config файла
# cp -v /etc/pacman.conf /etc/pacman.conf.bkp # -v или --verbose -Выводить информацию о каждом файле, который обрабатывает команда cp.
echo " Раскрашивание вывода pacman и pacman easter egg (меняет индикатор выполнения на Pac-Man) "
### Color - Автоматически включать цвета только тогда, когда вывод pacman на tty.
sed -i 's/#Color/Color/' /etc/pacman.conf # Чтобы раскрасить вывод pacman, раскомментируем в /etc/pacman.conf строчку Color
# sed -i '/#Color/ s/^#//' /etc/pacman.conf
### ILoveCandy - Потому что Pac-Man любит конфеты.
sed -i '/^Co/ aILoveCandy' /etc/pacman.conf # pacman easter egg (меняет индикатор выполнения на Pac-Man)
# sed -i 's/VerbosePkgLists/VerbosePkgLists\nILoveCandy/g' /etc/pacman.conf
### Второй способ: --(Но)!!!
## sed -i 's/VerbosePkgLists/VerbosePkgLists\nILoveCandy/g' /etc/pacman.conf
## sudo sed -i '/^\#VerbosePkgLists/aILoveCandy' /etc/pacman.conf # pacman progress indicator
## sed -i 's/#Color/Color/g' /etc/pacman.conf # pacman colors
### VerbosePkgLists - Отображает имя, версию и размер целевых пакетов в виде таблицы для операций обновления, синхронизации и удаления.
sed -i 's/#VerbosePkgLists/VerbosePkgLists\n/g' /etc/pacman.conf
### Параллельная загрузка pacman (ParallelDownloads = ...)
### Указывает количество одновременных потоков загрузки. Значение должно быть положительным целым числом. Если этот параметр конфигурации не установлен, то используется только один поток загрузки (т.е. загрузки происходят последовательно).
# ParallelDownloads = 5
sed -i 's/#ParallelDownloads/ParallelDownloads/g' /etc/pacman.conf
### MultiLib (Include= /path/to/config/file) - Этот файл может включать репозитории или общие параметры конфигурации.
sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf
### Если вы имеете плохое качество соединения или слабый уровень сигнала, то при загрузке пакетов при помощи pacman вы могли сталкиваться с ошибкой превышания лимитов ожидания (таймаутов)
### Она задает загрузчик, по умолчанию wget, и параметры к нему
echo '#DisableDownloadTimeout' >> /etc/pacman.conf
echo '#XferCommand = /usr/bin/wget --timeout=40 --tries=0 --passive-ftp -c -O %o %u' >> /etc/pacman.conf
echo ""
echo " Multilib репозиторий добавлен (раскомментирован) "
fi
###
echo -e "${CYAN}:: ${BOLD}Включим подсветку синтаксиса в Nano (/etc/nanorc для общесистемных настроек). ${NC}"
echo " Резервное копирование исходного файла /etc/nanorc "
cp /etc/nanorc /etc/nanorc.backup
# cp -v /etc/nanorc /etc/nanorc.backup # -v или --verbose -Выводить информацию о каждом файле, который обрабатывает команда cp.
echo " Активируем цветовой режим, предустановленный в файлах "
# cat /usr/share/nano/*.nanorc
{
echo ""
echo 'include "/usr/share/nano/*.nanorc"'
} >>/etc/nanorc
###
echo ""
echo -e "${BLUE}:: ${NC}Обновим базы данных пакетов"
pacman -Sy #--noconfirm --noprogressbar --quiet (обновить списки пакетов из репозиториев)
#pacman -Syy --noconfirm --noprogressbar --quiet (обновление баз пакмэна - pacman)
sleep 1
#####################
clear
echo ""
echo -e "${GREEN}==> ${NC}Устанавливаем X.Org Server (иксы) и драйвера."
echo -e "${YELLOW}:: ${BOLD}X.Org Foundation Open Source Public Implementation of X11 - это свободная открытая реализация оконной системы X11.${NC}"
echo " Xorg очень популярен среди пользователей Linux, что привело к тому, что большинство приложений с графическим интерфейсом используют X11, из-за этого Xorg доступен в большинстве дистрибутивов. "
echo -e "${BLUE}:: ${NC}Сперва определим вашу видеокарту!"
echo -e "${MAGENTA}=> ${BOLD}Вот данные по вашей видеокарте (даже, если Вы работаете на VM): ${NC}"
#echo ""
lspci | grep -e VGA -e 3D
#lspci | grep -E "VGA|3D" # узнаем производителя и название видеокарты
#lspci -v | grep -A 3 VGA
lspci -nn | grep VGA
#lspci | grep VGA # узнаем ID шины
# После того как вы узнаете PCI-порт видеокарты, например 1с:00.0, можно получить о ней более подробную информацию:
# sudo lspci -v -s 1с:00.0
echo ""
echo -e "${RED}==> ${NC}Куда Вы устанавливаете Arch Linux на PC, или на Виртуальную машину (VBox;VMWare)?"
echo " Для того, чтобы ускорение видео работало, и часто для того, чтобы разблокировать все режимы, в которых может работать GPU (графический процессор), требуется правильный видеодрайвер. "
echo -e "${MAGENTA}=> ${BOLD}Есть три варианта установки Xorg (иксов): ${NC}"
echo " Давайте проанализируем действия, которые будут выполняться. "
echo " 1 - Если Вы устанавливаете Arch Linux на PC, то выбирайте вариант - "1" "
echo " 2 - Если Вы устанавливаете Arch Linux на Виртуальную машину (VBox;VMWare), то ваш вариант - "2" "
echo " 3(0) - Вы можете пропустить установку Xorg (иксов), если используете VDS (Virtual Dedicated Server), или VPS (Virtual Private Server), тогда выбирайте вариант - "0" "
echo " VPS (Virtual Private Server) обозначает виртуализацию на уровне операционной системы, VDS (Virtual Dedicated Server) - аппаратную виртуализацию. Оба термина появились и развивались параллельно, и обозначают одно и то же: виртуальный выделенный сервер, запущенный на базе физического. "
echo " Будьте внимательны! Процесс установки Xorg (иксов) не был прописан полностью автоматическим, и было принято решение дать возможность пользователю сделать выбор. В любой ситуации выбор всегда остаётся за вами. "
echo -e "${YELLOW}==> ${NC}Действия выполняются в указанном порядке"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Устанавливаем на PC или (ноутбук), 2 - Устанавливаем на VirtualBox(VMWare),
0 - Пропустить (используется VDS, или VPS): " vm_setting # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$vm_setting" =~ [^120] ]]
do
:
done
if [[ $vm_setting == 0 ]]; then
# echo ""
echo " Установка Xorg (иксов) пропущена (используется VDS, или VPS) "
elif [[ $vm_setting == 1 ]]; then
gui_install="xorg-server xorg-drivers xorg-xinit" # xorg-xwayland (или на vmware) # --confirm всегда спрашивать подтверждение; X-сервер Xorg (https://xorg.freedesktop.org); Группа драйверов; Программа инициализации X.Org (https://xorg.freedesktop.org)
# gui_install="xorg-drivers --noconfirm" # Group Details - https://archlinux.org/groups/x86_64/xorg-drivers/
# gui_install="xf86-input-libinput --noconfirm" # Универсальный драйвер ввода для сервера X.Org на основе libinput (http://xorg.freedesktop.org/)
# gui_install="xf86-input-synaptics --noconfirm" # Драйвер Synaptics для сенсорных панелей ноутбуков (http://xorg.freedesktop.org/)
elif [[ $vm_setting == 2 ]]; then
gui_install="xorg-server xorg-drivers xorg-xinit virtualbox-guest-utils" #(или на vmware) # --confirm всегда
# gui_install="xorg-server xorg-drivers xorg-xinit virtualbox-guest-utils --noconfirm"
fi
##
echo ""
echo -e "${BLUE}:: ${NC}Ставим иксы и драйвера"
echo " Выберите свой вариант (от 1-...), или по умолчанию нажмите кнопку 'Ввод' ("Enter") "
echo " Далее после своего сделанного выбора, нажмите "Y или n" для подтверждения установки. "
pacman -S $gui_install # --confirm всегда спрашивать подтверждение
echo ""
pacman -Syy --noconfirm --noprogressbar --quiet
sleep 1
######################
clear
echo ""
echo -e "${GREEN}==> ${NC}Ставим DE (графическое окружение) среда рабочего стола."
echo " DE (от англ. desktop environment - среда рабочего стола), это обёртка для ядра Linux, предоставляющая основные функции дистрибутива в удобном для конечного пользователя наглядном виде (окна, кнопочки, стрелочки и пр.). "
echo -e "${MAGENTA}=> ${BOLD}Среда рабочего стола объединяет множество компонентов для предоставления общих элементов графического пользовательского интерфейса, таких как значки, панели инструментов, обои и виджеты рабочего стола. Кроме того, большинство сред рабочего стола включают набор интегрированных приложений и утилит. Что наиболее важно, окружения рабочего стола предоставляют собственный оконный менеджер, который однако, обычно можно заменить другим совместимым. ${NC}"
echo " Будьте внимательны! Процесс установки, после выбранного вами варианта был прописан полностью автоматическим. В этом действии выбор остаётся за вами. "
echo -e "${YELLOW}==> ${NC}Действия выполняются в указанном порядке"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - KDE (Plasma) - Plasma предлагает все инструменты, необходимые для современного настольного компьютера
2 - Xfce - Xfce воплощает традиционную философию UNIX
3 - GNOME - это привлекательный и интуитивно понятный рабочий стол с современным (GNOME)
4 - LXDE - облегченная среда рабочего стола X11 - это быстрая и энергосберегающая среда
5 - Deepin - настольный интерфейс и приложения Deepin имеют интуитивно понятный и элегантный дизайн
6 - Mate - предоставляет пользователям Linux интуитивно понятный и привлекательный рабочий стол
7 - Lxqt - это порт Qt и будущая версия LXDE, облегченной среды рабочего стола
8 - i3 - (конфиги стандартные, возможна установка с автовходом)
0 - Пропустить установку: " x_de # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$x_de" =~ [^123456780] ]]
do
:
done
if [[ $x_de == 0 ]]; then
echo ""
echo " Установка DE (среда рабочего стола) была пропущена "
elif [[ $x_de == 1 ]]; then
echo " Установка KDE(Plasma) "
pacman -S plasma plasma-meta plasma-pa plasma-desktop kde-system-meta kde-utilities-meta kio-extras konsole kwalletmanager kio-admin --noconfirm # Мета-пакет для установки KDE Plasma; Апплет Plasma для управления громкостью звука с помощью PulseAudio; Рабочий стол KDE Plasma; Мета-пакет для системных приложений KDE; Мета-пакет для служебных приложений KDE; Дополнительные компоненты для увеличения функциональности KIO; Инструмент управления кошельком; Эмулятор терминала KDE.
# pacman -S --noconfirm --needed tellico # Менеджер коллекций для KDE ; https://tellico-project.org/ ; https://archlinux.org/packages/extra/x86_64/tellico/
# yay -S latte-dock --noconfirm --needed # Док на основе Plasma Frameworks ; https://aur.archlinux.org/latte-dock.git (read-only, click to copy) ; https://aur.archlinux.org/latte-dock-git.git (read-only, click to copy) ; https://invent.kde.org/plasma/latte-dock
# Minimal KDE
# pacman -S plasma plasma-meta # konsole dolphin kmix discover packagekit-qt5
# Install kde application
# pacman -S kde-applications kde-applications-meta
# pacman -S kde-applications --noconfirm # Мета-пакет для приложений KDE (для различных приложений KDE)
# pacman -S gwenview --noconfirm # Быстрый и простой в использовании просмотрщик изображений (https://apps.kde.org/gwenview/)
# pacman -S plasma-framework --noconfirm # Библиотека Plasma и компоненты времени выполнения на основе KF5 и Qt5
## pacman -S kde-applications-meta --noconfirm # Мета-пакет для приложений KDE
### pacman -S --noconfirm --needed alsa-firmware alsa-utils arj ark bluedevil breeze-gtk ccache cups-pdf cups-pk-helper dolphin-plugins e2fsprogs efibootmgr fdkaac ffmpegthumbs firefox git glibc-locales gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb irqbalance kamera kamoso kate kcalc kde-gtk-config kdegraphics-mobipocket kdegraphics-thumbnailers kdenetwork-filesharing kdeplasma-addons kdesdk-kio kdesdk-thumbnailers kdialog keditbookmarks kget kimageformats kinit kio-admin kio-gdrive kio-zeroconf kompare konsole kscreen kvantum kwrited libappimage libfido2 libktorrent libmms libnfs libva-utils lirc lrzip lua52-socket lzop mac man-db man-pages mesa-demos mesa-utils mold nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pbzip2 pdfmixtool pigz pipewire-alsa pipewire-pulse plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-nm plasma-pa plasma-wayland-protocols power-profiles-daemon powerdevil powerline powerline-fonts print-manager python-pyqt6 python-reportlab qbittorrent qt6-imageformats qt6-scxml qt6-virtualkeyboard realtime-privileges reflector rng-tools sddm-kcm skanlite sof-firmware sox spectacle sshfs system-config-printer terminus-font timidity++ ttf-ubuntu-font-family unarchiver unrar unzip usb_modeswitch usbutils vdpauinfo vlc vorbis-tools vorbisgain wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting
# yay -S xsane --noconfirm
### pacman -S --noconfirm --needed exfatprogs
clear
echo ""
echo " DE (Plasma KDE) успешно установлено "
echo ""
echo -e "${GREEN}==> ${NC}Настройка автовхода без DM (Display manager) менеджера входа в KDE(Plasma)"
echo " Давайте проанализируем действия, которые выполняются. "
echo " 1 - Если вам нужен автовход без DM (Display manager), тогда укажите "1" "
echo " Вы хотите автологин определенного пользователя, автоматический запуск Иксов, запуск окружения (KDE, XFCE, Gnom и т.д.). "
echo " Всё можно сделать без использования DM (например SDDM, LightDM и т.д.), поскольку реализация автозагрузки окружения реализован через startx. "
echo " 2(0) - Если Вы по прежнему желаете использовать DM (например SDDM, LightDM и т.д.), или в дальнейшем захотите установить, и использовать 2(е) окружение (Т.е. DE - KDE, XFCE, Gnom и т.д.), тогда укажите "0" "
echo " Будьте внимательны! Если Вы сомневаетесь в своих действиях, ещё раз обдумайте... "
echo -e "${YELLOW}==> ${NC}Действия выполняются в указанном порядке"
echo ""
while
echo " Действия ввода, выполняется сразу после нажатия клавиши "
read -n1 -p "
1 - Да нужен автовход без DM (Display manager),
0 - Нет буду использовать DM (Display manager): " i_kde # sends right after the keypress; # отправляет сразу после нажатия клавиши
echo ''
[[ "$i_kde" =~ [^10] ]]
do
:
done
if [[ $i_kde == 0 ]]; then
echo " Буду использовать DM (Display manager) "
elif [[ $i_kde == 1 ]]; then