grub.cfg 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. insmod font
  2. insmod keylayouts
  3. insmod part_msdos
  4. insmod part_gpt
  5. export loaded
  6. export koptsok
  7. export disable_gfxterm
  8. export bootarch
  9. export firmware
  10. export firmware_found
  11. export from
  12. export fromiso
  13. export bootlang
  14. export keyboard
  15. export timezone
  16. export hwclock
  17. export def_bootlang
  18. export def_keyboard
  19. export def_timezone
  20. export menu_color_normal
  21. export menu_color_highlight
  22. export pager
  23. function menu_help {
  24. check_help
  25. grub_help
  26. }
  27. function check_help {
  28. if [ -z "${koptsok}" ]; then
  29. echo $"UYARI: hiçbir şey ayarlanmadı"
  30. echo $" Sistem varsayılanları kullanacak"
  31. echo " American English <> utc clock <> us "$"keyboard <> free drivers"
  32. echo ""
  33. fi
  34. }
  35. function kopts_help {
  36. echo $"Örnek önyükleme komut satırı bağımsız değişkenleri:"
  37. echo $" Setup"
  38. echo " lang=<language>_<variant> keytable=<layout> tz=<region>/<city>"
  39. echo " hostname=<name> username=<name>"
  40. echo $" Kernel"
  41. echo " blacklist=<module>"
  42. echo $" Video"
  43. echo " <module>.modeset=0"
  44. echo " radeon.modeset=0 nouveau.modeset=0 i915.modeset=0"
  45. echo " video=VGA-1:1920x1080e DVI-0:800x600"
  46. echo ""
  47. }
  48. function grub_help {
  49. echo $"Menüyü kullanmak için:"
  50. echo $" öğeler arasında hareket etmek için yukarı veya aşağı ok tuşlarına basın"
  51. echo $" Öğeyi seçmek için enter veya sağ ok tuşuna basın"
  52. echo $" Mevcut öğeyi düzenlemek için e tuşuna basın"
  53. echo $" Grub komut satırına gitmek için c'ye basın"
  54. echo ""
  55. echo $"Menüleri kontrol etmek için çoğu menünün ilk satırını düzenlemeniz yeterlidir"
  56. echo $"Komut satırı bağımsız değişkenlerini girmek için boş satırı seçin veya düzenleyin"
  57. echo ""
  58. }
  59. function menu_reload {
  60. configfile /boot/grub/grub.cfg
  61. }
  62. function menu_continue {
  63. echo -n $"Devam etmek için Enter'a basın"
  64. read mcont
  65. }
  66. function prompt {
  67. echo -n "> "
  68. }
  69. function is_efi {
  70. if [ "${grub_platform}" = "efi" ]; then
  71. return 0
  72. fi
  73. return 1
  74. }
  75. function efi_detect {
  76. if is_efi ; then
  77. submenu --class=find.efi --hotkey=f "EFI önyükleyicilerini algıla" {
  78. efi_found=false
  79. for efi in (*,gpt*)/efi/*/*.efi (*,gpt*)/efi/*/*/*.efi (*,gpt*)/*.efi (*,gpt*)/*/*.efi ; do
  80. regexp --set=1:efi_device '^\((.*)\)/' "${efi}"
  81. if [ -e "${efi}" ]; then
  82. efi_found=true
  83. menuentry --class=efi "${efi}" "${efi_device}" {
  84. root="${2}"
  85. chainloader "${1}"
  86. }
  87. fi
  88. done
  89. if [ "${efi_found}" != true ]; then
  90. menuentry --hotkey=q --class=find.none "EFI dosyası algılanmadı." {menu_reload}
  91. else
  92. menuentry --hotkey=q --class=cancel "Cancel" {menu_reload}
  93. fi
  94. }
  95. fi
  96. }
  97. function memtest_detect {
  98. if ! is_efi; then
  99. if [ -f /boot/memtest ]; then
  100. menuentry --class=memtest --hotkey=m "Hafıza Testi" {linux16 /boot/$1}
  101. fi
  102. fi
  103. }
  104. function lang_setup {
  105. source /boot/grub/locales/${1}
  106. menu_reload
  107. }
  108. function lang_menu {
  109. menuentry --class=lang.${ll} "lang=${ll}" "${ll}" {lang_setup "${2}"}
  110. }
  111. function show_timezones {
  112. submenu --class=tz --hotkey=t "tz=${def_timezone}" {# set the timezone above with the editor
  113. if [ -n "$1" ];then
  114. if [ "$1" = "tz=${def_timezone}" ]; then
  115. default=0
  116. menuentry --class=cancel --hotkey=q "Cancel (${def_timezone})" {menu_reload}
  117. for tt in Africa America Asia Atlantic Australia Etc Europe Pacific; do
  118. submenu --class=tz.${tt} "${tt}" {
  119. menuentry --class=cancel --hotkey=q "Cancel (${def_timezone})" {menu_reload}
  120. source "/boot/grub/tz/${1}"
  121. }
  122. done
  123. else
  124. regexp -s newtz '^tz=(.*)' "$1"
  125. if [ -z "$newtz" ]; then
  126. def_timezone="$1"
  127. else
  128. def_timezone="$newtz"
  129. fi
  130. timezone="tz=$def_timezone"
  131. menu_reload
  132. fi
  133. fi
  134. }
  135. }
  136. function show_keymaps {
  137. submenu --class=kbd --hotkey=k "keytable=${def_keyboard}" {# set the timezone above with the editor
  138. if [ -n "$1" ]; then
  139. if [ "$1" = "keytable=${def_keyboard}" ]; then
  140. default=0
  141. menuentry --class=cancel --hotkey=q "Cancel (${def_keyboard})" {menu_reload}
  142. source /boot/grub/locales/keyboards
  143. else
  144. regexp -s newkey '^keytable=(.*)' "$1"
  145. if [ -z "$newkey" ]; then
  146. def_keyboard="$1"
  147. else
  148. def_keyboard="$newkey"
  149. fi
  150. keyboard="keytable=$def_keyboard"
  151. menu_reload
  152. fi
  153. fi
  154. }
  155. }
  156. function show_languages {
  157. submenu --hotkey=l --class=lang "lang=${def_bootlang}" {# set the timezone above with the editor
  158. if [ -n "$1" ]; then
  159. if [ "$1" = "lang=${def_bootlang}" ]; then
  160. default=0
  161. menuentry --class=lang.${def_bootlang} "lang=${def_bootlang}" {menu_reload}
  162. menuentry --class=lang.cs "Čeština" {lang_setup "cs_CZ"}
  163. menuentry --class=lang.da "Dansk" {lang_setup "da_DK"}
  164. submenu --class=lang.de "Deutsch" {
  165. for ll in de_DE de_AT de_BE de_CH de_LI de_LU; do
  166. lang_menu ${ll}
  167. done
  168. }
  169. submenu --class=lang.el "Ελληνικά" {
  170. for ll in el_GR el_CY; do
  171. lang_menu ${ll}
  172. done
  173. }
  174. submenu --class=lang.en "English" {
  175. for ll in en_US en_AG en_AU en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NG en_NZ en_PH en_SG en_ZA en_ZW; do
  176. lang_menu ${ll}
  177. done
  178. }
  179. submenu --class=lang.es "Español" {
  180. for ll in es_ES es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE; do
  181. lang_menu ${ll}
  182. done
  183. }
  184. submenu --class=lang.fr "Français" {
  185. for ll in fr_FR fr_BE fr_CA fr_CH fr_LU fr_NC; do
  186. lang_menu ${ll}
  187. done
  188. }
  189. menuentry --class=lang.he "עִבְרִית" {lang_setup "he_IL"}
  190. submenu --class=lang.it "Italiano" {
  191. for ll in it_IT it_CH; do
  192. lang_menu ${ll}
  193. done
  194. }
  195. menuentry --class=lang.ja "日本語" {lang_setup "ja_JP"}
  196. submenu --class=lang.nl "Nederlands" {
  197. for ll in nl_NL nl_AW nl_BE; do
  198. lang_menu ${ll}
  199. done
  200. }
  201. menuentry --class=lang.pl "Polski" {lang_setup "pl_PL"}
  202. submenu --class=lang.pt "Português" {
  203. for ll in pt_BR pt_PT; do
  204. lang_menu ${ll}
  205. done
  206. }
  207. menuentry --class=lang.ro "Română" {lang_setup "ro_RO"}
  208. submenu --class=lang.ru "Русский" {
  209. for ll in ru_RU ru_UA;do
  210. lang_menu ${ll}
  211. done
  212. }
  213. menuentry --class=lang.tr "Türkçe" {lang_setup "tr_TR"}
  214. submenu --class=lang.tr "Türkçe" {
  215. for ll in tr_TR;do
  216. lang_menu ${ll}
  217. done
  218. }
  219. submenu --class=lang.zh "中文" {
  220. for ll in zh_CN zh_TW; do
  221. lang_menu ${ll}
  222. done
  223. }
  224. else
  225. regexp -s newlang '^lang=(.*)' "$1"
  226. if [ -z "$newlang" ]; then
  227. def_bootlang="$1"
  228. else
  229. def_bootlang="$newlang"
  230. fi
  231. bootlang="lang=$def_bootlang"
  232. if [ -f /boot/grub/locales/${def_bootlang} ]; then
  233. source /boot/grub/locales/${def_bootlang}
  234. fi
  235. menu_reload
  236. fi
  237. fi
  238. }
  239. }
  240. function boot_menu {
  241. if [ "${hwclock}" = "utc=yes" ]; then
  242. class="utc"
  243. title="utc"
  244. clockset=""
  245. elif [ "${timezone}${bootlang}" = "" ]; then
  246. class="unset"
  247. title="utc"
  248. clockset=""
  249. else
  250. title="${def_timezone}"
  251. class="tz.${def_timezone}"
  252. clockset="utc=yes"
  253. fi
  254. min2d="$MINUTE"
  255. if regexp '(^.$)' "$min2d"; then
  256. min2d="0${min2d}"
  257. fi
  258. hour2d="$HOUR"
  259. if regexp '(^.$)' "$hour2d"; then
  260. hour2d="0${hour2d}"
  261. fi
  262. menuentry --class=tz.$class --hotkey=u "$hour2d:$min2d $title" "$clockset" {
  263. hwclock="$2"
  264. menu_reload
  265. }
  266. show_timezones
  267. show_keymaps
  268. show_languages
  269. default=4
  270. }
  271. function boot_defaults {
  272. source /boot/grub/defaults.cfg
  273. }
  274. function grub_reboot {
  275. menuentry " " {true}
  276. menuentry --class=reboot "Reboot!" {reboot}
  277. }
  278. function grub_bios_installed {
  279. if ! is_efi; then
  280. menuentry "" {true}
  281. menuentry --class=manjaro "Installed BIOS-System on $installed" {exit}
  282. fi
  283. }
  284. function grub_efi_installed {
  285. if is_efi; then
  286. menu "" {true}
  287. menu --class=manjaro "Installed EFI-System on $installed" {exit}
  288. fi
  289. }
  290. function check {
  291. cliname="$1"
  292. varname="$2"
  293. if [ "${optname}" != "${cliname}" ]; then
  294. return 1
  295. fi
  296. if [ -z "$varname" ]; then
  297. varname="${cliname}"
  298. fi
  299. if [ -z "${optval}" ]; then
  300. eval ${varname}="${cliname}"
  301. else
  302. eval ${varname}="${cliname}=${optval}"
  303. if [ "${optname}" = "lang" ]; then
  304. lang_setup ${optval}
  305. elif [ "${optname}" = "keytable" ]; then
  306. def_keyboard="${optval}"
  307. elif [ "${optname}" = "tz" ]; then
  308. def_timezone="${optval}"
  309. fi
  310. fi
  311. return 0
  312. }
  313. function checkinput {
  314. newinput="$1"
  315. newoutput=""
  316. for newcli in ${newinput} ; do
  317. optname=""
  318. optval=""
  319. optdone=""
  320. regexp -s optname '^(.+)=.*$' "${newcli}"
  321. if [ -z "${optname}" ]; then
  322. optname="${newcli}"
  323. else
  324. regexp -s optval '^.+=(.*)$' "${newcli}"
  325. fi
  326. for tocheck in "lang bootlang" "keytable keyboard" "tz timezone" "utc hwclock"; do
  327. if check $tocheck ; then
  328. optdone="Y"
  329. break
  330. fi
  331. done
  332. if [ -z "${optdone}" ]; then
  333. if [ -z "${newoutput}" ]; then
  334. newoutput="${newcli}"
  335. else
  336. newoutput="${newoutput} ${newcli}"
  337. fi
  338. fi
  339. done
  340. }
  341. function new2cli {
  342. newinput="$1"
  343. if [ -n "$newinput" ]; then
  344. checkinput "$newinput"
  345. if [ -n "${newoutput}" ]; then
  346. newinput="${newoutput}"
  347. if [ -n "$clinput" ]; then
  348. clinput="$clinput $newinput"
  349. else
  350. clinput="$newinput"
  351. fi
  352. export clinput
  353. fi
  354. fi
  355. }
  356. function getargs {
  357. args=""
  358. for a in $@; do
  359. if [ -n "${a}" ]; then
  360. args="${args} ${a}"
  361. fi
  362. done
  363. }
  364. function bootcheck {
  365. getargs
  366. }
  367. pager=1
  368. insmod regexp
  369. insmod datehook
  370. if ! is_efi; then
  371. insmod part_gpt
  372. fi
  373. if is_efi; then
  374. insmod efi_gop
  375. insmod efi_uga
  376. fi
  377. if [ -z "${loaded}" ]; then
  378. iscd=""
  379. auto=""
  380. regexp -s iscd '^(cd)' "${root}"
  381. if [ "${iscd}" != "cd" -a -e (cd) ]; then
  382. probe -s cdp -u cd
  383. probe -s hdp -u $root
  384. if [ -n "$cdp" -a "$cdp" = "$hdp" ]; then
  385. iscd="cd"
  386. fi
  387. fi
  388. if [ "${root}" != "hd96" -a "${iscd}" != "cd" ]; then
  389. auto="${auto}"
  390. fi
  391. source /boot/grub/variable.cfg
  392. loaded=true
  393. if keystatus --shift; then
  394. disable_gfxterm=true
  395. fi
  396. if [ "${disable_gfxterm}" != "true" ]; then
  397. if loadfont /boot/grub/unicode.pf2 ; then
  398. if [ -z "$gfxmode" ] ; then
  399. gfxmode=1024x768,auto # 1280x1024,1024x768,800x600,640x480 possible value
  400. gfxpayload=keep
  401. fi
  402. if keystatus --ctrl; then
  403. gfxok=""
  404. pager=0
  405. while [ -z "$gfxok" ]; do
  406. echo "gfxmode=$gfxmode"
  407. echo "Input new mode or Enter to confirm"
  408. prompt
  409. read gfxmodein
  410. if [ -n "$gfxmodein" ]; then
  411. gfxmode="$gfxmodein"
  412. echo ""
  413. else
  414. gfxok="true"
  415. fi
  416. done
  417. fi
  418. insmod all_video
  419. insmod gfxterm
  420. if terminal_output --append gfxterm; then
  421. terminal_output --remove console
  422. else
  423. disable_gfxterm=true
  424. fi
  425. else
  426. disable_gfxterm=true
  427. fi
  428. fi
  429. if [ "${disable_gfxterm}" != "true" -a -f "${grub_theme}" ]; then
  430. insmod gfxmenu
  431. themedir=""
  432. regexp -s themedir '^(.*)/.*$' "${grub_theme}"
  433. for themefont in $themedir/*.pf2 $themedir/f/*.pf2; do
  434. if [ -f "${themefont}" ]; then
  435. loadfont "${themefont}"
  436. fi
  437. done
  438. for imagetype in jpg jpeg png tga; do
  439. for themeimage in ${themedir}/*.${imagetype}; do
  440. if [ -f "${themeimage}" ]; then
  441. if [ "${imagetype}" = "jpg" ]; then
  442. insmod jpeg
  443. else
  444. insmod $imagetype
  445. fi
  446. fi
  447. done
  448. done
  449. theme=${grub_theme}
  450. export theme
  451. fi
  452. menu_color_normal=cyan/blue
  453. menu_color_highlight=white/blue
  454. if [ -n "${iso_path}" ]; then
  455. auto="img_dev=/dev/disk/by-uuid/${rootuuid} img_loop=${iso_path}"
  456. fi
  457. export auto
  458. fi
  459. boot_defaults
  460. for kopt in "${clinput}" "${bootlang}" "${keyboard}" "${timezone}" "${hwclock}" "${auto}"; do
  461. if [ -n "${kopt}" ]; then
  462. kopts="${kopts} ${kopt}"
  463. fi
  464. done
  465. if [ -n "${bootlang}${keyboard}${timezone}" ]; then
  466. koptsok="true"
  467. fi
  468. boot_menu
  469. source /boot/grub/kernels.cfg
  470. if [ -n "$clinput" ]; then
  471. menuentry --class=edit "$clinput" {
  472. if [ -n "$1" ]; then
  473. clinput="$@"
  474. else
  475. unset clinput
  476. fi
  477. menu_reload
  478. }
  479. fi
  480. menuentry --class=type --hotkey=tab "" {# set arguments above with the editor
  481. getargs $@
  482. pager=0
  483. if [ -z "$args" ]; then
  484. check_help
  485. kopts_help
  486. echo $"Komut satırı seçeneklerini girin, devam etmek için Enter tuşuna basın"
  487. prompt
  488. read newinput
  489. else
  490. newinput="$args"
  491. fi
  492. new2cli "$newinput"
  493. pager=1
  494. menu_reload
  495. }
  496. menuentry --hotkey=h --class=help "Yardım" {
  497. pager=0
  498. menu_help
  499. menu_continue
  500. pager=1
  501. }
  502. efi_detect
  503. memtest_detect
  504. search --no-floppy --file /etc/issue --set installed
  505. grub_bios_installed
  506. grub_efi_installed
  507. grub_reboot