미학적으로 편집 grub.cfg


10

편집 : (명확성을 위해) 구성 파일을 편집하여 grub 부팅 메뉴의 모양을 변경하려고합니다 (아마도 grub.cfg는 아님).

따라서 우분투 사용자는 몇 가지 커널 업그레이드 후 부팅 메뉴가 채워지는 방법을 알고 있습니다. menu.lst 시절에 메뉴를 조정하여 원하지 않는 옵션을 숨기고 여전히 사용 가능한 상태로 유지할 수 있습니다.

예를 들어, grub 메뉴가 다음과 같은 경우

A
B
C
D

B와 C 사이에 빈 옵션을 삽입하여 옵션 C와 D를 보이지 않게 할 수 있습니다. 이런 방식으로 부팅하는 동안 옵션 C와 D는 보이지 않지만 부팅 메뉴에서 아래로 스크롤하면 볼 수 있습니다.

grub.cfg에서 이와 동일한 트릭을 시도해도 결과가 나타나지 않았습니다. 따라서 grub.cfg 파일을 편집하여 새 grub 메뉴를 사용하여 동일한 결과를 얻을 수있는 방법을 찾고 있습니다. 다른 미적 조정도 환영합니다.

감사

EDIT2 : 메뉴 항목을 숨길 수없는 경우 구분 기호를 삽입하는 방법을 원하므로 메뉴는 다음과 같습니다.

A
B

-기타
-C
D


grub.cfg를 모두 변경 하시겠습니까 ? update-grub 을 실행 하여 자동 생성하는 경우 /etc/grub.d 아래의 스크립트를 편집하고 싶을 것입니다 . 간략한 개요는 superuser.com/questions/102692/… 를 참조하십시오 .
quack quixote

@ ~ quack : 약간 도움이되며 꽤 유익합니다. 나는 여전히 메뉴 항목을 숨기거나 적어도 그 사이에 구분 기호를 넣는 방법을 원합니다.
Malabarba

따라서 이전 커널을 제거하는 것은 옵션이 아닌 것 같습니다.
Bobby

답변:


8

먼저 Ubuntu가 Grub2를 구성하는 방법을 이해하십시오.

  • /boot/grub/grub.cfg 는 Grub2 메뉴입니다
  • 갱신 애벌레 명령 해당 파일을 자동 - 생성
  • ... / etc / defaults / grub 에서 기본 설정을 읽음
  • ... 그리고 실행 shellscripts /etc/grub.d

따라서 각 커널 업데이트 후 grub.cfg 를 편집하지 않으려면 update-grub 이 실행될 때마다 변경 사항이 적용되도록 /etc/grub.d 에서 스크립트를 조정해야 합니다.


둘째, 첫 번째 질문에 직접 대답하기 위해 특정 부팅 옵션을 보이지 않지만 Grub 메뉴를 통해 여전히 액세스 할 수있는 방법에 익숙하지 않습니다. Grub1에 대해서는 Grub2에서 다시 구현되지 않은 작은 것들이 많이 있으며, 이것이 Grub1에서 그 중 하나라도 놀라지 않을 것입니다.

대신 메뉴 글꼴 색상을 배경 색상과 동일하게 설정하여 모든 메뉴 항목을 보이지 않게 (강조 표시 될 때까지) 만들 수 있습니다. 에서는 /etc/grub.d/05_debian_theme 변경 menu_color_normal은 상기 제 1 색상 (폰트)가 제 2 색상 (배경)을 일치. menu_color_highlight를 다르게 두면 커서 아래의 항목이 표시됩니다.

# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white

# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white

Grub 메뉴로 구분 기호 가져 오기

Grub1에서 이와 같은 새 항목을 삽입합니다. 내가 기억 하듯이, 루트 선언이 유효한 메뉴 항목이 되려면 루트 선언 이 필요 했습니다. 그렇지 않으면 Grub1이 무시했습니다.

# separator
title  --------------------
root

나는 Grub2가 비슷하다고 생각합니다. grub.cfg 에서 매우 기본적인 메뉴 항목은 다음과 같습니다 .

# basic example
menuentry "Memory test (memtest86)" {
        linux   /boot/memtest86+.bin
}

큰 따옴표의 "anything"이 제목으로 표시되므로 구분 기호를 위조 할 수 있습니다. Grub1과 마찬가지로 Grub2는 linux 키워드가 실제 메뉴 항목으로 취급하기를 원하므로 실수로 선택하지 않도록주의하십시오.

# a separator!  no, really!
menuentry "....." {
        linux   /boot/memtest86+.bin
}

불행하게도, "아무것도"하지 의미 하는가 아무것도 ; 이것을 테스트하는 동안 긴 대시 줄 ( "----------------")을 시도했지만 결코 작동하지 않았습니다. 그러나 위에 표시된 짧은 도트 줄을 좋아하므로 사용할 수 있습니다.

.....

이제 하나의 구분 기호를 만드는 방법입니다. 묶음을 만들고 자동으로 원하는 곳에 배치하려면 /etc/grub.d 의 스크립트에 추가해야합니다 .

이 예에서는 grub.cfg 의 여러 섹션 사이에 간단한 구분 기호를 넣습니다 . /etc/grub.d 를 보면 다음 스크립트가 표시됩니다.

  • 00_ 헤더
  • 05_debian_theme
  • 10_linux-우분투 커널 및 복구 항목
  • 20_memtest86 +-Memtest86 +에 대한 항목
  • 30_os-prober-Windows 및 기타 Linux 배포판 항목
  • 40_custom-기본적으로 아무것도 없습니다. 특별한 사용자 항목은 여기에 갈 수 있습니다

새 스크립트 인 separator 를 만들고 다음을 여기에 넣습니다.

#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
  linux /boot/memtest86+.bin
}
EOF

이제 해당 스크립트를 첫 번째 구분 기호로 옮기고 다른 구분 기호로 연결하십시오. 스크립트는 순서대로 실행되므로 첫 번째 스크립트를 10_linux 앞에 오려면 이름을 09_separator 또는 다른 이름으로 지정하십시오 .

cd /etc/grub.d

# start the editor, paste in the script above, save, and exit
sudo nano separator

# set executable
sudo chmod +x separator

# rename into the first position
mv separator 09_separator

# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator

/ etc / default / grub 에 특정 항목을 기본값으로 설정 한 경우이를 업데이트해야 할 수 있습니다. Grub2는 0에서 메뉴 항목을 세기 시작하고 이러한 "분리 자"는 유효한 항목이므로 계산됩니다. 이전 기본 항목이 0이고 그 앞에 하나의 구분 기호를 추가 한 경우 GRUB_DEFAULT 를 1 로 변경 하십시오.

이제 update-grub을 실행 하고 /boot/grub/grub.cfg를 검사 하십시오. 여기에 구분 기호가 표시됩니다. 만약 그렇다면, 재부팅 후 체크 아웃하십시오.

....

다른 커널 버전 사이에 다른 곳에 구분 기호를 배치하려면 10_linux (또는 다른 스크립트)를 직접 편집 하고 구분 기호를 추가 할 적절한 위치를 찾아야합니다. 위 스크립트에서 줄을 사용할 수 있습니다. 첫 번째 #! / bin / sh 행을 제외한 모든 것을 포함하십시오 .


더 아름다운 것을 원한다면 Grub 스플래시 이미지 또는 테마를 사용하십시오. 이러한 주제에 대해 레인 체크를 해 주어야하지만 아래 리소스를 확인하십시오.


자원:

UbuntuForums에는 두 가지 큰 Grub2 안내서가 있습니다.

GNU Grub 2 는 또 다른 훌륭한 자료입니다. 그는 Karmic의 Grub2를 조정 하는 스크립트 세트를 가지고 있습니다 ( 전체 공개 : 나는 시도하지 않았습니다 ).

Grub Wiki의 테마 형식 페이지는 Grub2 테마를 해킹해야합니다.


와우, 답변 주셔서 감사합니다. 일부 기능이이 버전에 적용되지 않은 것을 아는 것이 부끄러운 일입니다. 이미 구분 기호를 삽입하려고 시도했지만 대괄호 사이에 공백을 두어 작동하지 않았습니다. 위의 모든 것이 작동하는 것 같습니다. 다시 감사합니다.
Malabarba

@ D Connors-그래, Grub1에 대해 몇 가지 놓친 것이 있지만 전반적으로 Grub2가 개선 된 것으로 생각합니다. 자체 학습 곡선이 있습니다. 나는 텍스트 메뉴를 희생하면서 개발자가 Grub2의 그래픽 기능에 더 많은 노력을 기울 였을 것으로 예상하지만 프로젝트가 발전함에 따라 변경 될 수 있습니다.
quack quixote

5

첫 문자가 공백이면 구분 기호는 대시로 만들 수 있습니다. 또한 구분자 섹션에 linux 명령을 사용할 필요가 없으며 다음과 같은 명령을 사용할 수 있습니다.

menuentry " -----------------------------------------------------------" {
  echo "It is just a separator, select another item!"
}

또는 "true"로 자동 반환 :

menuentry " -----------------------------------------------------------" {
  true
}

0

다른 커널을 사용하지 않는다면, 패키지 관리자 인터페이스를 사용하여 제거 할 수 있습니다. grub.cfg에서 자동으로 제거됩니다.


현재 설치를 망칠 때 문제 해결에 거의 사용하지 않습니다. 또한 커널은 단지 예일뿐입니다. 숨기고 싶지만 여전히 사용 가능한 3 개의 다른 부팅 파티션이 있습니다.
Malabarba 2019

(혼란을 피하기 위해. "숨기기"라고 말했을 때 "파티션 숨기기"를 의미하는 것이 아니라 "부팅 메뉴에서 반복적 인 OS 항목 숨기기"만 의미했습니다)
Malabarba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.