Grub은 SSD에서 느리게 로드됩니다.

Grub은 SSD에서 느리게 로드됩니다.

어제부터 컴퓨터에 새로운 SSD를 추가했는데 grub 메뉴에서 부팅하는 것이 매우 빠릅니다. 문제는 이 메뉴에 도달하기까지 오랜 시간(대부분의 경우 약 30초)을 기다려야 한다는 것입니다. SSD에 grub을 설치했습니다. BIOS 후 "Grub loading"이 즉시 표시되는 경우도 있고 커서만 깜박이는 경우도 있지만 메뉴로 이동하는 시간은 동일한 것 같습니다. debug=disk를 추가하려고 시도했지만(심지어 grub.cfg에 debug=all까지) 설명할 수 없는 대기 시간 후에만 로그가 나타납니다.

3개의 디스크가 있습니다. - 부팅 가능으로 표시되고 Windows 부트 로더가 있는 sda - SSD인 sdb - 스왑 및 데이터 파티션이 포함된 sdc. 어제까지 Fedora 18을 설치하지 않았습니다.

이별 설명:

Model: ATA ST3250410AS (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      32.3kB  250GB  250GB  primary  ntfs         boot


Model: ATA M4-CT128M4SSD2 (scsi)
Disk /dev/sdb: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  ext4         boot
 2      1075MB  11.8GB  10.7GB  primary  ext4
 3      11.8GB  33.7GB  21.9GB  primary  ext4


Model: ATA ST3160827AS (scsi)
Disk /dev/sdc: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2149MB  2147MB  primary  linux-swap(v1)
 2      52.4GB  160GB   107GB   primary  fat32           lba

또한 Windows(sda1)에서 종료 시 설명할 수 없는 정지 시간이 발생하지만 이 현상은 1년 전에 처음 발생했습니다.

편집하다 250GB 드라이브를 분리하면 지연이 사라졌습니다. 대기 시간 동안 HDD LED는 깜박이지 않습니다.

무슨 일이야?

답변1

SSD를 첫 번째 SATA 포트에 연결하고 BIOS에서 첫 번째 부팅 장치로 선택해 보세요. 그렇지 않으면 일반적으로 드라이브를 조작하고 구성이 GRUB실제 드라이브 번호(예: BIOS 등에 지정됨 ) hd0와 일치하는지 확인해야 합니다.HD0

답변2

내 노트북 ​​중 하나에서 동일한 문제가 발생했기 때문에 이 문제의 근본 원인과 해결 방법을 알고 있다고 확신하지만 아직 적절한 장기적인 솔루션을 찾지 못했습니다.

grub.cfg가 있는 /boot/grub2 폴더를 확인하세요. 내 말이 맞다면 grub.cfg의 파일 크기는 매우 큽니다. 참고로, 일반적인 grub.cfg는 약 10k(매우 무거운 멀티부트에서는 최대 50k일 수 있음)이지만 파일 크기가 메가바이트 이상인 것은 확실히 손상의 징후입니다.

근본 원인은 다음과 같습니다. 설치 또는 주요 업그레이드 후 마지막 단계는 grub.cfg 파일을 재생성하는 grub2-mkconfig를 실행하는 것입니다. 이는 모든 디스크 등을 검사하는 심각한 프로세스이므로 시간이 다소 걸립니다. 이 파일을 작성한 후 모든 변경 사항이 활성화되도록 시스템은 거의 항상 직접 재부팅됩니다. SSD 디스크의 경우 재부팅으로 인해 디스크가 하드 리셋되고 grub.cfg에 기록된 데이터가 아직 NAND 셀에 안전하게 커밋되지 않은 경우가 발생합니다. 대부분의 경우 데이터는 있지만 파일 닫기(파일 길이 설정 등)가 아직 발생하지 않아 일반 grub.cfg 파일 뒤에 거대한 빈 공간(또는 오래된 디스크 데이터)이 생성됩니다.

이 작업의 효과는 다음과 같습니다. grub2는 grub.cfg 파일을 읽지만 일반 데이터(사용 가능한 부팅 시스템 목록) 이후 더미 데이터(보통 0x00바이트 또는 0x00바이트)를 구문 분석하는 데 약간의 시간(최대 30초)이 걸립니다. 유사), 가끔 오류가 발생하는 경우도 있습니다. 하지만 결국에는 파일의 끝을 찾아서 발견된 올바른 운영 체제 목록을 제공합니다.

수정: 모든 디스크가 사용 가능한지 확인하고 수동 grub2-mkconfig를 실행하고 grub.cfg 파일로 출력합니다. 또는 16진수 편집기를 사용하여 데이터의 실제 끝을 찾은 다음 복사 도구를 사용하여 올바른 바이트 수를 새 파일에 복사한 다음 문제가 있는 grub.cfg를 좋은 grub.cfg로 바꾸십시오.

그러나 모든 시스템 업그레이드에서 동일한 문제가 발생할 수 있으므로 보다 영구적인 수정이 있어야 합니다. 이는 시스템이 종료될 때 모든 SSD 디스크가 모든 데이터를 지속적으로 커밋했는지 확인해야 함을 의미합니다.

관련 정보