kurulum.sh 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260
  1. #!/bin/bash
  2. #
  3. # Milis Linux konsol kurulumu için Void Linux kurulum çatallaması
  4. # This installer forked from Void Linux installer for Milis Linux terminal based installation
  5. #
  6. # 2018 milisarge <milisarge@gmail.com>.
  7. # 2018 Aydin <yakar@live.com>
  8. #
  9. # 2012-2015 Juan Romero Pardines <xtraeme@Voidlinux.org>.
  10. # 2012 Dave Elusive <davehome@redthumb.info.tm>.
  11. #
  12. # All rights reserved.
  13. #
  14. # Redistribution and use in source and binary forms, with or without
  15. # modification, are permitted provided that the following conditions
  16. # are met:
  17. # 1. Redistributions of source code must retain the above copyright
  18. # notice, this list of conditions and the following disclaimer.
  19. # 2. Redistributions in binary form must reproduce the above copyright
  20. # notice, this list of conditions and the following disclaimer in the
  21. # documentation and/or other materials provided with the distribution.
  22. #
  23. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  24. # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  25. # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  26. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  27. # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  28. # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  29. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  30. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  31. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  32. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. #-
  34. DIZIN=`dirname $(readlink -f $0)`
  35. dil=${LANG/.*}
  36. [ -f "$DIZIN/diller/$dil.conf" ] && source "$DIZIN/diller/$dil.conf" || source "$DIZIN/diller/en_US.conf"
  37. # menülerin işlem görme durumları.
  38. HOSTNAME_YAPILDI=
  39. KEYBOARD_YAPILDI=
  40. LOCALE_YAPILDI=
  41. TIMEZONE_YAPILDI=
  42. ROOTPASSWORD_YAPILDI=
  43. USERLOGIN_YAPILDI=
  44. USERPASSWORD_YAPILDI=
  45. USERNAME_YAPILDI=
  46. USERGROUPS_YAPILDI=
  47. BOOTLOADER_YAPILDI=
  48. PARTITIONS_YAPILDI=
  49. FILESYSTEMS_YAPILDI=
  50. FORMAT_ONAY=
  51. YEBASLAT_ONAY=
  52. DOSYADAN_KURULUM=
  53. HEDEF=/mnt/target
  54. LOG=/dev/tty9
  55. if [ ! -z $1 ];then
  56. AYAR_DOSYASI=$1
  57. if [ -f $AYAR_DOSYASI ];then
  58. echo "$AYAR_DOSYASI $LANG_PROCESSING ......."
  59. FORMAT_ONAY="HAYIR"
  60. YEBASLAT_ONAY="HAYIR"
  61. DOSYADAN_KURULUM="EVET"
  62. fi
  63. else
  64. AYAR_DOSYASI=/tmp/.kurulum.conf
  65. if [ ! -f $AYAR_DOSYASI ]; then
  66. touch -f $AYAR_DOSYASI
  67. fi
  68. fi
  69. ANSWER=$(mktemp -t vinstall-XXXXXXXX || exit 1)
  70. TARGET_FSTAB=$(mktemp -t vinstall-fstab-XXXXXXXX || exit 1)
  71. MILIS_SURUM=$(cat /etc/milis-surum)
  72. CANLI_KULLANICI=$(cat /etc/canli_kullanici)
  73. trap "DIE" INT TERM QUIT
  74. # konsol log yazmasının kapatılması
  75. if [ -w /proc/sys/kernel/printk ]; then
  76. echo 0 >/proc/sys/kernel/printk
  77. fi
  78. # EFIli sistem tesbiti
  79. if [ -e /sys/firmware/efi/systab ]; then
  80. EFI_SYSTEM=1
  81. EFI_FW_BITS=$(cat /sys/firmware/efi/fw_platform_size)
  82. if [ $EFI_FW_BITS -eq 32 ]; then
  83. EFI_TARGET=i386-efi
  84. else
  85. EFI_TARGET=x86_64-efi
  86. fi
  87. fi
  88. # menü renkleri
  89. BLACK="\Z0"
  90. RED="\Z1"
  91. GREEN="\Z2"
  92. YELLOW="\Z3"
  93. BLUE="\Z4"
  94. MAGENTA="\Z5"
  95. CYAN="\Z6"
  96. WHITE="\Z7"
  97. BOLD="\Zb"
  98. REVERSE="\Zr"
  99. UNDERLINE="\Zu"
  100. RESET="\Zn"
  101. # menü pencere özellikleri
  102. MENULABEL="${BOLD}${LANG_MENULABEL}${RESET}"
  103. MENUSIZE="14 60 0"
  104. INPUTSIZE="8 60"
  105. MSGBOXSIZE="8 70"
  106. YESNOSIZE="$INPUTSIZE"
  107. WIDGET_SIZE="10 70"
  108. DIALOG() {
  109. rm -f $ANSWER
  110. dialog --colors --keep-tite --no-shadow --no-mouse \
  111. --backtitle "${BOLD}${WHITE}Milis Linux ${LANG_INSTALLATION} ($MILIS_SURUM)${RESET}" \
  112. --cancel-label "$LANG_BACK" --aspect 20 "$@" 2>$ANSWER
  113. return $?
  114. }
  115. INFOBOX() {
  116. dialog --colors --no-shadow --no-mouse \
  117. --backtitle "${BOLD}${WHITE}Milis Linux ${LANG_INSTALLATION} ($MILIS_SURUM)${RESET}" \
  118. --title "${TITLE}" --aspect 20 --infobox "$@"
  119. }
  120. DIE() {
  121. rval=$1
  122. [ -z "$rval" ] && rval=0
  123. clear
  124. rm -f $ANSWER $TARGET_FSTAB
  125. # printk yeniden aktif etme
  126. if [ -w /proc/sys/kernel/printk ]; then
  127. echo 4 >/proc/sys/kernel/printk
  128. fi
  129. umount_filesystems
  130. exit $rval
  131. }
  132. set_option() {
  133. if grep -Eq "^${1}.*" $AYAR_DOSYASI; then
  134. sed -i -e "/^${1}.*/d" $AYAR_DOSYASI
  135. fi
  136. echo "${1} ${2}" >>$AYAR_DOSYASI
  137. }
  138. get_option() {
  139. echo $(grep -E "^${1}.*" $AYAR_DOSYASI|sed -e "s|${1}||")
  140. }
  141. # ISO-639'e göre dil isimleri
  142. iso639_language() {
  143. case "$1" in
  144. aa) echo "Afar" ;;
  145. af) echo "Afrikaans" ;;
  146. an) echo "Aragonese" ;;
  147. ar) echo "Arabic" ;;
  148. ast) echo "Asturian" ;;
  149. be) echo "Belgian" ;;
  150. bg) echo "Bulgarian" ;;
  151. bhb) echo "Bhili" ;;
  152. br) echo "Breton" ;;
  153. bs) echo "Bosnian" ;;
  154. ca) echo "Catalan" ;;
  155. cs) echo "Czech" ;;
  156. cy) echo "Welsh" ;;
  157. da) echo "Danish" ;;
  158. de) echo "German" ;;
  159. el) echo "Greek" ;;
  160. en) echo "English" ;;
  161. es) echo "Spanish" ;;
  162. et) echo "Estonian" ;;
  163. eu) echo "Basque" ;;
  164. fi) echo "Finnish" ;;
  165. fo) echo "Faroese" ;;
  166. fr) echo "French" ;;
  167. ga) echo "Irish" ;;
  168. gd) echo "Scottish Gaelic" ;;
  169. gl) echo "Galician" ;;
  170. gv) echo "Manx" ;;
  171. he) echo "Hebrew" ;;
  172. hr) echo "Croatian" ;;
  173. hsb) echo "Upper Sorbian" ;;
  174. hu) echo "Hungarian" ;;
  175. id) echo "Indonesian" ;;
  176. is) echo "Icelandic" ;;
  177. it) echo "Italian" ;;
  178. iw) echo "Hebrew" ;;
  179. ja) echo "Japanese" ;;
  180. ka) echo "Georgian" ;;
  181. kk) echo "Kazakh" ;;
  182. kl) echo "Kalaallisut" ;;
  183. ko) echo "Korean" ;;
  184. ku) echo "Kurdish" ;;
  185. kw) echo "Cornish" ;;
  186. lg) echo "Ganda" ;;
  187. lt) echo "Lithuanian" ;;
  188. lv) echo "Latvian" ;;
  189. mg) echo "Malagasy" ;;
  190. mi) echo "Maori" ;;
  191. mk) echo "Macedonian" ;;
  192. ms) echo "Malay" ;;
  193. mt) echo "Maltese" ;;
  194. nb) echo "Norwegian Bokmål" ;;
  195. nl) echo "Dutch" ;;
  196. nn) echo "Norwegian Nynorsk" ;;
  197. oc) echo "Occitan" ;;
  198. om) echo "Oromo" ;;
  199. pl) echo "Polish" ;;
  200. pt) echo "Portugese" ;;
  201. ro) echo "Romanian" ;;
  202. ru) echo "Russian" ;;
  203. sk) echo "Slovak" ;;
  204. sl) echo "Slovenian" ;;
  205. so) echo "Somali" ;;
  206. sq) echo "Albanian" ;;
  207. st) echo "Southern Sotho" ;;
  208. sv) echo "Swedish" ;;
  209. tcy) echo "Tulu" ;;
  210. tg) echo "Tajik" ;;
  211. th) echo "Thai" ;;
  212. tl) echo "Tagalog" ;;
  213. tr) echo "Türkçe" ;;
  214. uk) echo "Ukrainian" ;;
  215. uz) echo "Uzbek" ;;
  216. wa) echo "Walloon" ;;
  217. xh) echo "Xhosa" ;;
  218. yi) echo "Yiddish" ;;
  219. zh) echo "Chinese" ;;
  220. zu) echo "Zulu" ;;
  221. *) echo "$1" ;;
  222. esac
  223. }
  224. # ISO-3166 ülke kodları yerel ayarlar için
  225. iso3166_country() {
  226. case "$1" in
  227. AD) echo "Andorra" ;;
  228. AE) echo "United Arab Emirates" ;;
  229. AL) echo "Albania" ;;
  230. AR) echo "Argentina" ;;
  231. AT) echo "Austria" ;;
  232. AU) echo "Australia" ;;
  233. BA) echo "Bonsia and Herzegovina" ;;
  234. BE) echo "Belgium" ;;
  235. BG) echo "Bulgaria" ;;
  236. BH) echo "Bahrain" ;;
  237. BO) echo "Bolivia" ;;
  238. BR) echo "Brazil" ;;
  239. BW) echo "Botswana" ;;
  240. BY) echo "Belarus" ;;
  241. CA) echo "Canada" ;;
  242. CH) echo "Switzerland" ;;
  243. CL) echo "Chile" ;;
  244. CN) echo "China" ;;
  245. CO) echo "Colombia" ;;
  246. CR) echo "Costa Rica" ;;
  247. CY) echo "Cyprus" ;;
  248. CZ) echo "Czech Republic" ;;
  249. DE) echo "Germany" ;;
  250. DJ) echo "Djibouti" ;;
  251. DK) echo "Denmark" ;;
  252. DO) echo "Dominican Republic" ;;
  253. DZ) echo "Algeria" ;;
  254. EC) echo "Ecuador" ;;
  255. EE) echo "Estonia" ;;
  256. EG) echo "Egypt" ;;
  257. ES) echo "Spain" ;;
  258. FI) echo "Finland" ;;
  259. FO) echo "Faroe Islands" ;;
  260. FR) echo "France" ;;
  261. GB) echo "Great Britain" ;;
  262. GE) echo "Georgia" ;;
  263. GL) echo "Greenland" ;;
  264. GR) echo "Greece" ;;
  265. GT) echo "Guatemala" ;;
  266. HK) echo "Hong Kong" ;;
  267. HN) echo "Honduras" ;;
  268. HR) echo "Croatia" ;;
  269. HU) echo "Hungary" ;;
  270. ID) echo "Indonesia" ;;
  271. IE) echo "Ireland" ;;
  272. IL) echo "Israel" ;;
  273. IN) echo "India" ;;
  274. IQ) echo "Iraq" ;;
  275. IS) echo "Iceland" ;;
  276. IT) echo "Italy" ;;
  277. JO) echo "Jordan" ;;
  278. JP) echo "Japan" ;;
  279. KE) echo "Kenya" ;;
  280. KR) echo "Korea, Republic of" ;;
  281. KW) echo "Kuwait" ;;
  282. KZ) echo "Kazakhstan" ;;
  283. LB) echo "Lebanon" ;;
  284. LT) echo "Lithuania" ;;
  285. LU) echo "Luxembourg" ;;
  286. LV) echo "Latvia" ;;
  287. LY) echo "Libya" ;;
  288. MA) echo "Morocco" ;;
  289. MG) echo "Madagascar" ;;
  290. MK) echo "Macedonia" ;;
  291. MT) echo "Malta" ;;
  292. MX) echo "Mexico" ;;
  293. MY) echo "Malaysia" ;;
  294. NI) echo "Nicaragua" ;;
  295. NL) echo "Netherlands" ;;
  296. NO) echo "Norway" ;;
  297. NZ) echo "New Zealand" ;;
  298. OM) echo "Oman" ;;
  299. PA) echo "Panama" ;;
  300. PE) echo "Peru" ;;
  301. PH) echo "Philippines" ;;
  302. PL) echo "Poland" ;;
  303. PR) echo "Puerto Rico" ;;
  304. PT) echo "Portugal" ;;
  305. PY) echo "Paraguay" ;;
  306. QA) echo "Qatar" ;;
  307. RO) echo "Romania" ;;
  308. RU) echo "Russian Federation" ;;
  309. SA) echo "Saudi Arabia" ;;
  310. SD) echo "Sudan" ;;
  311. SE) echo "Sweden" ;;
  312. SG) echo "Singapore" ;;
  313. SI) echo "Slovenia" ;;
  314. SK) echo "Slovakia" ;;
  315. SO) echo "Somalia" ;;
  316. SV) echo "El Salvador" ;;
  317. SY) echo "Syria" ;;
  318. TH) echo "Thailand" ;;
  319. TJ) echo "Tajikistan" ;;
  320. TN) echo "Tunisia" ;;
  321. TR) echo "Türkiye" ;;
  322. TW) echo "Taiwan" ;;
  323. UA) echo "Ukraine" ;;
  324. UG) echo "Uganda" ;;
  325. US) echo "United States of America" ;;
  326. UY) echo "Uruguay" ;;
  327. UZ) echo "Uzbekistan" ;;
  328. VE) echo "Venezuela" ;;
  329. YE) echo "Yemen" ;;
  330. ZA) echo "South Africa" ;;
  331. ZW) echo "Zimbabwe" ;;
  332. *) echo "$1" ;;
  333. esac
  334. }
  335. show_disks() {
  336. local dev size sectorsize gbytes
  337. # IDE
  338. for dev in $(ls /sys/block|grep -E '^hd'); do
  339. if [ "$(cat /sys/block/$dev/device/media)" = "disk" ]; then
  340. # sektör, alan bilgisinin bulunması;
  341. echo "/dev/$dev"
  342. size=$(cat /sys/block/$dev/size)
  343. sectorsize=$(cat /sys/block/$dev/queue/hw_sector_size)
  344. gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
  345. echo "size:${gbytes}GB;sector_size:$sectorsize"
  346. fi
  347. done
  348. # SATA/SCSI ve Virtual diskleri (virtio)
  349. for dev in $(ls /sys/block|grep -E '^([sv]|xv)d|mmcblk|nvme'); do
  350. echo "/dev/$dev"
  351. size=$(cat /sys/block/$dev/size)
  352. sectorsize=$(cat /sys/block/$dev/queue/hw_sector_size)
  353. gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
  354. echo "size:${gbytes}GB;sector_size:$sectorsize"
  355. done
  356. # cciss(4) aygıtları
  357. for dev in $(ls /dev/cciss 2>/dev/null|grep -E 'c[0-9]d[0-9]$'); do
  358. echo "/dev/cciss/$dev"
  359. size=$(cat /sys/block/cciss\!$dev/size)
  360. sectorsize=$(cat /sys/block/cciss\!$dev/queue/hw_sector_size)
  361. gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
  362. echo "size:${gbytes}GB;sector_size:$sectorsize"
  363. done
  364. }
  365. show_partitions() {
  366. local dev fstype fssize p part
  367. set -- $(show_disks)
  368. while [ $# -ne 0 ]; do
  369. disk=$(basename $1)
  370. shift 2
  371. # ATA/SCSI/SATA
  372. for p in /sys/block/$disk/$disk*; do
  373. if [ -d $p ]; then
  374. part=$(basename $p)
  375. fstype=$(lsblk -nfr /dev/$part|awk '{print $2}'|head -1)
  376. [ "$fstype" = "iso9660" ] && continue
  377. [ "$fstype" = "crypto_LUKS" ] && continue
  378. [ "$fstype" = "LVM2_member" ] && continue
  379. fssize=$(lsblk -nr /dev/$part|awk '{print $4}'|head -1)
  380. echo "/dev/$part"
  381. echo "size:${fssize:-unknown};fstype:${fstype:-none}"
  382. fi
  383. done
  384. done
  385. # Device Mapper
  386. for p in /dev/mapper/*; do
  387. part=$(basename $p)
  388. [ "${part}" = "live-rw" ] && continue
  389. [ "${part}" = "live-base" ] && continue
  390. [ "${part}" = "control" ] && continue
  391. fstype=$(lsblk -nfr $p|awk '{print $2}'|head -1)
  392. fssize=$(lsblk -nr $p|awk '{print $4}'|head -1)
  393. echo "${p}"
  394. echo "size:${fssize:-unknown};fstype:${fstype:-none}"
  395. done
  396. # Software raid (md)
  397. for p in $(ls -d /dev/md* 2>/dev/null|grep '[0-9]'); do
  398. part=$(basename $p)
  399. if cat /proc/mdstat|grep -qw $part; then
  400. fstype=$(lsblk -nfr /dev/$part|awk '{print $2}')
  401. [ "$fstype" = "crypto_LUKS" ] && continue
  402. [ "$fstype" = "LVM2_member" ] && continue
  403. fssize=$(lsblk -nr /dev/$part|awk '{print $4}')
  404. echo "$p"
  405. echo "size:${fssize:-unknown};fstype:${fstype:-none}"
  406. fi
  407. done
  408. # cciss(4) aygıtları
  409. for part in $(ls /dev/cciss 2>/dev/null|grep -E 'c[0-9]d[0-9]p[0-9]+'); do
  410. fstype=$(lsblk -nfr /dev/cciss/$part|awk '{print $2}')
  411. [ "$fstype" = "crypto_LUKS" ] && continue
  412. [ "$fstype" = "LVM2_member" ] && continue
  413. fssize=$(lsblk -nr /dev/cciss/$part|awk '{print $4}')
  414. echo "/dev/cciss/$part"
  415. echo "size:${fssize:-unknown};fstype:${fstype:-none}"
  416. done
  417. if [ -e /sbin/lvs ]; then
  418. # LVM
  419. lvs --noheadings|while read lvname vgname perms size; do
  420. echo "/dev/mapper/${vgname}-${lvname}"
  421. echo "size:${size};fstype:lvm"
  422. done
  423. fi
  424. }
  425. menu_filesystems() {
  426. local dev fstype fssize mntpoint reformat
  427. while true; do
  428. DIALOG --ok-label "$LANG_CHANGE" --cancel-label "$LANG_DONE" \
  429. --title " $LANG_SELECTPARTITION " --menu "$MENULABEL" \
  430. ${MENUSIZE} $(show_partitions)
  431. [ $? -ne 0 ] && return
  432. dev=$(cat $ANSWER)
  433. DIALOG --title " `printf "$LANG_SELECTFILESYSTEM" "$dev"` " \
  434. --menu "$MENULABEL" ${MENUSIZE} \
  435. "btrfs" "Oracle Btrfs" \
  436. "ext2" "Linux ext2 (no journaling)" \
  437. "ext3" "Linux ext3 (journal)" \
  438. "ext4" "Linux ext4 (journal)" \
  439. "f2fs" "Flash-Friendly Filesystem" \
  440. "swap" "Linux swap" \
  441. "vfat" "FAT32" \
  442. "xfs" "SGI's XFS"
  443. if [ $? -eq 0 ]; then
  444. fstype=$(cat $ANSWER)
  445. else
  446. continue
  447. fi
  448. if [ "$fstype" != "swap" ]; then
  449. DIALOG --inputbox "`printf "$LANG_MOUNTPOINT" "$dev"`:" ${INPUTSIZE}
  450. if [ $? -eq 0 ]; then
  451. mntpoint=$(cat $ANSWER)
  452. elif [ $? -eq 1 ]; then
  453. continue
  454. fi
  455. else
  456. mntpoint=swap
  457. fi
  458. DIALOG --yesno "`printf "$LANG_NEWFILESYSTEM" "$dev"`" ${YESNOSIZE}
  459. if [ $? -eq 0 ]; then
  460. reformat=1
  461. elif [ $? -eq 1 ]; then
  462. reformat=0
  463. else
  464. continue
  465. fi
  466. fssize=$(lsblk -nr $dev|awk '{print $4}')
  467. set -- "$fstype" "$fssize" "$mntpoint" "$reformat"
  468. if [ -n "$1" -a -n "$2" -a -n "$3" -a -n "$4" ]; then
  469. local bdev=$(basename $dev)
  470. local ddev=$(basename $(dirname $dev))
  471. if [ "$ddev" != "dev" ]; then
  472. sed -i -e "/^MOUNTPOINT \/dev\/${ddev}\/${bdev}.*/d" $AYAR_DOSYASI
  473. else
  474. sed -i -e "/^MOUNTPOINT \/dev\/${bdev}.*/d" $AYAR_DOSYASI
  475. fi
  476. echo "MOUNTPOINT $dev $1 $2 $3 $4" >>$AYAR_DOSYASI
  477. fi
  478. done
  479. }
  480. menu_partitions() {
  481. DIALOG --title " $LANG_SELECTDISKPART " \
  482. --menu "$MENULABEL" ${MENUSIZE} $(show_disks)
  483. if [ $? -eq 0 ]; then
  484. local device=$(cat $ANSWER)
  485. DIALOG --title "`printf "$LANG_MODPARTTABLE" "$device"`" --msgbox "`printf "$LANG_PARTITIONDIALOG" "${BOLD}" "$device" "${RESET}" "${BOLD}" "${RESET}" "${BOLD}" "${RESET}"`" 18 80
  486. if [ $? -eq 0 ]; then
  487. while true; do
  488. clear; cfdisk $device; PARTITIONS_YAPILDI=1
  489. break
  490. done
  491. else
  492. return
  493. fi
  494. fi
  495. }
  496. menu_keymap() {
  497. local _keymaps="$(find /lib/kbd/keymaps/ -type f -iname "*.map.gz" -printf "%f\n" | sed 's|.map.gz||g' | sort)"
  498. local _KEYMAPS=
  499. for f in ${_keymaps}; do
  500. _KEYMAPS="${_KEYMAPS} ${f} -"
  501. done
  502. while true; do
  503. DIALOG --title " $LANG_SELKEYMAP " --menu "$MENULABEL" 14 70 14 ${_KEYMAPS}
  504. if [ $? -eq 0 ]; then
  505. set_option KEYMAP "$(cat $ANSWER)"
  506. loadkeys "$(cat $ANSWER)"
  507. KEYBOARD_YAPILDI=1
  508. break
  509. else
  510. return
  511. fi
  512. done
  513. }
  514. set_keymap() {
  515. local KEYMAP=$(get_option KEYMAP)
  516. if [ -f /etc/vconsole.conf ]; then
  517. sed -i -e "s|KEYMAP=.*|KEYMAP=$KEYMAP|g" $HEDEF/etc/vconsole.conf
  518. else
  519. echo "KEYMAP=$KEYMAP" > $HEDEF/etc/vconsole.conf
  520. fi
  521. }
  522. menu_locale() {
  523. local _locales="$(locale -a)"
  524. local LOCALES ISO639 ISO3166
  525. local TMPFILE=$(mktemp -t vinstall-XXXXXXXX || exit 1)
  526. INFOBOX "$LANG_SCANLOCALES ..." 4 60
  527. for f in ${_locales}; do
  528. eval $(echo $f | awk 'BEGIN { FS="." } \
  529. { FS="_"; split($1, a); printf "ISO639=%s ISO3166=%s\n", a[1], a[2] }')
  530. echo "$f|$(iso639_language $ISO639) ($(iso3166_country $ISO3166))|" >> $TMPFILE
  531. done
  532. clear
  533. # ISO-639^e göre dil isimlerinin sıralanması
  534. LOCALES=$(sort -t '|' -k 2 < $TMPFILE | xargs | sed -e's/| /|/g')
  535. rm -f $TMPFILE
  536. while true; do
  537. (IFS="|"; DIALOG --title " $LANG_SELLOCAL " --menu "$MENULABEL" 18 70 18 ${LOCALES})
  538. if [ $? -eq 0 ]; then
  539. set_option LOCALE "$(cat $ANSWER)"
  540. LOCALE_YAPILDI=1
  541. break
  542. else
  543. return
  544. fi
  545. done
  546. }
  547. set_locale() {
  548. local LOCALE=$(get_option LOCALE)
  549. rm -rf $HEDEF/etc/locale.conf
  550. #sed -i -e "s|LANG=.*|LANG=$LOCALE|g" $HEDEF/etc/locale.conf
  551. echo "LANG=$LOCALE" > $HEDEF/etc/locale.conf
  552. echo "LC_ALL=$LOCALE" >> $HEDEF/etc/locale.conf
  553. echo "LANGUAGE=$LOCALE" >> $HEDEF/etc/locale.conf
  554. }
  555. menu_timezone() {
  556. local _tzones="$(cd /usr/share/zoneinfo; find Africa/ America/ Antarctica/ Arctic/ Asia/ Atlantic/ Australia/ Europe/ Indian/ Pacific/ posix/ -type f | sort)"
  557. local _TIMEZONES=
  558. for f in ${_tzones}; do
  559. _TIMEZONES="${_TIMEZONES} ${f} -"
  560. done
  561. while true; do
  562. DIALOG --title " $LANG_SELTZONE " --menu "$MENULABEL" 14 70 14 ${_TIMEZONES}
  563. if [ $? -eq 0 ]; then
  564. set_option TIMEZONE "$(cat $ANSWER)"
  565. TIMEZONE_YAPILDI=1
  566. break
  567. else
  568. return
  569. fi
  570. done
  571. }
  572. set_timezone() {
  573. local TIMEZONE="$(get_option TIMEZONE)"
  574. rm -f $HEDEF/etc/localtime
  575. ln -s /usr/share/zoneinfo/$TIMEZONE $HEDEF/etc/localtime
  576. }
  577. menu_hostname() {
  578. while true; do
  579. DIALOG --inputbox "$LANG_SETHOST:" ${INPUTSIZE}
  580. if [ $? -eq 0 ]; then
  581. set_option HOSTNAME "$(cat $ANSWER)"
  582. HOSTNAME_YAPILDI=1
  583. break
  584. else
  585. return
  586. fi
  587. done
  588. }
  589. set_hostname() {
  590. #echo $(get_option HOSTNAME) > $HEDEF/etc/hostname
  591. echo "127.0.0.1 $(get_option HOSTNAME)" >> /etc/hosts
  592. sed -i -e "s|HOSTNAME=.*|HOSTNAME= $(get_option HOSTNAME)|g" $HEDEF/etc/sysconfig/network
  593. }
  594. menu_rootpassword() {
  595. local _firstpass _secondpass _desc
  596. while true; do
  597. if [ -z "${_firstpass}" ]; then
  598. _desc="$LANG_ROOTPW"
  599. else
  600. _desc="$LANG_ROOTPWAGAIN"
  601. fi
  602. DIALOG --insecure --passwordbox "${_desc}" ${INPUTSIZE}
  603. if [ $? -eq 0 ]; then
  604. if [ -z "${_firstpass}" ]; then
  605. _firstpass="$(cat $ANSWER)"
  606. else
  607. _secondpass="$(cat $ANSWER)"
  608. fi
  609. if [ -n "${_firstpass}" -a -n "${_secondpass}" ]; then
  610. if [ "${_firstpass}" != "${_secondpass}" ]; then
  611. INFOBOX "$LANG_PWNOTMATCH" 6 60
  612. unset _firstpass _secondpass
  613. sleep 2 && clear && continue
  614. fi
  615. set_option ROOTPASSWORD "${_firstpass}"
  616. ROOTPASSWORD_YAPILDI=1
  617. break
  618. fi
  619. else
  620. return
  621. fi
  622. done
  623. }
  624. set_rootpassword() {
  625. echo "root:$(get_option ROOTPASSWORD)" | chpasswd -R $HEDEF -c SHA512
  626. }
  627. menu_useraccount() {
  628. local _firstpass _secondpass _desc
  629. local _groups _status _group _checklist
  630. local _preset
  631. while true; do
  632. _preset=$(get_option USERLOGIN)
  633. [ -z "$_preset" ] && _preset=""
  634. DIALOG --inputbox "$LANG_LOGINNAME:" ${INPUTSIZE} "$_preset"
  635. if [ $? -eq 0 ]; then
  636. set_option USERLOGIN "$(cat $ANSWER)"
  637. USERLOGIN_YAPILDI=1
  638. break
  639. else
  640. return
  641. fi
  642. done
  643. while true; do
  644. _preset=$(get_option USERNAME)
  645. [ -z "$_preset" ] && _preset=""
  646. DIALOG --inputbox "$LANG_USERNAME '$(get_option USERLOGIN)' :" \
  647. ${INPUTSIZE} "$_preset"
  648. if [ $? -eq 0 ]; then
  649. set_option USERNAME "$(cat $ANSWER)"
  650. USERNAME_YAPILDI=1
  651. break
  652. else
  653. return
  654. fi
  655. done
  656. while true; do
  657. if [ -z "${_firstpass}" ]; then
  658. _desc="$LANG_PASSWORD '$(get_option USERLOGIN)'"
  659. else
  660. _desc="$LANG_PASSWORDAGAIN '$(get_option USERLOGIN)'"
  661. fi
  662. DIALOG --insecure --passwordbox "${_desc}" ${INPUTSIZE}
  663. if [ $? -eq 0 ]; then
  664. if [ -z "${_firstpass}" ]; then
  665. _firstpass="$(cat $ANSWER)"
  666. else
  667. _secondpass="$(cat $ANSWER)"
  668. fi
  669. if [ -n "${_firstpass}" -a -n "${_secondpass}" ]; then
  670. if [ "${_firstpass}" != "${_secondpass}" ]; then
  671. INFOBOX "$LANG_PWNOTMATCH" 6 60
  672. unset _firstpass _secondpass
  673. sleep 2 && clear && continue
  674. fi
  675. set_option USERPASSWORD "${_firstpass}"
  676. USERPASSWORD_YAPILDI=1
  677. break
  678. fi
  679. else
  680. return
  681. fi
  682. done
  683. #_groups="wheel,audio,video,floppy,cdrom,optical,kvm"
  684. _groups="users,disk,network,floppy,fuse,video,lp,tty,audio,cdrom,scanner,adm,vboxusers,wheel"
  685. while true; do
  686. _desc="$LANG_GMEMLOGIN '$(get_option USERLOGIN)':"
  687. for _group in $(cat /etc/group); do
  688. _gid="$(echo ${_group} | cut -d: -f3)"
  689. _group="$(echo ${_group} | cut -d: -f1)"
  690. _status="$(echo ${_groups} | grep -w ${_group})"
  691. if [ -z "${_status}" ]; then
  692. _status=off
  693. else
  694. _status=on
  695. fi
  696. if [ -z "${_checklist}" ]; then
  697. _checklist="${_group} ${_group}:${_gid} ${_status}"
  698. else
  699. _checklist="${_checklist} ${_group} ${_group}:${_gid} ${_status}"
  700. fi
  701. done
  702. DIALOG --no-tags --checklist "${_desc}" 20 60 18 ${_checklist}
  703. if [ $? -eq 0 ]; then
  704. set_option USERGROUPS $(cat $ANSWER | sed -e's| |,|g')
  705. USERGROUPS_YAPILDI=1
  706. break
  707. else
  708. return
  709. fi
  710. done
  711. }
  712. set_useraccount() {
  713. [ -z "$USERLOGIN_YAPILDI" ] && return
  714. [ -z "$USERPASSWORD_YAPILDI" ] && return
  715. [ -z "$USERNAME_YAPILDI" ] && return
  716. [ -z "$USERGROUPS_YAPILDI" ] && return
  717. useradd -R $HEDEF -m -G $(get_option USERGROUPS) \
  718. -c "$(get_option USERNAME)" $(get_option USERLOGIN)
  719. echo "$(get_option USERLOGIN):$(get_option USERPASSWORD)" | \
  720. chpasswd -R $HEDEF -c SHA512
  721. }
  722. menu_bootloader() {
  723. while true; do
  724. DIALOG --title " $LANG_BOOTLOADER" \
  725. --menu "$MENULABEL" ${MENUSIZE} $(show_disks) none "$LANG_BOOTLOTHER"
  726. if [ $? -eq 0 ]; then
  727. set_option BOOTLOADER "$(cat $ANSWER)"
  728. BOOTLOADER_YAPILDI=1
  729. break
  730. else
  731. return
  732. fi
  733. done
  734. while true; do
  735. DIALOG --yesno "$LANG_BOOTLGRAPH" ${YESNOSIZE}
  736. if [ $? -eq 0 ]; then
  737. set_option TEXTCONSOLE 0
  738. break
  739. elif [ $? -eq 1 ]; then
  740. set_option TEXTCONSOLE 1
  741. break
  742. else
  743. return
  744. fi
  745. done
  746. }
  747. set_bootloader() {
  748. local dev=$(get_option BOOTLOADER) grub_args=
  749. # grub için plymouth tamiri
  750. chroot $HEDEF tamir_grub_plymouth
  751. if [ "$dev" = "none" ]; then return; fi
  752. # efi sistem ve efivar kontrolü
  753. if [ -n "$EFI_SYSTEM" ]; then
  754. grub_args="--target=$EFI_TARGET --efi-directory=/boot/efi --bootloader-id=Milis_grub --recheck"
  755. fi
  756. echo "`printf "$LANG_GRUBINST" "$grub_args $dev"`" >$LOG
  757. chroot $HEDEF grub-install $grub_args $dev >$LOG 2>&1
  758. if [ $? -ne 0 ]; then
  759. DIALOG --msgbox "`printf "$LANG_GRUBFAIL" "${BOLD}${RED}" "${RESET}" "$dev" "$LOG"`" ${MSGBOXSIZE}
  760. DIE 1
  761. fi
  762. echo "`printf "$LANG_GRUBMKCONF" "$HEDEF"`" >$LOG
  763. chroot $HEDEF grub-mkconfig -o /boot/grub/grub.cfg >$LOG 2>&1
  764. if [ $? -ne 0 ]; then
  765. DIALOG --msgbox "`printf "$LANG_GRUBMKCONFFAIL" "${BOLD}${RED}" "${RESET}" "$LOG"`" ${MSGBOXSIZE}
  766. DIE 1
  767. fi
  768. }
  769. validate_filesystems() {
  770. local mnts dev size fstype mntpt mkfs rootfound fmt
  771. local usrfound efi_system_partition
  772. unset TARGETFS
  773. mnts=$(grep -E '^MOUNTPOINT.*' $AYAR_DOSYASI)
  774. set -- ${mnts}
  775. while [ $# -ne 0 ]; do
  776. fmt=""
  777. dev=$2; fstype=$3; size=$4; mntpt="$5"; mkfs=$6
  778. shift 6
  779. if [ "$mntpt" = "/" ]; then
  780. rootfound=1
  781. elif [ "$mntpt" = "/usr" ]; then
  782. usrfound=1
  783. elif [ "$fstype" = "vfat" -a "$mntpt" = "/boot/efi" ]; then
  784. efi_system_partition=1
  785. fi
  786. if [ "$mkfs" -eq 1 ]; then
  787. fmt="$LANG_NEWFSYSTEM: "
  788. fi
  789. if [ -z "$TARGETFS" ]; then
  790. TARGETFS="`printf "$LANG_MOUNTEDON" "${fmt}$dev" "$size" "$mntpt" "${fstype}"`"
  791. else
  792. TARGETFS="`printf "$LANG_MOUNTEDON" "${TARGETFS}${fmt}${dev}" "$size" "$mntpt" "${fstype}"`"
  793. fi
  794. done
  795. if [ -z "$rootfound" ]; then
  796. DIALOG --msgbox "`printf "$LANG_FSYSTEMNOTSET" "${BOLD}${RED}" "${RESET}" `" ${MSGBOXSIZE}
  797. return 1
  798. elif [ -n "$usrfound" ]; then
  799. DIALOG --msgbox "`printf "$LANG_FSYSNOTSUPPORTED" "${BOLD}${RED}" "${RESET}"`" ${MSGBOXSIZE}
  800. return 1
  801. elif [ -n "$EFI_SYSTEM" -a -z "$efi_system_partition" ]; then
  802. DIALOG --msgbox "`printf "$LANG_FSYSEFINOTSET" "${BOLD}${RED}" "${RESET}"`" ${MSGBOXSIZE}
  803. fi
  804. FILESYSTEMS_YAPILDI=1
  805. }
  806. create_filesystems() {
  807. local mnts dev mntpt fstype fspassno mkfs size rv uuid
  808. mnts=$(grep -E '^MOUNTPOINT.*' $AYAR_DOSYASI)
  809. set -- ${mnts}
  810. while [ $# -ne 0 ]; do
  811. dev=$2; fstype=$3; mntpt="$5"; mkfs=$6
  812. shift 6
  813. # swap bölümleme
  814. if [ "$fstype" = "swap" ]; then
  815. swapoff $dev >/dev/null 2>&1
  816. if [ "$mkfs" -eq 1 ]; then
  817. mkswap $dev >$LOG 2>&1
  818. if [ $? -ne 0 ]; then
  819. DIALOG --msgbox "`printf "$LANG_SWAPFAIL" "${BOLD}${RED}" "${RESET}" "$dev" "$LOG"`" ${MSGBOXSIZE}
  820. DIE 1
  821. fi
  822. fi
  823. swapon $dev >$LOG 2>&1
  824. if [ $? -ne 0 ]; then
  825. DIALOG --msgbox "`printf "$LANG_SWAPERROR" "${BOLD}${RED}" "${RESET}" "$dev" "$LOG"`" ${MSGBOXSIZE}
  826. DIE 1
  827. fi
  828. # hedef fstaba girdi eklenmesi
  829. uuid=$(blkid -o value -s UUID "$dev")
  830. echo "UUID=$uuid none swap sw 0 0" >>$TARGET_FSTAB
  831. continue
  832. fi
  833. if [ "$mkfs" -eq 1 ]; then
  834. case "$fstype" in
  835. btrfs) MKFS="mkfs.btrfs -f"; modprobe btrfs >$LOG 2>&1;;
  836. ext2) MKFS="mke2fs -F"; modprobe ext2 >$LOG 2>&1;;
  837. ext3) MKFS="mke2fs -F -j"; modprobe ext3 >$LOG 2>&1;;
  838. ext4) MKFS="mke2fs -F -t ext4"; modprobe ext4 >$LOG 2>&1;;
  839. f2fs) MKFS="mkfs.f2fs"; modprobe f2fs >$LOG 2>&1;;
  840. vfat) MKFS="mkfs.vfat -F32"; modprobe vfat >$LOG 2>&1;;
  841. xfs) MKFS="mkfs.xfs -f"; modprobe xfs >$LOG 2>&1;;
  842. esac
  843. TITLE="`printf "$LANG_ERRLOGTITLE" "$LOG"`"
  844. INFOBOX "`printf "$LANG_CREATEFSYS" "$fstype" "$dev" "$mntpt"`" 8 60
  845. echo "`printf "$LANG_CREATEMKFS" "$MKFS $dev"`" >$LOG
  846. # hedef disk bölümü bağlı olabilir, çözmek için
  847. mount | grep -q "$dev" && umount -l $dev
  848. $MKFS $dev >$LOG 2>&1; rv=$?
  849. if [ $rv -ne 0 ]; then
  850. DIALOG --msgbox "`printf "$LANG_CREATEFAIL" "${BOLD}${RED}" "${RESET}" "$fstype" "$dev" "$LOG"`" ${MSGBOXSIZE}
  851. DIE 1
  852. fi
  853. fi
  854. # rootfs nin bağlanması
  855. [ "$mntpt" != "/" ] && continue
  856. mkdir -p $HEDEF
  857. echo "`printf "$LANG_MOUNTINGON" "$dev" "$mntpt" "$fstype"`" >$LOG
  858. mount -t $fstype $dev $HEDEF >$LOG 2>&1
  859. if [ $? -ne 0 ]; then
  860. DIALOG --msgbox "`printf "$LANG_MOUNTINGERR" "${BOLD}${RED}" "${RESET}" "$dev" "${mntpt}" "$LOG"`" ${MSGBOXSIZE}
  861. DIE 1
  862. fi
  863. # hedef fstaba girdi eklenmesi
  864. uuid=$(blkid -o value -s UUID "$dev")
  865. if [ "$fstype" = "f2fs" ]; then
  866. fspassno=0
  867. else
  868. fspassno=1
  869. fi
  870. echo "UUID=$uuid $mntpt $fstype defaults 0 $fspassno" >>$TARGET_FSTAB
  871. done
  872. # dosya sistemlerinin hedefe bağlanması
  873. mnts=$(grep -E '^MOUNTPOINT.*' $AYAR_DOSYASI)
  874. set -- ${mnts}
  875. while [ $# -ne 0 ]; do
  876. dev=$2; fstype=$3; mntpt="$5"
  877. shift 6
  878. [ "$mntpt" = "/" -o "$fstype" = "swap" ] && continue
  879. mkdir -p ${HEDEF}${mntpt}
  880. echo "$LANG_MOUNTINGON" >$LOG
  881. mount -t $fstype $dev ${HEDEF}${mntpt} >$LOG 2>&1
  882. if [ $? -ne 0 ]; then
  883. DIALOG --msgbox "$LANG_MOUNTINGERR" ${MSGBOXSIZE}
  884. DIE
  885. fi
  886. # hedef fstaba girdi eklenmesi
  887. uuid=$(blkid -o value -s UUID "$dev")
  888. echo "UUID=$uuid $mntpt $fstype defaults 0 2" >>$TARGET_FSTAB
  889. done
  890. }
  891. mount_filesystems() {
  892. for f in sys proc dev; do
  893. [ ! -d $HEDEF/$f ] && mkdir $HEDEF/$f
  894. echo "Mounting $HEDEF/$f..." >$LOG
  895. mount --bind /$f $HEDEF/$f >$LOG 2>&1
  896. done
  897. }
  898. umount_filesystems() {
  899. local f
  900. for f in sys/fs/fuse/connections sys proc dev; do
  901. echo "Unmounting $HEDEF/$f..." >$LOG
  902. umount $HEDEF/$f >$LOG 2>&1
  903. done
  904. local mnts="$(grep -E '^MOUNTPOINT.*$' $AYAR_DOSYASI)"
  905. set -- ${mnts}
  906. while [ $# -ne 0 ]; do
  907. local dev=$2; local fstype=$3; local mntpt=$5
  908. shift 6
  909. if [ "$fstype" = "swap" ]; then
  910. echo "`printf "$LANG_SWAPDISABLING" "$dev" `" >$LOG
  911. swapoff $dev >$LOG 2>&1
  912. continue
  913. fi
  914. if [ "$mntpt" != "/" ]; then
  915. echo "`printf "$LANG_SWAPUNMOUNTING" "$HEDEF/$mntpt" `" >$LOG
  916. umount $HEDEF/$mntpt >$LOG 2>&1
  917. fi
  918. done
  919. echo "`printf "$LANG_SWAPUNMOUNTING" "$HEDEF"`" >$LOG
  920. umount $HEDEF >$LOG 2>&1
  921. }
  922. log_and_count() {
  923. local progress whole tenth
  924. while read line; do
  925. #echo "$line" >$LOG
  926. copy_count=$((copy_count + 1))
  927. progress=$((1000 * copy_count / copy_total))
  928. if [ "$progress" != "$copy_progress" ]; then
  929. whole=$((progress / 10))
  930. tenth=$((progress % 10))
  931. printf "$LANG_PROGRESS" $whole $tenth $copy_count $copy_total
  932. copy_progress=$progress
  933. fi
  934. echo "$copy_progress" >$LOG
  935. done
  936. }
  937. copy_rootfs() {
  938. local tar_in="--create --one-file-system --xattrs"
  939. TITLE="`printf "$LANG_ERRLOGTITLE" "$LOG"`"
  940. INFOBOX "$LANG_COUNTFILES" 4 60
  941. copy_total=$(tar ${tar_in} -v -f /dev/null / 2>/dev/null | wc -l)
  942. export copy_total copy_count=0 copy_progress=
  943. clear
  944. tar ${tar_in} -f - / 2>/dev/null | \
  945. tar --extract --xattrs --xattrs-include='*' --preserve-permissions -v -f - -C $HEDEF | \
  946. log_and_count | \
  947. DIALOG --title "${TITLE}" \
  948. --progressbox "$LANG_CPLIVEIMG" 5 60
  949. if [ $? -ne 0 ]; then
  950. DIE 1
  951. fi
  952. unset copy_total copy_count copy_percent
  953. }
  954. install_packages() {
  955. local _grub= _syspkg=
  956. if [ -n "$EFI_SYSTEM" ]; then
  957. if [ $EFI_FW_BITS -eq 32 ]; then
  958. _grub="grub-i386-efi"
  959. else
  960. _grub="grub-x86_64-efi"
  961. fi
  962. else
  963. _grub="grub"
  964. fi
  965. mkdir -p $HEDEF/boot/grub
  966. _arch=$(arch)
  967. ### seçimli paket kurulumları yaptıralacak.
  968. }
  969. enable_dhcpd() {
  970. ### dhcpd aktiv edilecek.
  971. echo "dhcpd $LANG_DHCPON"
  972. }
  973. menu_install() {
  974. # dosya sistemi hazır değilse devam edilmeyecek.
  975. validate_filesystems || return 1
  976. ROOTPASSWORD_YAPILDI="$(get_option ROOTPASSWORD)"
  977. BOOTLOADER_YAPILDI="$(get_option BOOTLOADER)"
  978. if [ -z "$FILESYSTEMS_YAPILDI" ]; then
  979. DIALOG --msgbox "`printf "$LANG_FSYSNOTCONF" "${BOLD}" "${RESET}"`" ${MSGBOXSIZE}
  980. return 1
  981. elif [ -z "$ROOTPASSWORD_YAPILDI" ]; then
  982. DIALOG --msgbox "`printf "$LANG_ROOTPWNOTCONF" "${BOLD}" "${RESET}"`" ${MSGBOXSIZE}
  983. return 1
  984. elif [ -z "$BOOTLOADER_YAPILDI" ]; then
  985. DIALOG --msgbox "`printf "$LANG_BOOTLNOTCONF" "${BOLD}" "${RESET}"`" ${MSGBOXSIZE}
  986. return 1
  987. fi
  988. if [ -z "$FORMAT_ONAY" ]; then
  989. DIALOG --yesno "`printf "$LANG_DESTROYWARN" "${BOLD}" "${RESET}" "${BOLD}${TARGETFS}${RESET}" "${BOLD}${RED}" "${RESET}" "${BOLD}" "${RESET}"`" 20 80 || return
  990. fi
  991. unset TARGETFS
  992. # Dosya sistemlerinin oluşturulup-bağlanması
  993. create_filesystems
  994. # ağdan paket kurulum eklenecek.
  995. KAYNAK="YEREL"
  996. if [ $KAYNAK="YEREL" ]; then
  997. # dosya sisteminin kopyalanması
  998. copy_rootfs
  999. USERNAME=$CANLI_KULLANICI
  1000. rm -f $HEDEF/root/bin/kurulum.sh
  1001. # Canlı kulanıcının silinmesi
  1002. echo "`printf "$LANG_RMTARGET" "$USERNAME"`" >$LOG
  1003. chroot $HEDEF userdel -r $USERNAME >$LOG 2>&1
  1004. sed -i -e "/$USERNAME ALL=.*/d" $HEDEF/etc/sudoers
  1005. TITLE="`printf "$LANG_ERRLOGTITLE" "$LOG"`"
  1006. INFOBOX "$LANG_BUILDINGINITRAMFS" 4 60
  1007. echo "$LANG_BUILDINGINITRAMFS" >$LOG
  1008. # gerekli dosya istemlerinin bağlanması
  1009. mount_filesystems
  1010. rm -f $HEDEF/boot/initramfs
  1011. rm -f $HEDEF/boot/kernel
  1012. cp /boot/kernel-* $HEDEF/boot/
  1013. chroot $HEDEF dracut --no-hostonly --add-drivers "ahci" -f /boot/initramfs --force >>$LOG 2>&1
  1014. chroot $HEDEF ln -s /boot/kernel-* /boot/kernel
  1015. rmdir $HEDEF/mnt/target
  1016. fi
  1017. INFOBOX "$LANG_APPLYSETTINGS" 4 60
  1018. # fstab ın hedef diske kopyalanması
  1019. install -Dm644 $TARGET_FSTAB $HEDEF/etc/fstab
  1020. # /tmp in tmpfs olarak bağlanması
  1021. echo "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0" >> $HEDEF/etc/fstab
  1022. # keymap, bölgesel ve yerel zaman ayarları, hostname, root-kullanıcı şifre
  1023. set_keymap
  1024. set_locale
  1025. set_timezone
  1026. set_hostname
  1027. set_rootpassword
  1028. set_useraccount
  1029. # Kullanıcı ve root için öntanımlı ayarların kopyalanması
  1030. #cp $HEDEF/etc/skel/.[bix]* $HEDEF/root
  1031. USERLOGIN="$(get_option USERLOGIN)"
  1032. mkdir -p $HEDEF/home/$USERLOGIN/
  1033. cp -rf /home/$CANLI_KULLANICI/.config $HEDEF/home/$USERLOGIN
  1034. cp -rf /run/initramfs/live/updates/home/$CANLI_KULLANICI/. $HEDEF/etc/skel/
  1035. cp -rf /run/initramfs/live/updates/home/$CANLI_KULLANICI/. $HEDEF/home/$USERLOGIN/
  1036. rm -rf $HEDEF/root/bin/canli_kullanici.sh
  1037. rm -rf $HEDEF/etc/canli_kullanici
  1038. rm -rf $HEDEF/opt/Milis-Yukleyici
  1039. rm -rf $HEDEF/root/Desktop/kurulum.desktop
  1040. rm -rf $HEDEF/root/Masaüstü/kurulum.desktop
  1041. rm -rf $HEDEF/home/$USERLOGIN/Desktop/kurulum.desktop
  1042. rm -rf $HEDEF/home/$USERLOGIN/Masaüstü/kurulum.desktop
  1043. rm -rf $HEDEF/root/Masaüstü/milis-kur.desktop
  1044. rm -f $HEDEF/etc/shadow- $HEDEF/etc/gshadow- $HEDEF/etc/passwd- $HEDEF/etc/group-
  1045. sed -i "/^$USERLOGIN/d" $HEDEF/etc/security/opasswd
  1046. cp $HEDEF/etc/lightdm/lightdm.conf.orj $HEDEF/etc/lightdm/lightdm.conf
  1047. rm -rf $HEDEF/home/$USERLOGIN/Desktop
  1048. DIL="$(echo "$(get_option LOCALE)" | tr "." "\n" | head -n1)"
  1049. echo "$DIL" > $HEDEF/home/$USERLOGIN/.config/user-dirs.locale
  1050. # dil Türkçe ise kullanıcı dizinlerindeki Türkçe adlandırmanın düzeltilmesi
  1051. if [ $DIL = "tr_TR" ];then
  1052. cp /opt/user-dirs.dirs $HEDEF/home/$USERLOGIN/.config/ >>$LOG 2>&1
  1053. chroot $HEDEF su - $USERLOGIN -c "xdg-user-dirs-update --force" >>$LOG 2>&1
  1054. mv $HEDEF/home/$USERLOGIN/Downloads $HEDEF/home/$USERLOGIN/İndirilenler
  1055. else
  1056. chroot $HEDEF su - $USERLOGIN -c "xdg-user-dirs-update --force"
  1057. fi
  1058. rm -rf $HEDEF/opt/user-dirs.dirs
  1059. chroot $HEDEF chown $USERLOGIN:$USERLOGIN -R /home/$USERLOGIN
  1060. [ -d $HEDEF/dev/snd ] && chroot $HEDEF setfacl -m u:$USERLOGIN:rw /dev/snd/*
  1061. if [ -f $HEDEF/etc/sudoers ]; then
  1062. if [ -z "$(echo $(get_option USERGROUPS) | grep -w wheel)" -a -n "$USERLOGIN" ]; then
  1063. # wheel grubuna üye olamayan kullanıcı için sudo açılır.
  1064. echo "# `printf "$LANG_ENABLESUDO" "$USERLOGIN"`" >> $HEDEF/etc/sudoers
  1065. echo "$USERLOGIN ALL=(ALL) ALL" >> $HEDEF/etc/sudoers
  1066. else
  1067. # wheel grubuna üye olan kullanıcı için sudoers eklemesi yapılır.
  1068. sed -i $HEDEF/etc/sudoers \
  1069. -e "s;#.*%wheel ALL=(ALL) ALL;%wheel ALL=(ALL) ALL;"
  1070. fi
  1071. unset USERLOGIN
  1072. fi
  1073. # Text tabanlı açılışı aktif et seçiliyse
  1074. if [ "$(get_option TEXTCONSOLE)" = "1" ]; then
  1075. sed -i $HEDEF/etc/default/grub \
  1076. -e 's|#\(GRUB_TERMINAL_INPUT\).*|\1=console|' \
  1077. -e 's|#\(GRUB_TERMINAL_OUTPUT\).*|\1=console|'
  1078. fi
  1079. # Bootloader yüklemesi
  1080. set_bootloader
  1081. sync && sync && sync
  1082. # bağlanan dizinler çözülür
  1083. umount_filesystems
  1084. # sistemin kopyalandıktan sonra yebaşla sorusu
  1085. if [ -z "$YEBASLAT_ONAY" ]; then
  1086. DIALOG --yesno "`printf "$LANG_INSTALLSUCCESS" "${BOLD}" "${RESET}"`" ${YESNOSIZE}
  1087. if [ $? -eq 0 ]; then
  1088. shutdown -r now
  1089. else
  1090. return
  1091. fi
  1092. fi
  1093. }
  1094. menu() {
  1095. if [ -z "$DEFITEM" ]; then
  1096. DEFITEM="$LANG_MENUKEYBOARD"
  1097. fi
  1098. DIALOG --default-item $DEFITEM \
  1099. --extra-button --extra-label "$LANG_MENUSETTINGS" \
  1100. --title " $LANG_INSTMENU " \
  1101. --menu "$MENULABEL" 10 70 0 \
  1102. "$LANG_MENUKEYBOARD" "$LANG_KEYBOARDSET" \
  1103. "$LANG_MENUHOSTNAME" "$LANG_HOSTSET" \
  1104. "$LANG_MENULOCALE" "$LANG_LOCALESET" \
  1105. "$LANG_MENUTIMEZONE" "$LANG_TIMEZONESET" \
  1106. "$LANG_MENUROOTPW" "$LANG_ROOTPWSET" \
  1107. "$LANG_MENUUSERACC" "$LANG_USERNPWSET" \
  1108. "$LANG_MENUBOOTLOADER" "$LANG_BOOTLOADERSET" \
  1109. "$LANG_MENUPARTITION" "$LANG_PARTITIONSET" \
  1110. "$LANG_MENUFILESYSTEM" "$LANG_FSYSSET" \
  1111. "$LANG_MENUINSTALL" "$LANG_INSTALLSETTINGS" \
  1112. "$LANG_MENUEXIT" "$LANG_EXITINST"
  1113. if [ $? -eq 3 ]; then
  1114. # Ayarların gösterilmesi
  1115. cp $AYAR_DOSYASI /tmp/conf_hidden.$$;
  1116. sed -i "s/^ROOTPASSWORD.*/ROOTPASSWORD <-hidden->/" /tmp/conf_hidden.$$
  1117. DIALOG --title "$LANG_SAVEDSETTINGS" --textbox /tmp/conf_hidden.$$ 18 90
  1118. rm /tmp/conf_hidden.$$
  1119. return
  1120. fi
  1121. case $(cat $ANSWER) in
  1122. "$LANG_MENUKEYBOARD") menu_keymap && [ -n "$KEYBOARD_YAPILDI" ] && DEFITEM="$LANG_MENUHOSTNAME";;
  1123. "$LANG_MENUHOSTNAME") menu_hostname && [ -n "$HOSTNAME_YAPILDI" ] && DEFITEM="$LANG_MENULOCALE";;
  1124. "$LANG_MENULOCALE") menu_locale && [ -n "$LOCALE_YAPILDI" ] && DEFITEM="$LANG_MENUTIMEZONE";;
  1125. "$LANG_MENUTIMEZONE") menu_timezone && [ -n "$TIMEZONE_YAPILDI" ] && DEFITEM="$LANG_MENUROOTPW";;
  1126. "$LANG_MENUROOTPW") menu_rootpassword && [ -n "$ROOTPASSWORD_YAPILDI" ] && DEFITEM="$LANG_MENUUSERACC";;
  1127. "$LANG_MENUUSERACC") menu_useraccount && [ -n "$USERNAME_YAPILDI" ] && [ -n "$USERPASSWORD_YAPILDI" ] && DEFITEM="$LANG_MENUBOOTLOADER";;
  1128. "$LANG_MENUBOOTLOADER") menu_bootloader && [ -n "$BOOTLOADER_YAPILDI" ] && DEFITEM="$LANG_MENUPARTITION";;
  1129. "$LANG_MENUPARTITION") menu_partitions && [ -n "$PARTITIONS_YAPILDI" ] && DEFITEM="$LANG_MENUFILESYSTEM";;
  1130. "$LANG_MENUFILESYSTEM") menu_filesystems && [ -n "$FILESYSTEMS_YAPILDI" ] && DEFITEM="$LANG_MENUINSTALL";;
  1131. "$LANG_MENUINSTALL") menu_install;;
  1132. "$LANG_MENUEXIT") DIE;;
  1133. *) DIALOG --yesno "$LANG_ABORTINST" ${YESNOSIZE} && DIE
  1134. esac
  1135. }
  1136. if [ ! -x /bin/dialog ]; then
  1137. echo "$LANG_ERRDIALOG"
  1138. exit 1
  1139. fi
  1140. if [ "$(id -u)" != "0" ]; then
  1141. echo "$LANG_INSTMUSTROOT" 1>&2
  1142. exit 1
  1143. fi
  1144. #
  1145. # kuruluma giriş noktası - eğer kurulum ayar dosyası parametre verilirse direk kuruluma başlayacak.
  1146. #
  1147. [ ! -z $DOSYADAN_KURULUM ] && menu_install && exit 0
  1148. DIALOG --title "${BOLD}${RED} $LANG_ENTERMILIS ${RESET}" --msgbox "`printf "$LANG_MAINDIALOG" "${BOLD}" "${RESET}" "${BOLD}" "${RESET}" "${BOLD}" "${RESET}" "${BOLD}" "${RESET}"`" 16 80
  1149. while true; do
  1150. menu
  1151. done
  1152. exit 0