Skip to main content

[EndlessOS 3.5.6] boot UEFI grub

-
-
출처
_( duckduckgo:   uefi boot grub  )_
https://superuser.com/questions/1247300/how-to-make-uefi-bios-start-grub-not-windows

-
_( duckduckgo:   help efibootmgr   )_
https://stackoverflow.com/questions/44919190/windows-equivalent-to-efibootmgr

-
~#
efibootmgr > efiboot-info.txt

BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0002,0001,0000
Boot0000* Windows Boot Manager
Boot0001* Hard Drive
Boot0002* Windows Boot Manager
Boot0003* Endless OS

~#
efibootmgr -v > efiboot-info-verbose.txt
BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0002,0001,0000

Boot0000* Windows Boot Manager HD(1,GPT,4e527ba8-51f5-4ecd-bc88-181b67e5c748,0x800,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................

Boot0001* Hard Drive BBS(HD,,0x0)..GO..NO........o.S.a.m.s.u.n.g. .S.S.D. .8.6.0. .E.V.O. .2.5.0.G.B....................A...........................>..Gd-.;.A..MQ..L.3.S.K.Y.X.N.M.1.1.1.0.8.5.6. .E. . . . ........BO

Boot0002* Windows Boot Manager HD(1,GPT,d0b062f0-198d-4b0b-8af8-fad7dbd499cf,0x800,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)..BO

Boot0003* Endless OS HD(1,GPT,d0b062f0-198d-4b0b-8af8-fad7dbd499cf,0x800,0x32000)/File(\EFI\ENDLESS\BOOTX64.EFI)

-
grub customizer

https://askubuntu.com/questions/148095/how-do-i-set-the-grub-timeout-and-the-grub-default-boot-entry
-
-
가 나온다.
easy UEFI 소프트웨어 trial 을 사용해 본다. 하지만, 일단 잘 읽어보자.
https://support.endlessm.com/hc/en-us/articles/115002335646-After-installing-Endless-OS-the-GRUB-menu-does-not-appear-and-it-starts-directly-in-Windows
-
그런데, 읽어보고 나니, 이것은 UEFI에서 Endless OS의 부트 매니저인 grub _으로 가기 전까지의 과정을 제대로 수행하게 만드는 것이다. 그러나, 내가 원하는 것은 일단 이것으로 간 후에, grub에서의 메뉴 옵션과 디폴트 항목과 그 항목의 타임아웃(timeout) 시간 설정을 바꾸고자 하는 것이니까 UEFI의 것은 필요 없다. 나는 지금은 이것까지는 아주 잘 진행되고 있으니까 그렇다. 그래서, grub 자체의 설정방법을 알아봐야겠다.
-
https://skylit.tistory.com/87
-
이것이 그것인 듯하다.
-
찾아봤는데, /etc/default/... 에 있는 파일은 그냥 쓰레기인 듯 (junk)...
endlessOS에서 동작하고 있는 것과는 상관없는 각종 여러가지의 (전통적인.. 오래전에 쓴 것으로 느껴지는..) debianOS 관련이나, 원격 설정, 다국어 설정 등등으로 보이는
 실제로 endlessOS에서 사용하는 것은 이것이 아닌 것이라고 느껴지는 아주 아주 많고, 여러 다른 설정을 사용하도록 고안되었지만, 결국 쓸모 없이 버려진 아주 긴 shell script 등이 발견되었다.
대신 실제로 endlessOS에서 사용하는 것으로 보이는 것은 아래의 위치에 있었다.
/boot/grub/grub.cfg
이 파일이었다. 내용은 아래와 같다.
endless OS 에서는 어떻게 한다는 내용이 많이 보인다.

-------/boot/grub/grub.cfg 내용 시작
function load_video {
  insmod all_video
}

function savedefault {
    if test "$should_savedefault" ; then
        saved_entry="${chosen}"
        save_env -f $grubenv saved_entry
    fi

    if ! test "$eosimage" ; then
        recordfail=1
        save_env -f $grubenv recordfail
    fi
}

if [ "x${timeout}" != "x-1" ]; then
    if keystatus; then
        if keystatus --shift; then
            set timeout=-1
        else
            set timeout=0
        fi
    else
        if sleep --interruptible 1 ; then
            set timeout=0
        fi
    fi
fi

if test "$eosimage" ; then
    set grubenv=($eosimage)/endless/grub/grubenv

    # ISO
    if test -f ($eosimage)/endless/endless.squash ; then
        loopback loop_squash ($eosimage)/endless/endless.squash
        loopback loop_img (loop_squash)/endless.img
        set image_path="/endless/endless.squash"

    # Dual boot
    elif test -f ($eosimage)/endless/endless.img ; then
        loopback loop_img ($eosimage)/endless/endless.img
        set image_path="/endless/endless.img"
    fi

    set root=(loop_img,gpt3)
    probe -u $eosimage --set=image_dev_uuid
    set kparams="endless.image.device=UUID=$image_dev_uuid endless.image.path=$image_path nohibernate"

    # test for Windows hibernation
    if test -f ($eosimage)/hiberfil.sys ; then
        if file --is-hibernated-hiberfil ($eosimage)/hiberfil.sys ; then
            set hibernation=true
        fi
    fi

    if test -f ($eosimage)/eosldr ; then
        # If we can't boot Endless OS, provide a dummy Windows entry which
        # reboots to the Windows boot menu.
        if test "$hibernation" ; then
            set found_windows=true
            menuentry "Microsoft Windows" {
                reboot
            }
        fi
    elif test -f ($eosimage)/endless/live ; then
        set kparams="$kparams endless.live_boot"
        set is_live=true
        export is_live
    else
        set should_savedefault=true
        export should_savedefault

        # search for other OSes
        insmod regexp
        for dev in ($bootdev,*); do
            regexp -s device '\((.*)\)' $dev

            if test "$grub_platform" == "efi"; then
                if test -f ($device)/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI ; then
                    set found_windows=true
                    menuentry "Microsoft Windows" $device {
                        set booting_windows=true
                        savedefault
                        set root=$2
                        chainloader ($root)/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI
                    }
                fi
            else
                probe -s is_bootable -b ($device)
                if test "$is_bootable" == "none"; then
                    continue
                fi

                if test ( -f ($device)/bootmgr -a -f ($device)/Boot/BCD ) ; then
                    set found_windows=true
                    # Windows Vista or later
                    menuentry "Microsoft Windows" $device {
                        set booting_windows=true
                        savedefault
                        set root=$2
                        chainloader +1
                    }
                elif test ( ( -f ($device)/ntldr -o -f ($device)/NTLDR ) -a ( -f ($device)/ntdetect.com -o -f ($device)/NTDETECT.COM ) -a ( -f ($device)/boot.ini -o -f ($device)/BOOT.INI ) ) ; then
                    set found_windows=true
                    # Windows XP
                    menuentry "Microsoft Windows" $device {
                        set booting_windows=true
                        savedefault
                        set root=$2
                        regexp -s devnum 'hd([0-9]+)' $root
                        if test "$devnum" != "0"; then
                            drivemap -s hd0 $root
                        fi
                        chainloader +1
                    }
                elif test "$eosimage" ; then
                    set found_windows=true
                    # Other Windows flavour?
                    menuentry "Unknown OS" $device {
                        set booting_windows=true
                        savedefault
                        set root=$2
                        chainloader +1
                    }
                fi
            fi
        done
    fi
else
    probe -u $root --set=rootuuid
    set grubenv=($root)/boot/grub/grubenv
fi

export grubenv

if test -f $grubenv ; then
    load_env -f $grubenv
fi

# load last selection. savedefault() only writes this entry on dual-boot
# systems.
if test "$saved_entry" ; then
    set default="${saved_entry}"
else
    set default=0
fi

# Show menu if we need to offer Windows, or if the last boot failed.
if test ( "$found_windows" -o "$recordfail" ) ; then
    set timeout=30
fi

# Increment loglevel if the last boot failed.
if test "$recordfail" ; then
    set kparams="$kparams loglevel=6"
fi

if test "$hibernation"; then
    menuentry "Endless OS (unavailable)" {
        echo -------------------------------------------------------------
        echo Endless OS is unavailable whilst Windows is hibernated.
        echo Please select Windows and shut down or reboot to use Endless.
        echo -------------------------------------------------------------
        echo
        echo Press ENTER to continue ...
        read
   }
else
    insmod blscfg
    bls_import
fi
-------/boot/grub/grub.cfg 내용 끝
이렇다. 아마도 여기의 5번 나온 timeout 단어 중 맨 마지막의 set timeout=30 값을 ...=5 정도로 바꿔야 하지 않을까 생각된다.
-
위 처럼 시도해 봤지만, 바뀌지 않았다. 역시.. 조금 헐렁해 보이는 script 및 위치였다.
-
한참 뒤에 다시 검색을 시도했다.
_(  duckduckgo:    how to change timeout in grub at endlessos  )_
결과는 처음에 나온 것은 ubuntu OS 관련된 것이라, endless OS에는 직적 관련이 없고, 아까 위에서 처럼 직접 endless OS 에 관련된 부분이라야 효과가 있을 것으로 보여서 고려대상에서 제외했다.
좀 더 아래쯤에 있는 검색결과에서 endless os 에 관련된 내용이 있었다.
-
https://community.endlessos.com/t/dualboot-set-boot-time/5480/2
-
내용은 윈도의
C:\endless\grub\grub.cfg
위치에 있는 파일에서 timeout 값을 조정할 수 있다는 것인데, 놀라웠다. 정말일까?
-
결론은 맞는 것이다. 그렇다고 쉽게 내가 목적하는 바를 이뤘는가 하면 결코 그렇지 않다.
경고는 보이지 않게 되어 있다고 하는 것이었다. 여기부터는 엄청난 어려움을 겪은 것을 적는다.
C:\endless  폴더 까지는 쉽게 찾을 수 있었다.
그 속에는 grub 폴더가 보이지 않았다. 없는 것일까? 아니었다.
윈도 파일 탐색기 주소창에 직접 C:\endless\grub 라고 타이핑해서 입력하면 없는 척하던 grub 서브폴더(sub-folder)로 들어갈 수 있었다. 그 속에는 grub.cfg 라는 파일과 다른 파일 하나, 그 속에 또 다른 서브폴더가 있었다. 들어가서 봤는데, 별로 내 목적에는 쓸모가 없는 것들이었다. 언급하지 않겠다.
c:\endless\grub\grub.cfg 파일의 내용은, 위에 언급된 endless OS 설치된 속에 들어 있는 /boot/grub/grub.cfg 파일의 내용과 같은 것이 들어있었다. 하지만, 이것을 알아보는 것도 쉽지 않게 된 것이, 일반 노트패드 프로그램(텍스트 파일 편집기)으로 열면, 줄바꿈이 [LF]로만 되어 있어서 줄바꿈 없이 쭉-- 이어진 파일로 표시가되기 때문에 알아보기도 너무 어려웠다. 유닉스 스타일 줄바꿈을 지원하는 다른 프로그램을 설치한 후에 다시 열어보니 ( 열기대화상자에서 숨겨진 파일 폴더 위치를 직접 넣어야 찾아낼 수 있고, 열 수 있다. ) 읽기 전용으로만 보안 권한설정이 되어 있어서 아무것도 할 수 없었다.
시스템 관리자의 권한 설정을 완화해서 쓰기/변경도 되도록 폴더와 파일의 권한을 변경 했는데도 안되었다. (시스템 관리자) 관리자 권한으로 열기 등등을 해도 안되어서 상당한 좌절을 겪었다. 있는 ...\grub.cfg 파일을 사본으로 복사를 하려고 했지만, 이것마저도 안되었다.

권한 설정을 완화해서 쓰기 권한을 설정하려고 해도 잘 안되었다.
C:\endless\grub 폴더는 숨겨진 상태였기 때문에, 폴더의 권한을 바꾸려면 C:\endless 폴더에서 grub 폴더를 마우스 오른쪽으로 선택을 할 수 없었다.
그냥 grub 폴더까지 들어가서 (C:\endless\grub 내부) 탐색기 창의 빈 자리를 마우스 오른쪽 버튼으로 클릭했더니, grub 서브폴더의 보안권한을 바꿀 수 있었다.

그런데, 원본 백업 복사도 안되고, 파일 변경도 안되고 좌절하고 있는데, 에러메시지가 이렇게 나온 것을 읽었다. 똑같은 것은 아니다.
_(  (이 컴퓨터 이름) 의 (내가 로그인한 사용자 이름)사용자는 권한이 없습니다. )_
이런 내용을 좀 무시하고 깨닫지 못하다가....
파일 탐색기 프로그램과 편집 프로그램도 모두 관리자권한으로 실행했는데도, 폴더와 파일의 권한을 모두 관리자 권한을 줬는데도 권한이 없어서 안된다고 해서,
지금 내가 자동 로그인된 사용자 이름의 권한을 추가하고, 읽기/쓰기/변경 권한을 추가했더니 편집 프로그램으로 grub.cfg 파일을 변경할 수 있고, 백업 복사본도 만들 수 있었다.
그리고, 재부팅했더니, 변경한 timeout 시간 값으로 작동하는 것을 확인할 수 있었다.

그 이후에 보안권한들을 원래의 값인, 읽기만 있고, 쓰기/변경을 없는 것으로 바꾸고, 현재 로그인된 사용자의 권한을 통째로 삭제했다.

---
2초로 시간을 정한 뒤로, 한 아이가 Endless OS 로 들어갔다가 끈 적이 있을 때에 다른 아이가 켜서 문제가 생겼다. 그래서, 이번에는 이전에 Endless 로 들어갔을 때와 다른 time out 값을 설정하도록 변경했다.
변경한 부분만 발췌하면, 아래와 같다.
-
원래는 set timeout=2 로 변경했다가 다시 바꾼 부분이다.
########################    set timeout=30
    if test "$saved_entry" == "Microsoft Windows" ; then
        set timeout=2
    else
        set timeout=30
    fi
-
직전에 윈도로 부팅했었으면 timeout=2,  아니면 timeout=30 으로 하는 것이고, 내가 의도했던대로 잘 작동했다. 하지만, 디폴트를 그냥 윈도로하는 것이 나을지, 아니면 이것을 그냥 다 없앨지 고민된다.
-
-

Comments

Popular posts from this blog

오버워치 게임 리눅스에서 하기 overwatch game in linux

- - 구글 검색하니 오버워치를 리눅스에서 하는 방법이 나왔다. _( 구글검색:   overwatch in linux  )_ 그리고, 오버워치를 리눅스에서 하는 방법 소개. https://linuxconfig.org/install-and-play-overwatch-on-linux-with-wine#h13-closing-thoughts 그런데, 리눅스에서 하면 서버에서 금지당한다는 경고도 있었다. https://www.forbes.com/sites/jasonevangelho/2018/09/14/caution-playing-overwatch-on-linux-may-get-you-banned/#66b1e9ba259b 왜 그런 걸까? - -

세벌식 자판

아이들에게 두벌식 한글 자판과 세벌식 한글 자판, 그리고 한글 기계화의 영웅이랄까, 위인이랄까, 한글 기계화에는 아마추어였지만 존경스러운 자취를 남기신 안과의사 공병우 박사님의 자취를 이 세상 사람들이 모두 다 알지는 못해도, 우리 아이들이 잠깐 스쳐 지나기라도 했으면 하는 바람이다. 그렇다고, 두벌식 자판을 만든 분들이 나쁜 사람이라고 비판하는 것은 아니다. (음.. 그럼 뭘까.. 이도 저도 아닌가.. 이 비판은 내게 돌려지기를.. ) 문제라면, 그 네벌식이라는 것이 문제였달까... 나는 군대에서 정말 타자기로써의 이 네벌식 자판을 써 본 적이 있다. 두벌식과 비슷한 느낌과 방식이었다. 군대에서야 있는 것, 주는 것을 그대로 쓸 수 밖에... _( 검색: 네벌식 한글자판   https://duckduckgo.com/?t=palemoonsp&q=%EB%84%A4%EB%B2%8C%EC%8B%9D+%ED%95%9C%EA%B8%80%EC%9E%90%ED%8C%90&ia=web )_  하지만, 네벌식도 나름 만들어졌어야 하는 요구가 있었다. https://namu.wiki/w/%EB%91%90%EB%B2%8C%EC%8B%9D/%EC%9E%90%ED%8C%90%20%EC%A2%85%EB%A5%98 https://namu.wiki/w/두벌식/자판 종류 위의 위키 문서에서 인용.... ..... 1982년에 제정된 표준 자판이다. 네벌식 타자기의 배열에서 파생되었다. 당시 대다수를 차지하던 세벌식 타자기는 받침이 있든 없든 모음의 형태가 같기 때문에[1], 예를 들면 '이' 자에 ㄹ받침을 적어 놓으면 '일' 자로 위조할 수 있다는 지적에 의해 1969년, 제3공화국의 연구조정관이었던 황해용이 네벌식 타자기를 표준으로 추진하게 되었다.황해용 인터뷰 및 관련 글 참고. ..... 인용 끝. 문서위조의 가능성 때문이었다 라고 하는 것이다. 그것도 민감한 돈의 액수를 바꾸는 금액의 위조... 참... 한글

[내가 호기심을 기울이던 것들 / 애들은 싫어하겠지] TeXmacs 정보 모음

- TeXmacs http://www.texmacs.org/tmweb/home/welcome.en.html 감히 번역을 할 능력도 시간도 없어서... tutorial 모음 http://texmacs.org/tmweb/help/tutorial.en.html - tutorial? 60분 안내 http://www.texmacs.org/tmweb/documents/tutorials/TeXmacs-in-60-minutes/tmtour.html 다운로드 하기. http://texmacs.org/tmweb/download/windows.en.htm l tutorial은 내부에 있는 것은 link 가 깨진 듯하다. 메뉴에 help/... 아래로의 깨진 링크는 어떻게 들어갔더라? 못찾겠다... tmfs://help/normal/tm/doc/tutorial/tut-tutorial.en.tm 한글 설정 힌트? (웹에는 없는 내용이라서, 스크린샷 찍고, tm 파일 내용(소스)도 따로 복사해서 올린다.) (아마도 홈페이지의 내용은 이 tm 파일과 형식이 유사한 web페이지가 많은 것으로봐서는 tm을 그대로 html로 변환해서 올릴 수 있는 기능이 있을 것 같지만, 내가 찾아내서 사용할 능력(여건? 시간?)은 없다.. ) 그 아래는 tm 소스 파일 내용 _( man-oriental.tm )_ - <TeXmacs|1.99.9> <style|<tuple|tmdoc|english>> <\body> <tmdoc-title|Notes for users of oriental languages> In order to type oriental languages, you first have to start a conversion server which can be used in combination with the X input method and set the environment varia