예를 들어 NAS IP가 192.168.0.39이고, ID가 lainyzine, SSH 포트는 2022로 설정했다면 다음과 같이 실행하면 됩니다. Password를 물어보면 일단 SSH 서버가 동작하고 있다는 의미입니다. NAS 계정의 비밀번호를 입력해줍니다.
$ ssh -p 2022 lainyzine@192.168.0.39
lainyzine@192.168.0.39's password:
Synology strongly advises you not to run commands as the root user, who has
the highest privileges on the system. Doing so may cause major damages
to the system. Please note that if you choose to proceed, all consequences are
at your own risk.
lainyzine@my-synology-nas:~$
로그인에 성공하면 가능하면 root 계정을 사용하는 것을 권장하지 않는다는 경고 메시지가 나타납니다. 이어서 NAS 셸의 프롬프트가 나타납니다. 이제 SSH로 NAS에서 작업하면 됩니다.
윈도우의 경우 PowerShell에 ssh 명령어가 없는 경우, PowerShell을 관리자 권한으로 실행해서 OpenSSH 클라이언트를 먼저 활성화해주어야합니다.
savedefault insmod part_gpt insmod fat set root=’hd0,gpt1′ if [ x$feature_platform_search_hint = xy ]; then search –no-floppy –fs-uuid –set=root –hint-bios=hd0,gpt1 –hint-efi=hd0,gpt1 –hint-baremetal=ahci0,gpt1 D4F5-1C76 else search –no-floppy –fs-uuid –set=root D4F5-1C76 fi chainloader /EFI/Microsoft/Boot/bootmgfw.efi
스크립트로 처음에 넣어볼까..스크립트로 넣고 새로고침하니 오고있는중으로 뭐가 나오고..
항목편집기의 네임에..#text 들어있고..…아래에 스크립트 다시 복사해서 한번더 넣어주고.. 저장 재부팅하면 다음부터는 네임에 반영되어있음..
이놈은 데스크탑용…
테마는 사이버 펑크…로 지정했음… menuentry “Android-x86-r9.0-k49” –class android –class arch { set root='(hd2,3)’ linux /android-9.0-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug SRC=/android-9.0-r2 initrd /android-9.0-r2/initrd.img }
이놈은 노트북용…
menuentry “Android-x86-r9.0” –class android –class arch { set root='(hd0,1)’ linux /android-9.0-r2/kernel quiet root=/dev/ram0 vmalloc=192M SRC=/android-9.0-r2 initrd /android-9.0-r2/initrd.img }
ex)
menuentry “Lineage x86” { set root='(hdX,Y)’ linux /cm-x86-14.1-rc1/kernel quiet root=/dev/ram0 androidboot.selinux=permissive acpi_sleep=s3_bios,s3_mode SRC=/cm-x86-14.1-rc1 initrd /cm-x86-14.1-rc1/initrd.img }
hdX,Y here is the name of your partition where Android is installed. My installed partition is sda9, so the entry will be hd0,9. For sdb5 the entry would be hd1,5 and so on.
Linux Mint 그외설정
recordfail savedefault load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root=’hd2,gpt4′ if [ x$feature_platform_search_hint = xy ]; then search –no-floppy –fs-uuid –set=root –hint-bios=hd2,gpt4 –hint-efi=hd2,gpt4 –hint-baremetal=ahci2,gpt4 675a7c20-5b9f-4ef3-9205-1834664ec78e else search –no-floppy –fs-uuid –set=root 675a7c20-5b9f-4ef3-9205-1834664ec78e fi linux /boot/vmlinuz-5.4.0-74-generic root=UUID=675a7c20-5b9f-4ef3-9205-1834664ec78e ro quiet splash $vt_handoff initrd /boot/initrd.img-5.4.0-74-generic
윈도우와 리눅스를 듀얼부팅하는 환경에서 아래와 같이 시간이 지속적으로 바뀌는 문제를 발견했다. 윈도우에서 시간을 알맞게 세팅하고 다시 리눅스로 들어오면 리눅스의 시간이 늦어져 있고, 리눅스에서 시간을 맞추면 윈도우에서 시간이 빨라져 있었다. 그래서 이러한 이슈를 검색해 보고 해결한 결과를 포스팅하려고 한다.
1. 데비안에서 시간2. 윈도우에서 시간
문제가 발생하는 이유
이는 윈도우와 데비안(리눅스)의 시간설정 방식의 차이에서 발생하는 문제이다. 윈도우에서는 메인보드에 저장된 시간을 기본값으로 설정하는 반면, 리눅스에서는 GMT(Greenwich Mean Time)를 기준으로 메인보드의 시간과 현재 위치의 시차를 적용하여 시간을 설정하기 때문에 다르게 된다.
예를 들어 메인보드의 시간이 오전1시라고 했을 때, 윈도우는 이를 그대로 가져와서 오전1시로 표시하는 반면, 리눅스에서는 GMT기준 한국의 시간은 GMT+9여서 메인보드의 시간에 9시간을 더해서 오전10시로 표시하는 것이다.
쉽게 말해서, 같은 메인보드의 시간을 사용하는 두 개의 운영체제가 다른 시간설정 방식을 가지고 있어서 발생하는 것이다.
해결방법
따라서 이는 윈도우의 시간 설정 방식을 리눅스의 방식으로 바꾸거나, 리눅스의 시간 설정 방식을 윈도우로 바꿔서 쉽게 해결할 수 있다.
아래 참고 사이트에 가서 보면 알 수 있듯이 윈도우의 시간 설정 방식을 바꾸는 것은 레지스트리를 수정하는 작업이므로, 비교적으로 손쉬운 리눅스의 시간 설정 방식을 메인보드의 시간을 기준으로 표시하도록 바꾸는 방법을 알아보도록 하자.
터미널을 실행시키고 아주 간단하게 다음 명령어를 입력해보자.
timedatectl set-local-rtc 1 --adjust-system-clock
3. 명령어 입력
위 명령어를 실행시키면 리눅스의 시간 설정 방식은 메인모드의 시간에 의존하게 되어 윈도우와 시간차이가 사라지게 된다.
GRUB에 대해 알기 위해서는 먼저 부트로더가 무엇인가에 대해 알 필요가 있습니다. 부트로더는 시스템이 부팅될 때 처음으로 구동되는 프로그램으로, 운영체제가 본격적으로 구동되기 전 필요한 작업을 수행하고 운영체제 커널에서 필요한 제어 정보를 커널 프로그램에 전송하는 역할을 합니다.
GNU GRUB2는 GNU 프로젝트에서 개발하고 있는 멀티부트 지원 부트로더입니다. 이전에는 LILO를 많이 썼었지만 지금은 GRUB으로 통일되다시피 했습니다.
고급 시스템 관리자의 경우에는 GRUB와 관련된 다양한 명령을 이용해 시스템을 좀더 자유롭게 관리하겠지만 초심자의 경우라면 아래에 설명한 내용만으로도 충분할 것입니다.
GRUB 관련 파일과 디렉터리
/boot/grub/grub.cfg
GRUB의 메뉴 정보를 담고 있는 파일로, GRUB 이전 버전의 menu.lst 파일을 대체한 것입니다.
이 파일을 사용자가 직접 편집하여 적용할 수도 있지만 그러기 위해서는 적어도 셸스크립트 작성에 대한 고급 지식을 가지고 있어야 합니다.
모든 사용자가 그 정도의 지식을 가지지는 않고, 설사 지식을 가지고 있더라도 굉장히 번거로운 것은 사실이므로 일반적으로 작성 도구를 사용하게 됩니다.
위의 파일에 담긴 GRUB의 메뉴 정보 및 부팅 과정을 제어하기 위해서 일반적으로 /etc/default/grub 파일을 편집하고 update-grub 명령을 실행하여 해당 편집 내용을 grub.cfg에 적용합니다. 개발진은 이 방법을 권장합니다.
/etc/default/grub
사용자가 GRUB의 메뉴 정보 및 부팅 과정을 제어하기 위해 편집하는 파일입니다.
이 파일을 편집한다고 해서 GRUB에 바로 적용되는 것이 아니라 update-grub 명령을 실행하여 해당 편집 내용을 grub.cfg에 적용해야 합니다.
이 구성 파일은 이전에 사용된 GRUB 레거시 버전에서 사용되었던 menu.lst의 상단 섹션에 포함된 정보와 커널 라인 끝에 포함된 항목을 포함합니다.
우분투 등 리눅스를 설치하면 GRUB도 당연히 설치되며 grub 파일에 가장 일반적인 구성이 설정되어 있습니다. 그러나 해당 구성 내용이 설정가능한 모든 내용은 아니며 그외 다양한 구성을 추가로 설정할 수 있습니다.
사용 중인 운영 체제의 루트 장치에서 커널을 식별하고 이러한 항목에 대한 메뉴 항목을 생성
20_memtest86+
/boot/memtest86+.bin을 검색하여 GRUB 2 부트 메뉴의 옵션으로 포함
30_os-prover
os-prover를 사용하여 Linux 및 기타 운영 체제를 검색하고 결과를 GRUB 2 메뉴에 배치
40_custom
명령 실행 시 grub.cfg에 삽입될 사용자 정의 메뉴 항목을 추가하기 위한 템플릿
/etc/grub.d/에 포함된 스크립트 파일의 예약번호
00_*: 00_header를 위해 예약된 번호 10_*: 네이티브 부트 항목을 위해 예약된 번호 20_*: 서드 파티 앱을 위해 예약된 번호
30_*: 시스템 구동과 관련하여 예약된 번호
40_*: 40번대 이후부터는 사용자 정의 작업에 예약된 번호
GNU GRUB 화면
Ubuntu 단일 OS 메인 화면
Ubuntu – Windows 멀티 OS 메인 화면
Ubuntu용 고급 설정 하위 메뉴 화면
/etc/default/grub 파일 예시
study@study-VirtualBox:~$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
study@study-VirtualBox:~$
편집 후 할 일
/etc/default/grub 파일을 변경하는 경우 나중에 ‘update-grub’을 실행하여 /boot/grub/grub.cfg를 업데이트해주어야 수정 내용이 정상적으로 적용됩니다.
study@study-VirtualBox:~$ sudo update-grub
[sudo] study의 암호:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
grub 설정 파일을 형성합니다 ...
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.8.0-44-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.8.0-44-generic
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.8.0-43-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.8.0-43-generic
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.4.0-52-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.4.0-52-generic
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.4.0-48-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.4.0-48-generic
Adding boot menu entry for UEFI Firmware Settings
완료되었습니다
study@study-VirtualBox:~$
위 내용은 단일 OS(ex : Ubuntu)에서 ‘update-grub’을 실행한 경우입니다.
study@study-VirtualBox:/etc/default$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
grub 설정 파일을 형성합니다 ...
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.8.0-44-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.8.0-44-generic
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.4.0-52-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.4.0-52-generic
리눅스 이미지를 찾았습니다: /boot/vmlinuz-5.4.0-42-generic
initrd 이미지를 찾았습니다: /boot/initrd.img-5.4.0-42-generic
Windows Boot Manager에서 /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi를 찾았습니다
Adding boot menu entry for UEFI Firmware Settings
완료되었습니다
study@study-VirtualBox:/etc/default$
위 내용은 멀티 OS(ex : Ubuntu – Windows)에서 ‘update-grub’을 실행한 경우입니다.
/etc/default/grub 항목 편집
GRUB_DEFAULT=n/xxxx/saved
이 항목은 기본 설정 메뉴를 지정하는 메뉴입니다. 즉, 사용자가 따로 특정 메뉴를 선택하지 않는 한 지정 시간 후에 자동으로 실행되는 메뉴를 설정하는 항목입니다.
GRUB_DEFAULT=n
이 항목의 입력값은 0과 양의 정수와 같은 숫자와 전체 메뉴 할목 인용문 또는 saved로 설정 가능합니다.
grub.cfg의 첫 번째 ‘menuenv’는 GRUB_DEFAULT= 항목에서 숫자 0으로 지정되며 두 번째 ‘menuenv’는 숫자 1로 지정할 수 있습니다. 즉 Grub의 메뉴 항목들은 위에서 부터 차례대로 0, 1, 2, 3 이렇게 초항이 0이고 공차가 1인 등차수열의 숫자로 지정됩니다.
GRUB 하위 메뉴 지정
GRUB 1.99부터는 하위메뉴 구조를 도입하게 되었습니다. 예를 들어 사용자가 세 번째 주메뉴의 첫 번째 하위 메뉴를 기본 설정값으로 지정하고자 한다면 “2>0″으로 지정하면 됩니다.
이때 반드시 따옴표로 감싸주어야 합니다.
하위 메뉴를 지정해준다고 하더라도 GRUB 메뉴 화면이 바로 하위 메뉴 화면으로 진입하지는 않습니다.
만약 “2>2″로 지정한다면 GRUB 메뉴 화면에서 세 번째 주메뉴가 선택된 상태로 표시되며 그 상태에서 엔터키를 눌러 다음으로 넘어가면 하위 메뉴에서 세번째 메뉴 항목이 선택되어 있는 상태로 표시됩니다.
GRUB_DEFAULT=”xxxx”
따옴표를 포함한 정확한 메뉴 항목으로도 지정할 수 있습니다.
GRUB_DEFAULT=saved
위와 같이 지정하면 “grub-reboot” 또는 “grub-set-default” 명령을 사용하여 향후 부팅에 대한 기본 OS를 설정할 수 있습니다.
study@study-VirtualBox:~$ grep menuentry /boot/grub/grub.cfg
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-61dcad89-696f-4823-a41f-f38ab0d82100' {
submenu 'Ubuntu용 고급 설정' $menuentry_id_option 'gnulinux-advanced-61dcad89-696f-4823-a41f-f38ab0d82100' {
menuentry '리눅스 Ubuntu가 있는, 5.8.0-44-generic입니다' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-44-generic-advanced-61dcad89-696f-4823-a41f-f38ab0d82100' {
menuentry 'Ubuntu, with Linux 5.8.0-44-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-44-generic-recovery-61dcad89-696f-4823-a41f-f38ab0d82100' {
menuentry '리눅스 Ubuntu가 있는, 5.8.0-43-generic입니다' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-43-generic-advanced-61dcad89-696f-4823-a41f-f38ab0d82100' {
menuentry 'Ubuntu, with Linux 5.8.0-43-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-43-generic-recovery-61dcad89-696f-4823-a41f-f38ab0d82100' {
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
study@study-VirtualBox:~$
menuentry 옆의 따옴표 안의 내용이 메뉴의 정확한 이름입니다.
grub-reboot 명령은 다음 부팅에 대해서만 기본 부팅 항목을 설정하며 설명 내용은 위와 같습니다.
GRUB_SAVEDEFAULT=true
위 문구를 추가하면 마지막으로 사용한 메뉴 항목이 차후 부팅 메뉴로 설정됩니다.
이 구성은 기본 OS를 설정하기 위해 명령을 실행할 필요가 없습니다. GRUB 2 메뉴에서 메뉴 항목을 수동으로 선택할 때마다 해당 항목이 차후 부팅 시의 기본 OS가 됩니다. /boot 디렉토리가 LVM 파티션 또는 RAID에 있는 경우 이 구성은 작동하지 않습니다.. 이 구성은 위에서 설명한 GRUB_DEFAULT=saved도 같이 설정되어야 합니다.
GRUB_HIDDEN_TIMEOUT=n
설정된 시간 안에 사용자가 키를 누르지 않으면 메뉴가 나타나지 않습니다.
설정값이 0인 경우
시스템에 설치되어 있는 OS가 하나만 존재하는 경우 Grub 부팅 메뉴는 표시되지 않으며 시스템은 바로 기본 OS로 부팅됩니다. 시스템 OS가 하나만 설치되 있음에도 불구하고 Grub 부팅 메뉴를 표시하려면 이 구성줄의 시작 부분에 # 기호를 붙여 주석처리하고 GRUB_TIMEOUT= 구성의 설정값을 양의 정수(1 이상의 자연수)로 설정해주어야 합니다. 설정값이 0으로 설정되어 있음에도 불구하고 부팅 메뉴를 표시하려면 시스템이 부팅되자마자 Shift키를 누르고 있으면 됩니다. GRUB 2서 부팅 과정 중에 중에 SHIFT 키가 눌린 것을 확인하면 메뉴가 표시된다.
설정값이 N(양의 정수)인 경우
부팅 과정이 일시 중단되고 지정한 수의 초 시간동안 빈화면 또는 지정된 스플래시 이미지가 표시됩니다.
지정된 시간이 지나면 부팅 과정이 진행되며 이때 메뉴는 표시되지 않습니다.
지정된 시간 내에 아무 키나 누르면 메뉴가 표시됩니다.
이때 메뉴는 GRUB_TIMEOUT= 구성에서 설정한 시간 동안 메뉴가 표시됩니다.
GRUB_HIDDEN_TIMEOUT_QUIET=true/false
GRUB_HIDDEN_TIMOUT 기능을 사용할 때 빈 화면에 카운트다운 타이머를 표시할지 결정합니다.
설정값을 true로 설정하면 카운터가 표시되지 않습니다.
설정값을 false로 설정하면 GRUB_HIDDEN_TIMEOUT 값 기간 동안 빈 화면에 표시됩니다.
GRUB_TIMEOUT_STYLE=menu/hidden
이 옵션을 설정하지 않거나 ‘menu’로 설정하면 GRUB에서 메뉴를 표시한 다음 기본 항목을 부팅하기 전에 ‘GRUB_TIMEOUT’에 설정된 시간 초과가 만료 될 때까지 기다립니다.
키를 누르면 타임 아웃이 중단됩니다.
이 옵션이 ‘countdown’또는‘hidden’으로 설정되어 있으면 메뉴를 표시하기 전에 GRUB는 ‘GRUB_TIMEOUT’에 설정된 타임 아웃이 만료될 때까지 기다립니다.
이 시간 내에 ESC를 누르면 메뉴가 표시되고 입력을 기다립니다.
메뉴 항목과 관련된 핫키를 누르면 관련 메뉴 항목이 즉시 부팅됩니다.
이러한 상황이 발생하기 전에 시간 초과가 만료되면 기본 항목이 부팅됩니다.
‘카운트 다운’의 경우 남은 시간을 한 줄로 표시합니다.
GRUB_TIMEOUT=n
OS가 부팅되기 전 메뉴가 표시되는 시간(초)을 설정합니다. 이 구성은 GRUB_HIDDEN_TIMOUT 구성이 만료될 때 시작됩니다. 이 값을 -1로 설정하면 사용자가 선택할 때까지 메뉴가 표시됩니다. 단일 OS 시스템에서는 기본적으로 이 설정이 사용되지 않고 메뉴가 표시되지 않습니다.
tempo가 480이고 duration 이 1이면 0.125 초의 신호음이 울립니다. 긴 곡을 만들면 메뉴 표시가 지연됩니다.
온라인 설명서는 터미널에 info grub –index-search play를 입력하여 사용할 수 있습니다.
GRUB_BACKGROUND=
‘gfxterm’그래픽 터미널에 사용할 배경 이미지를 설정합니다.
배경 이미지를 설정하고자 하는 경우 이미지의 전체 경로를 적어줍니다.
이 옵션의 값은 부팅시 GRUB에서 읽을 수있는 이미지 파일이어야 합니다.
GRUB에서 지원하는 이미지 파일 확장자 형식은 .png, .tga, .jpg 또는 .jpeg입니다..
화면에 맞게 필요한 경우 이미지 크기가 조정됩니다.
자세한 내용 및 기타 옵션은 위의 스플래시 이미지 구성을 참조하시면 됩니다.
GRUB_DISABLE_OS_PROBER=true
일반적으로 grub-mkconfig는 설치된 경우 외부 os-prober 프로그램을 사용하여 동일한 시스템에 설치된 다른 운영 체제를 검색하고 적절한 메뉴 항목을 생성합니다.
만약 설정값을 “true”로 지정하면 update-grub 명령을 실행하는 동안 Windows, Linux, OSX 및 Hurd를 포함한 운영 체제에 대한 다른 파티션의 os-prober 검사를 비활성화합니다. 즉, GRUB가 메뉴에 os-prober의 결과를 추가하는 것을 막는데 사용됩니다.
Do you dual boot often? Well make the Bootloader Selection Screen Awesome! Here are my top 5 GRUB Bootloader themes.
All-In-One PackThis Pack is everything below so you can swap between them. It is a custom script I made so I can choose any of my favorite bootloaders below. This may not include original project updates as they happen, so check the source links below if one of the themes doesn’t work for you!
Installation
git clone https://github.com/ChrisTitusTech/Top-5-Bootloader-Themes
cd Top-5-Bootloader-Themes
sudo ./install.sh