Advertisement
Guest User

Arch Linux Install Script v 1.0 Stable

a guest
Jun 27th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 16.22 KB | None | 0 0
  1. #!/bin/bash
  2. loadkeys ru
  3. setfont cyr-sun16
  4.  
  5. #Разметка диска
  6. echo 'again=y
  7. while [ "$again" = "y" ]
  8. do
  9. echo
  10. echo "[Таблица разделов]"
  11. lsblk /dev/sd*
  12. echo
  13. read -p "Введите имя устройства, на котором будет создан раздел: " name
  14. read -p "Создать Основной (p) или Расширенный (e) раздел: " type
  15. read -p "Введите размер нового раздела: " size
  16. fdisk /dev/$name << EOF
  17. n
  18. $type
  19.  
  20.  
  21. $size
  22. w
  23. EOF
  24. echo
  25. printf "Создать еще один раздел? [y/n] "
  26. read again
  27. done' > fdisk.sh
  28.  
  29. echo 'again=y
  30. while [ "$again" = "y" ]
  31. do
  32. echo
  33. echo "[Таблица разделов]"
  34. lsblk /dev/sd*
  35. echo
  36. read -p "Введите имя устройства, на котором будет создан раздел: " name
  37. read -p "Создать Основной (p) или Расширенный (e) раздел: " type
  38. read -p "Введите размер нового раздела: " size
  39. gdisk /dev/$name << EOF
  40. n
  41. $type
  42.  
  43.  
  44. $size
  45. w
  46. EOF
  47. echo
  48. printf "Создать еще один раздел? [y/n] "
  49. read again
  50. done' > gdisk.sh
  51.  
  52. echo 'echo "[Разметка диска]"
  53. echo
  54. echo "1) MBR"
  55. echo "2) GPT"
  56. echo
  57. printf "Выберите таблицу разделов: "
  58. read doing
  59. case $doing in
  60. 1)
  61. sh fdisk.sh
  62. ;;
  63. 2)
  64. sh gdisk.sh
  65. ;;
  66. esac' > fgdisk.sh
  67. sh fgdisk.sh
  68.  
  69. #Создание файловой системы
  70. echo 'again=y
  71. while [ "$again" = "y" ]
  72. do
  73. echo
  74. echo "[Создание файловой системы]"
  75. echo "1) Файловая система f2fs"
  76. echo "2) Файловая система ext2"
  77. echo "3) Журналируемая файловая система ext3"
  78. echo "4) Журналируемая файловая система ext4"
  79. echo "5) Журналируемая файловая система btrfs"
  80. echo "6) Журналируемая файловая система JFS"
  81. echo "7) Журналируемая файловая система XFS"
  82. echo
  83. printf "Выберите файловую систему: "
  84. read doing
  85. case $doing in
  86. 1)
  87. echo
  88. lsblk /dev/sd*
  89. echo
  90. read -p "Введите имя раздела: " dev
  91. mkfs.f2fs /dev/$dev
  92. mkdir /mnt
  93. mount /dev/$dev /mnt
  94. pacstrap -i f2fs-tools
  95. umount -l /mnt
  96. ;;
  97. 2)
  98. echo
  99. lsblk /dev/sd*
  100. echo
  101. read -p "Введите имя раздела: " dev
  102. mkfs.ext2 /dev/$dev
  103. ;;
  104. 3)
  105. echo
  106. lsblk /dev/sd*
  107. echo
  108. read -p "Введите имя раздела: " dev
  109. mkfs.ext3 /dev/$dev
  110. ;;
  111. 4)
  112. echo
  113. lsblk /dev/sd*
  114. echo
  115. read -p "Введите имя раздела: " dev
  116. mkfs.ext4 /dev/$dev
  117. ;;
  118. 5)
  119. echo
  120. lsblk /dev/sd*
  121. echo
  122. read -p "Введите имя раздела: " dev
  123. mkfs.btrfs /dev/$dev
  124. ;;
  125. 6)
  126. echo
  127. lsblk /dev/sd*
  128. echo
  129. read -p "Введите имя раздела: " dev
  130. mkfs.jfs /dev/$dev
  131. ;;
  132. 7)
  133. echo
  134. lsblk /dev/sd*
  135. echo
  136. read -p "Введите имя раздела: " dev
  137. mkfs.xfs /dev/$dev
  138. ;;
  139. esac
  140. echo
  141. printf "Продолжить или перейти к следующему шагу? [y - продолжить/Enter - перейти к следующему шагу]: "
  142. read again
  143. done' > fs.sh
  144. sh fs.sh
  145.  
  146. #Swap
  147. echo 'echo
  148. lsblk /dev/sd*
  149. echo
  150. read -p "Введите имя swap раздела: " swap
  151. mkswap /dev/$swap
  152. swapon /dev/$swap' > swap.sh
  153. sh swap.sh
  154.  
  155. #Монтирование разделов
  156. echo 'again=y
  157. while [ "$again" = "y" ]
  158. do
  159. echo
  160. echo "[Монтирование разделов]"
  161. echo "1) /"
  162. echo "2) /boot"
  163. echo "3) /home"
  164. echo "4) /tmp"
  165. echo "5) /usr"
  166. echo "6) /var"
  167. echo "7) /srv"
  168. echo "8) /opt"
  169. echo "9) /usr/local"
  170. echo
  171. printf "Выберите точку монтирования: "
  172. read doing
  173. case $doing in
  174. 1)
  175. echo
  176. lsblk /dev/sd*
  177. echo
  178. read -p "Введите имя раздела: " name
  179. mount /dev/$name /mnt
  180. ;;
  181. 2)
  182. echo
  183. lsblk /dev/sd*
  184. echo
  185. read -p "Введите имя раздела: " name
  186. mkdir /mnt/boot
  187. mount /dev/$name /mnt/boot
  188. ;;
  189. 3)
  190. echo
  191. lsblk /dev/sd*
  192. echo
  193. read -p "Введите имя раздела: " name
  194. mkdir /mnt/home
  195. mount /dev/$name /mnt/home
  196. ;;
  197. 4)
  198. echo
  199. lsblk /dev/sd*
  200. echo
  201. read -p "Введите имя раздела: " name
  202. mkdir /mnt/tmp
  203. mount /dev/$name /mnt/tmp
  204. ;;
  205. 5)
  206. echo
  207. lsblk /dev/sd*
  208. echo
  209. read -p "Введите имя раздела: " name
  210. mkdir /mnt/usr
  211. mount /dev/$name /mnt/usr
  212. ;;
  213. 6)
  214. echo
  215. lsblk /dev/sd*
  216. echo
  217. read -p "Введите имя раздела: " name
  218. mkdir /mnt/var
  219. mount /dev/$name /mnt/var
  220. ;;
  221. 7)
  222. echo
  223. lsblk /dev/sd*
  224. echo
  225. read -p "Введите имя раздела: " name
  226. mkdir /mnt/srv
  227. mount /dev/$name /mnt/srv
  228. ;;
  229. 8)
  230. echo
  231. lsblk /dev/sd*
  232. echo
  233. read -p "Введите имя раздела: " name
  234. mkdir /mnt/opt
  235. mount /dev/$name /mnt/opt
  236. ;;
  237. 9)
  238. echo
  239. lsblk /dev/sd*
  240. echo
  241. read -p "Введите имя раздела: " name
  242. mkdir /mnt/usr/local
  243. mount /dev/$name /mnt/usr/local
  244. ;;
  245. esac
  246. echo
  247. printf "Продолжить монтирование разделов? [y/n] "
  248. read again
  249. done' > mount.sh
  250. sh mount.sh
  251.  
  252. #Установка базовой системы
  253. echo 'echo
  254. echo "[Установка базовой системы]"
  255. pacstrap -i /mnt base base-devel' > base.sh
  256. sh base.sh
  257.  
  258. #fstab
  259. echo 'genfstab -U -p /mnt >> /mnt/etc/fstab
  260. echo
  261. echo -n "Открыть fstab для просмотра или редактирования? [y/n] "
  262. read item
  263. case "$item" in
  264. y|Y)
  265. nano /mnt/etc/fstab
  266. ;;
  267. n|N)
  268. exit 0
  269. ;;
  270. *)
  271. ;;
  272. esac' > fstab.sh
  273. sh fstab.sh
  274.  
  275. #DNS
  276. echo 'echo nameserver 8.8.8.8 > /etc/resolv.conf' > dns.sh
  277.  
  278. #Обновление репозиториев
  279. echo 'pacman -Sy' > update.sh
  280.  
  281. #Настройка локали
  282. echo 'nano /etc/locale.gen
  283. locale-gen
  284. echo
  285. read -p "Введите желаемую локаль (см. сгенерированные локали) [Прим: "ru_RU.UTF-8"]: " locale
  286. echo LANG=$locale > /etc/locale.conf
  287. read -p "Введите выбранную локаль для экспорта в текущий сеанс [Прим: "ru_RU.UTF-8"]: " locale
  288. export LANG=$locale' > locale.sh
  289.  
  290. #Виртуальная консоль
  291. echo 'echo
  292. echo -n "Создать файл vconsole.conf? [y/n] "
  293. read item
  294. case "$item" in
  295. y|Y)
  296. echo KEYMAP= > /etc/vconsole.conf
  297. echo FONT= >> /etc/vconsole.conf
  298. nano /etc/vconsole.conf
  299. ;;
  300. n|N)
  301. exit 0
  302. ;;
  303. *)
  304. ;;
  305. esac' > vconsole.sh
  306.  
  307. #Часовой пояс
  308. echo 'echo "[Часовой пояс]"
  309. echo "1) Конфигурация временной зоны с помощью tzselect"
  310. echo "2) Вручную"
  311. echo
  312. printf "Выберите вариант: "
  313. read doing
  314. case $doing in
  315. 1)
  316. tzselect
  317. ;;
  318. 2)
  319. read -p "Введите зону и субзону: " $zone $subzone
  320. ln -sf /usr/share/zoneinfo/$zone/$subzone /etc/localtime
  321. ;;
  322. esac' > tz.sh
  323.  
  324. #Аппаратные часы
  325. echo 'echo "[Аппаратные часы]"
  326. echo "1) UTC"
  327. echo "2) Localtime"
  328. echo
  329. printf "Выберите режим: "
  330. read doing
  331. case $doing in
  332. 1)
  333. hwclock --systohc --utc
  334. ;;
  335. 2)
  336. hwclock --systohc localtime
  337. ;;
  338. esac' > time.sh
  339.  
  340. #NTP
  341. echo 'echo
  342. echo -n "Установить NTP сервер? [y/n] "
  343. read item
  344. case "$item" in
  345. y|Y)
  346. pacman -S --noconfirm ntp
  347. systemctl enable ntpd.service
  348. ;;
  349. n|N)
  350. exit 0
  351. ;;
  352. *)
  353. ;;
  354. esac' > ntp.sh
  355.  
  356. #Имя компьютера
  357. echo 'echo
  358. read -p "Введите имя компьютера: " hostname
  359. echo $hostname > /etc/hostname' > hostname.sh
  360.  
  361. #Настройка сети
  362.  
  363.  
  364. echo 'echo "[Настройка сети]"
  365. echo "1) Проводное (динамическое)"
  366. echo "2) Беспроводное"
  367. echo
  368. printf "Выберите тип подключения: "
  369. read doing
  370. case $doing in
  371. 1)
  372. echo
  373. ip link
  374. echo
  375. read -p "Выберите сетевой адаптер: " eth
  376. systemctl enable dhcpcd@$eth.service
  377. ;;
  378. 2)
  379. pacman -S --noconfirm iw wpa_supplicant dialog
  380. echo
  381. ip link
  382. echo
  383. read -p "Выберите сетевой адаптер: " wlan
  384. wifi-menu $wlan
  385. ;;
  386. esac' > net.sh
  387.  
  388. echo 'echo
  389. echo -n "Установить Network Manager? [y/n] "
  390. read item
  391. case "$item" in
  392. y|Y)
  393. pacman -S --noconfirm networkmanager
  394. systemctl enable NetworkManager.service
  395. pacman -Rsnc netctl
  396. ;;
  397. n|N)
  398. exit 0
  399. ;;
  400. *)
  401. ;;
  402. esac' > nm.sh
  403.  
  404. #mkinitcpio
  405. echo 'echo
  406. echo "[Создание initramfs]"
  407. mkinitcpio -p linux' > mkinitcpio.sh
  408.  
  409. echo 'echo
  410. echo "[Пароль для учетной записи root]"
  411. passwd
  412. echo
  413. echo "[Создание нового пользователя]"
  414. read -p "Введите имя пользователя: " username
  415. useradd -m -g users -G wheel,audio -s /bin/bash $username
  416. echo
  417. echo "[Пароль для учетной записи $username]"
  418. passwd $username' > user.sh
  419.  
  420. #Графическая подсистема
  421. echo 'echo "[Графическая подсистема]"
  422. echo "1) Xorg"
  423. echo "2) Wayland"
  424. echo "3) XWayland"
  425. echo
  426. printf "Выберите графическую подсистему: "
  427. read doing
  428. case $doing in
  429. 1)
  430. pacman -S xorg-server
  431. ;;
  432. 2)
  433. pacman -S wayland
  434. ;;
  435. 3)
  436. pacman -S xorg-server-xwayland
  437. ;;
  438. esac' > x.sh
  439.  
  440. #Видеодрайверы
  441. echo 'echo
  442. lspci -k | grep -A 2 -E "(VGA|3D)"
  443. echo
  444. echo "1) Для самых новых видеокарт [Beta]"
  445. echo "2) GeForce 400 серии и новее [NVCx и новее]"
  446. echo "3) GeForce 400 серии и новее [NVCx и новее][lts]"
  447. echo "4) GeForce 8000/9000, ION и 100-300 серии [NV5x, NV8x, NV9x и NVAx]"
  448. echo "5) GeForce 8000/9000, ION и 100-300 серии [NV5x, NV8x, NV9x и NVAx][lts]"
  449. echo "6) GeForce 6000/7000 серии [NV4x и NV6x]"
  450. echo "7) GeForce 6000/7000 серии [NV4x и NV6x][lts]"
  451. echo "8) GeForce 5 FX серии [NV30-NV36] (поддерживается Xorg до версии 1.15)"
  452. echo "9) GeForce 2/3/4 MX/Ti серии [NV11, V17-NV28] (поддерживается Xorg до версии 1.12)"
  453. echo
  454. printf "Выберите подходящий драйвер для вашей видеокарты: "
  455. read doing
  456. case $doing in
  457. 1)
  458. pacman -S --noconfirm nvidia-beta
  459. ;;
  460. 2)
  461. pacman -S --noconfirm nvidia
  462. ;;
  463. 3)
  464. pacman -S --noconfirm nvidia-lts
  465. ;;
  466. 4)
  467. pacman -S --noconfirm nvidia-340xx
  468. ;;
  469. 5)
  470. pacman -S --noconfirm nvidia-340xx-lts
  471. ;;
  472. 6)
  473. pacman -S --noconfirm nvidia-304xx
  474. ;;
  475. 7)
  476. pacman -S --noconfirm nvidia-304xx-lts
  477. ;;
  478. 8)
  479. pacman -S --noconfirm nvidia-173xx-dkms
  480. ;;
  481. 9)
  482. pacman -S --noconfirm nvidia-96xx-dkms
  483. ;;
  484. esac' > nvidia.sh
  485.  
  486. echo 'echo "[Видеодрайверы]"
  487. echo "1) Intel"
  488. echo "2) AMD (недоступно)"
  489. echo "3) Nvidia"
  490. echo "4) Virtualbox"
  491. echo "5) VMware Workstation"
  492. echo
  493. printf "Выберите видеоадаптер: "
  494. read doing
  495. case $doing in
  496. 1)
  497. pacman -S --noconfirm xf86-video-intel
  498. ;;
  499. 2)
  500. again=y
  501. while [ "$again" = "y" ]
  502. do
  503. echo
  504. echo "недоступно"
  505. echo
  506. printf "Продолжить установку? [y/n] "
  507. read again
  508. ;;
  509. 3)
  510. sh nvidia.sh
  511. ;;
  512. 4)
  513. pacman -S --noconfirm xf86-video-mesa
  514. ;;
  515. 5)
  516. pacman -S --noconfirm xf86-video-vmware
  517. ;;
  518. esac' > drivers.sh
  519.  
  520. #Окружение рабочего стола
  521. echo 'echo
  522. echo "1) plasma - группа пакетов с опциональной установкой"
  523. echo "2) plasma-meta - метапакет группы plasma"
  524. echo "3) plasma-desktop - минимальная установка"
  525. echo
  526. printf "Выберите категорию: "
  527. read doing
  528. case $doing in
  529. 1)
  530. pacman -S plasma
  531. ;;
  532. 2)
  533. pacman -S plasma-meta
  534. ;;
  535. 3)
  536. pacman -S plasma-desktop
  537. ;;
  538. esac' > plasma.sh
  539.  
  540. echo 'echo
  541. echo "1) gnome - группа пакетов с опциональной установкой"
  542. echo "2) gnome-extra - окружение рабочего стола с дополнительными утилитами"
  543. echo "3) gnome-shell - минимальная установка"
  544. echo
  545. printf "Выберите категорию: "
  546. read doing
  547. case $doing in
  548. 1)
  549. pacman -S gnome
  550. ;;
  551. 2)
  552. pacman -S gnome-extra
  553. ;;
  554. 3)
  555. pacman -S gnome-shell
  556. ;;
  557. esac' > gnome.sh
  558.  
  559. echo 'echo
  560. echo "1) mate - группа пакетов с опциональной установкой"
  561. echo "2) mate-extra - окружение рабочего стола с дополнительными утилитами"
  562. echo "3) mate-base - минимальная установка"
  563. echo
  564. printf "Выберите категорию: "
  565. read doing
  566. case $doing in
  567. 1)
  568. pacman -S mate
  569. ;;
  570. 2)
  571. pacman -S mate-extra
  572. ;;
  573. 3)
  574. pacman -S marco mate-panel mate-session-manager
  575. ;;
  576. esac' > mate.sh
  577.  
  578. echo 'echo
  579. echo -n "Установить xfce4-goodies? [y/n] "
  580. read item
  581. case "$item" in
  582. y|Y)
  583. pacman -S xfce4-goodies
  584. ;;
  585. n|N)
  586. exit 0
  587. ;;
  588. *)
  589. ;;
  590. esac' > xfce4.sh
  591.  
  592. echo 'echo
  593. echo "1) lxde - группа пакетов с опциональной установкой"
  594. echo "2) lxde-gtk3 - GTK +3 версия (эксперементальная)"
  595. echo
  596. printf "Выберите категорию: "
  597. read doing
  598. case $doing in
  599. 1)
  600. pacman -S lxde
  601. ;;
  602. 2)
  603. pacman -S lxde-gtk3
  604. ;;
  605. esac' > lxde.sh
  606.  
  607. echo 'echo
  608. echo "[Окружение рабочего стола]"
  609. echo "1) KDE"
  610. echo "2) Gnome"
  611. echo "3) Cinnamon"
  612. echo "4) Mate"
  613. echo "5) XFCE"
  614. echo "6) LXDE"
  615. echo
  616. printf "Выберите окружение: "
  617. read doing
  618. case $doing in
  619. 1)
  620. sh plasma.sh
  621. ;;
  622. 2)
  623. sh gnome.sh
  624. ;;
  625. 3)
  626. pacman -S cinnamon
  627. ;;
  628. 4)
  629. sh mate.sh
  630. ;;
  631. 5)
  632. pacman -S xfce4
  633. sh xfce4.sh
  634. ;;
  635. 6)
  636. sh lxde.sh
  637. ;;
  638. esac' > de.sh
  639.  
  640. #Менеджер дисплеев
  641. echo 'echo
  642. echo "[Менеджер дисплея]"
  643. echo "1) SDDM"
  644. echo "2) GDM"
  645. echo "3) LightDM"
  646. echo "4) XDM"
  647. echo "5) LXDM"
  648. echo
  649. printf "Выберите окружение: "
  650. read doing
  651. case $doing in
  652. 1)
  653. pacman -S --noconfirm sddm
  654. systemctl enable sddm.service
  655. ;;
  656. 2)
  657. pacman -S --noconfirm gdm
  658. systemctl enable gdm.service
  659. ;;
  660. 3)
  661. pacman -S --noconfirm lightdm lightdm-gtk-greeter
  662. systemctl enable lightdm.service
  663. ;;
  664. 4)
  665. pacman -S --noconfirm xorg-xdm
  666. systemctl enable xdm.service
  667. ;;
  668. 5)
  669. pacman -S --noconfirm lxdm
  670. systemctl enable lxdm.service
  671. ;;
  672. esac' > dm.sh
  673.  
  674. #Bootloader
  675. echo 'echo
  676. echo -n "Установить os-prober? [y/n] "
  677. read item
  678. case "$item" in
  679. y|Y)
  680. pacman -S --noconfirm os-prober
  681. ;;
  682. n|N)
  683. exit 0
  684. ;;
  685. *)
  686. ;;
  687. esac' > os-prober.sh
  688.  
  689. echo 'echo
  690. echo "[Установка загрузчика]"
  691. echo "1) Grub"
  692. echo "2) Syslinux"
  693. echo
  694. printf "Выберите загрузчик: "
  695. read doing
  696. case $doing in
  697. 1)
  698. pacman -S --noconfirm grub
  699. echo
  700. lsblk /dev/sd*
  701. echo
  702. read -p "Введите имя устройства, на которое будет установлен загрузчик: " grub
  703. grub-install --target=i386-pc --recheck /dev/$grub
  704. grub-mkconfig -o /boot/grub/grub.cfg
  705. sh os-prober.sh
  706. ;;
  707. 2)
  708. pacman -S --noconfirm syslinux
  709. mkdir /boot/syslinux
  710. cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/
  711. extlinux --install /boot/syslinux
  712. echo
  713. lsblk /dev/sd*
  714. echo
  715. read -p "Введите имя устройства, на которое будет установлен загрузочный код Syslinux: " syslinux
  716. dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/$syslinux
  717. ;;
  718. esac' > boot.sh
  719.  
  720. #Chroot
  721. mount -o bind /dev /mnt/dev
  722. mount -t proc none /mnt/proc
  723. mount -o bind /sys /mnt/sys
  724. cp dns.sh /mnt/bin
  725. cp update.sh /mnt/bin
  726. cp locale.sh /mnt/bin
  727. cp vconsole.sh /mnt/bin
  728. cp tz.sh /mnt/bin
  729. cp time.sh /mnt/bin
  730. cp hostname.sh /mnt/bin
  731. cp net.sh /mnt/bin
  732. cp nm.sh /mnt/bin
  733. cp user.sh /mnt/bin
  734. cp x.sh /mnt/bin
  735. cp drivers.sh /mnt/bin
  736. cp de.sh /mnt/bin
  737. cp dm.sh /mnt/bin
  738. cp boot.sh /mnt/bin
  739. chmod +x /mnt/bin/dns.sh
  740. chmod +x /mnt/bin/update.sh
  741. chmod +x /mnt/bin/locale.sh
  742. chmod +x /mnt/bin/vconsole.sh
  743. chmod +x /mnt/bin/tz.sh
  744. chmod +x /mnt/bin/time.sh
  745. chmod +x /mnt/bin/hostname.sh
  746. chmod +x /mnt/bin/net.sh
  747. chmod +x /mnt/bin/nm.sh
  748. chmod +x /mnt/bin/user.sh
  749. chmod +x /mnt/bin/x.sh
  750. chmod +x /mnt/bin/drivers.sh
  751. chmod +x /mnt/bin/de.sh
  752. chmod +x /mnt/bin/dm.sh
  753. chmod +x /mnt/bin/boot.sh
  754. chroot /mnt /bin/dns.sh
  755. chroot /mnt /bin/update.sh
  756. chroot /mnt /bin/locale.sh
  757. chroot /mnt /bin/vconsole.sh
  758. chroot /mnt /bin/tz.sh
  759. chroot /mnt /bin/time.sh
  760. chroot /mnt /bin/hostname.sh
  761. chroot /mnt /bin/net.sh
  762. chroot /mnt /bin/nm.sh
  763. chroot /mnt /bin/user.sh
  764. chroot /mnt /bin/x.sh
  765. chroot /mnt /bin/drivers.sh
  766. chroot /mnt /bin/de.sh
  767. chroot /mnt /bin/dm.sh
  768. chroot /mnt /bin/boot.sh
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement