정확히, Grub Stage1은 어떻게 Stage 2에 액세스/로드합니까?

정확히, Grub Stage1은 어떻게 Stage 2에 액세스/로드합니까?

이것은 나의 첫 번째 질문이며 Red Hat 강사에게 이 질문을 했지만 만족스러운 답변을 찾지 못했습니다.

저는 RHEL/CENTOS6, GRUB Legacy 0.97을 사용하고 있으며 Linux 부팅 프로세스를 설명하는 많은 문서를 읽었습니다.

거의 모든 블로그, 문서 등은 관련된 단계와 전체 프로세스를 설명하는 데 성공하지만 grub stage2가 로드될 때 실제로 발생하는 일에는 모두 한결같이 실패합니다.

이것은 프로세스와 일부 테스트에 대한 나의 이해입니다.

  1. BIOS(EFI 사용 안 함)는 MBR을 읽고, 파티션 테이블을 찾고, GRUB stage1(처음 446바이트)을 메모리에 로드합니다.
  2. 내 /boot 파티션은 1024개의 실린더 미만이고, 여러 문서에서 제가 가져온 아이디어는 stage2가 1024개의 실린더 미만인 경우 GRUB stage1이 stage2를 직접 로드할 수 있다는 것입니다. 내가 본 일부 문서에서는 stage1.5가 MBR 다음 섹터 63 앞에 위치한다고 언급하고 다른 문서에서는 디스크의 처음 1MB 어디에나 있을 수 있다고 말하고 다른 그룹에서는 stage1.5가 단지 GRUB v2일 뿐이라고 주장합니다. 존재하다. 이전 버전의 GRUB에 적용 가능합니다.
  3. GRUB stage2에는 파일 시스템을 읽고 커널과 램디스크를 로드하고 제어권을 커널에 넘기는 데 필요한 모든 드라이버/모듈이 있습니다.
  4. 커널은 RHEL/CENTOS 6에서 init를 시작하고 RHEL/CENTOS 7에서 systemd를 시작합니다.

디스크의 첫 번째 MB에 모든 데이터를 덤프했으며 MBR 외에는 아무것도 없음을 확인할 수 있습니다. 446바이트 GRUB stage1이 파일 시스템에서 stage2를 어떻게 로드하는지 궁금합니다. Wikipedia의 일부 이미지와 일부 문서에 따르면 GRUB가 설치되면 stage1에는 stage2를 가리키는 LBA48이 포함됩니다.

실제로 /boot/grub/ 디렉터리에서 stage2를 제거하거나 이름을 바꾸면 시스템이 부팅되는지 테스트해 보았습니다. 파일 시스템에 stage2가 없더라도 시스템은 계속 부팅할 수 있습니다.

/dev/sda의 첫 번째 MB

[root@chief zul.kifal]# dd if=/dev/sda bs=1024k count=1 | hexdump -C
00000000  eb 48 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.H..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 03 02  |.........|...t..|
00000040  80 00 00 80 fc 49 08 00  00 08 fa 90 90 f6 c2 80  |.....I..........|
00000050  75 02 b2 80 ea 59 7c 00  00 31 c0 8e d8 8e d0 bc  |u....Y|..1......|
00000060  00 20 fb a0 40 7c 3c ff  74 02 88 c2 52 f6 c2 80  |. ..@|<.t...R...|
00000070  74 54 b4 41 bb aa 55 cd  13 5a 52 72 49 81 fb 55  |tT.A..U..ZRrI..U|
00000080  aa 75 43 a0 41 7c 84 c0  75 05 83 e1 01 74 37 66  |.uC.A|..u....t7f|
00000090  8b 4c 10 be 05 7c c6 44  ff 01 66 8b 1e 44 7c c7  |.L...|.D..f..D|.|
000000a0  04 10 00 c7 44 02 01 00  66 89 5c 08 c7 44 06 00  |....D...f.\..D..|
000000b0  70 66 31 c0 89 44 04 66  89 44 0c b4 42 cd 13 72  |pf1..D.f.D..B..r|
000000c0  05 bb 00 70 eb 7d b4 08  cd 13 73 0a f6 c2 80 0f  |...p.}....s.....|
000000d0  84 f0 00 e9 8d 00 be 05  7c c6 44 ff 00 66 31 c0  |........|.D..f1.|
000000e0  88 f0 40 66 89 44 04 31  d2 88 ca c1 e2 02 88 e8  |[email protected]........|
000000f0  88 f4 40 89 44 08 31 c0  88 d0 c0 e8 02 66 89 04  |[email protected]..|
00000100  66 a1 44 7c 66 31 d2 66  f7 34 88 54 0a 66 31 d2  |f.D|f1.f.4.T.f1.|
00000110  66 f7 74 04 88 54 0b 89  44 0c 3b 44 08 7d 3c 8a  |f.t..T..D.;D.}<.|
00000120  54 0d c0 e2 06 8a 4c 0a  fe c1 08 d1 8a 6c 0c 5a  |T.....L......l.Z|
00000130  8a 74 0b bb 00 70 8e c3  31 db b8 01 02 cd 13 72  |.t...p..1......r|
00000140  2a 8c c3 8e 06 48 7c 60  1e b9 00 01 8e db 31 f6  |*....H|.......1.|
00000150  31 ff fc f3 a5 1f 61 ff  26 42 7c be 7f 7d e8 40  |1.....a.&B|..}.@|
00000160  00 eb 0e be 84 7d e8 38  00 eb 06 be 8e 7d e8 30  |.....}.8.....}.0|
00000170  00 be 93 7d e8 2a 00 eb  fe 47 52 55 42 20 00 47  |...}.*...GRUB .G|
00000180  65 6f 6d 00 48 61 72 64  20 44 69 73 6b 00 52 65  |eom.Hard Disk.Re|
00000190  61 64 00 20 45 72 72 6f  72 00 bb 01 00 b4 0e cd  |ad. Error.......|
000001a0  10 ac 3c 00 75 f4 c3 00  00 00 00 00 00 00 00 00  |..<.u...........|
000001b0  00 00 00 00 00 00 00 00  19 aa 09 00 00 00 80 20  |............... |
000001c0  21 00 83 dd 1e 3f 00 08  00 00 00 a0 0f 00 00 dd  |!....?..........|
000001d0  1f 3f 8e fe ff ff 00 a8  0f 00 00 58 f0 04 00 00  |.?.........X....|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0184614 s, 56.8 MB/s

매직워드 0044-0047h = 0x000849fc

00000040  80 00 00 80 **fc 49 08 00**  00 08 fa 90 90 f6 c2 80  |.....I..........|

[root@chief zul.kifal]# dd if=/dev/sda skip=$((0x849fc)) bs=512 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00260914 s, 196 kB/s
00000000  52 56 5e bf f8 81 66 8b  2d 83 7d 04 00 0f 84 c4  |RV^...f.-.}.....|
00000010  00 80 7c ff 00 74 3e 66  8b 1d 66 31 c0 b0 7f 39  |..|..t>f..f1...9|
00000020  45 04 7f 03 8b 45 04 29  45 04 66 01 05 c7 04 10  |E....E.)E.f.....|
00000030  00 89 44 02 66 89 5c 08  c7 44 06 00 70 50 66 31  |..D.f.\..D..pPf1|
00000040  c0 89 44 04 66 89 44 0c  b4 42 cd 13 0f 82 93 00  |..D.f.D..B......|
00000050  bb 00 70 eb 56 66 8b 05  66 31 d2 66 f7 34 88 54  |..p.Vf..f1.f.4.T|
00000060  0a 66 31 d2 66 f7 74 04  88 54 0b 89 44 0c 3b 44  |.f1.f.t..T..D.;D|
00000070  08 7d 68 8b 04 2a 44 0a  39 45 04 7f 03 8b 45 04  |.}h..*D.9E....E.|
00000080  29 45 04 66 01 05 8a 54  0d c0 e2 06 8a 4c 0a fe  |)E.f...T.....L..|
00000090  c1 08 d1 8a 6c 0c 5a 52  8a 74 0b 50 bb 00 70 8e  |....l.ZR.t.P..p.|
000000a0  c3 31 db b4 02 cd 13 72  3a 8c c3 8e 45 06 58 c1  |.1.....r:...E.X.|
000000b0  e0 05 01 45 06 60 1e c1  e0 04 89 c1 31 ff 31 f6  |...E........1.1.|
000000c0  8e db fc f3 a4 1f 61 83  7d 04 00 0f 85 42 ff 83  |......a.}....B..|
000000d0  ef 08 e9 34 ff 5a ea 00  82 00 00 be 05 81 e8 3d  |...4.Z.........=|
000000e0  00 eb 06 be 0a 81 e8 35  00 be 0f 81 e8 2f 00 eb  |.......5...../..|
000000f0  fe 4c 6f 61 64 69 6e 67  20 73 74 61 67 65 32 00  |.Loading stage2.|
00000100  2e 00 0d 0a 00 47 65 6f  6d 00 52 65 61 64 00 20  |.....Geom.Read. |
00000110  45 72 72 6f 72 00 bb 01  00 b4 0e cd 10 46 8a 04  |Error........F..|
00000120  3c 00 75 f2 c3 00 00 00  00 00 00 00 00 00 00 00  |<.u.............|
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  fd 49 08 00 f6 00 20 08  |.........I.... .|
00000200

(/boot) 2048년부터 시작됩니다.

# fdisk -lu /dev/sda

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009aa19

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux Par...
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

누구든지 설명해 주시면 매우 감사하겠습니다.

답변1

~에서https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-grub-whatis.html

US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-grub-whatis.html

GRUB는 다음 단계에서 메모리에 로드됩니다.

첫 번째 단계 또는 기본 부트 로더는 BIOS에 의해 MBR[1]에서 메모리로 읽혀집니다. 기본 부트 로더는 MBR 내 512바이트 미만의 디스크 공간에 상주하며 1.5단계 또는 2단계 부트 로더를 로드할 수 있습니다.

1단계 부트 로더는 필요한 경우 1단계 부트 로더를 메모리로 읽습니다. 일부 하드웨어에서는 2단계 부트로더에 들어가려면 중간 단계가 필요합니다. 이는 /boot/ 파티션이 하드 드라이브의 1024 실린더 위에 있거나 LBA 모드를 사용할 때 발생하는 경우가 있습니다. 1.5단계 부트 로더는 /boot/ 파티션이나 MBR 및 /boot/ 파티션의 작은 부분에 있습니다.

2단계 또는 보조 부트 로더가 메모리로 읽혀집니다. 보조 부트 로더는 GRUB 메뉴와 명령 환경을 표시합니다. 이 인터페이스를 사용하면 부팅할 커널이나 운영 체제를 선택하고, 매개변수를 커널에 전달하거나, 시스템 매개변수를 볼 수 있습니다.

상당히 명백해 보이는 두 번째 단계는 실제 grub 바이너리입니다. 실제로 문서에는 grub 2가 이름으로 로드된다고 명시되어 있습니다.

나는 이것을 시도할 것이다:

dd if=/dev/zero of=/boot/stage2

추가 자료:

/boot/grub을 확인하세요:

stage1 부트로더 사본:

stage1

stage1_5용 파일:

e2fs_stage1_5  
fat_stage1_5  
jfs_stage1_5  
minix_stage1_5  
reiserfs_stage1_5  
xfs_stage1_5

stage2 파일:

stage2

그럽 미러 링크:

유충

답변2

IBM PC 부팅 BIOS 순서를 준수하는 컴퓨터의 경우:

  • 디스크의 MBR(절대 섹터 0)은 BIOS에 의해 메모리 0000:7C00에 로드됩니다.
  • 코드가 실행됩니다.

IBM에서 W7까지

IBM PC가 부팅하는 데 사용하는 코드는 여기에서 볼 수 있습니다.
IBM® Personal Computer™ DOS 2.00의 첫 번째 MBR 버전

이 코드에는 여러 버전이 있으며 starman 페이지에도 표시됩니다.
이러한 다양한 버전에 대한 시작점은 다음 페이지일 수 있습니다.
MS-DOS 3.30에서 MS-Windows™ 95(A)로

가장 일반적인 MBR 코드 중 하나는 다음과 같습니다.
MBR: MS-Windows™ 95B, 98, 98SE 및 ME

대부분의 코드 버전은 다음 VBR(볼륨 부트 레코드)을 로드하는 데 사용됩니다. 파티션의 VBR은 파티션 테이블에서 파티션을 부팅 가능한 것으로 표시하고 실행이 해당 파티션으로 전송됩니다.
(VBR은 절대 디스크 섹터 0 또는W7 마스터 부트 레코더)

다음에서 이 어셈블러 주석을 검색하세요.W7 마스터 부트 레코더페이지:

;다음 코드는 INT 13, 함수 42h("확장 읽기")를 사용하여 읽습니다
. ;;부팅 가능한 파티션의 첫 번째 섹터(VBR)를 메모리 위치 0x7c00에 배치합니다.

Windows™ 7(및 Vista) VBR(볼륨 부트 레코드)

이것을 읽는 것이 흥미 롭습니다.W7VBR페이지:

;다음 코드는 INT 13, 함수 42h("확장 디스크 읽기")를 사용하여 ;부트 레코드 영역 1 섹터의 나머지 15개 섹터를 ;메모리에 위치 7E00부터 배치합니다.

부팅 코드가 MBR(디스크 섹터 0)에서 시작하고 VBR(볼륨 부트 레코드) 및 많은(W7의 경우 15) 후속 섹터를 로드하는 것을 확인할 수 있습니다.

애벌레

하지만 여기서는 GRUB에 대해 이야기하고 있으므로GRUB 페이지:

다음 코드를 검색하세요.

[7C44] -> Note: A very important location for anyone using GRUB!
          This (4-byte) Quad-Word contains the location of GRUB's
          stage2 file in sectors! It's called "stage2_sector" in
          the stage1.S code. If GRUB is installed in the MBR by a
          distro that always includes a number of sectors from
          stage2 immediately following the GRUB MBR, you will see
          the bytes 01 00 00 00 in this location; otherwise, it
          will point to stage2 in the "/boot/grub" directory.

이것은 거의 항상 01 00 00 00(또는 그냥 다음 섹터)입니다.

이는 BIOS가 절대 섹터 0(MBR)을 로드하고 MBR에 설치된 GRUB 코드가 다음 섹터를 계속 읽는다는 의미입니다. (GRUB2) 최근 릴리스의 크기 core.img(~60 섹터 또는 ~30kB). 오늘날의 드라이브는 MBR 뒤에 1MB의 여유 공간을 남겨두므로 문제가 없습니다. EFI 디스크에는 이 모든 코드에 대해 별도의 파티션이 있으며 문제(예: 크기 문제)가 적습니다.

답변

이전 버전의 GRUB는 MBR 및 다음 62개 섹터 중 여러 개/그 이상에 stage2(또는 일부 특수한 경우 선택적으로 1.5단계)를 기록합니다.

이미지에도 설명이 나와있어요위키피디아 그럽 페이지.

GNU 웹사이트에서GRUB 이미지 파일 10개:

stage1
   This is an essential image used for booting up GRUB. Usually, this is
   embedded in an MBR or the boot sector of a partition. Because a PC boot
   sector is 512 bytes, the size of this image is exactly 512 bytes.
   All stage1 must do is to load Stage 2 or Stage 1.5 from a local disk.
   Because of the size restriction, stage1 encodes the location of Stage 2
   (or Stage 1.5) in a block list format, so it never understand any
   filesystem structure. 

노트:stage2는 다른 물리적 디스크에 쓸 수 있습니다.GRUB 페이지에서:

[7C40] -> 80 ("Boot Drive") NOTE: For those of you with multi-OS
          booting systems, if your Linux installation with GRUB's
 See:     remaining software (stage2, menu file, etc.) is located
 7C5A     somewhere other than on the Primary Master drive, this
          value will be 81, 82, etc. depending upon which drive
          that Linux OS's /boot/grub directory is located. In the
          stage1.S file, it's called the GRUB_INVALID_DRIVE byte
          and commented as: "the disk to load stage2 from." (The
          word INVALID has something to do with the code logic.)

이 답변이 작성되었을 때 LVM의 디스크 사용량에 대한 기본 세부 정보는 공개되지 않았습니다. LVM 파티션은 많은 파티션을 포함할 수 있으며 일반적으로 그렇습니다.논리적(물리적은 아님) 파티션. LVM 파티션의 구조는 복잡하며 이 질문의 범위를 벗어납니다. 주어진 파티션 테이블을 기반으로 이러한 파티션은 파티션 1 뒤에 오고 OP에서 보고한 (대략) 256MB에서 시작한다고 말하면 충분합니다. 이것이 바로 포인터가 (물리적) 디스크 내에서 약 256MB를 가리키는 이유입니다(OP에서 보고한 대로).

답변3

GRUB Legacy는 Stage 1.5 유무에 관계없이 다양한 방법으로 설치할 수 있습니다.

설치시레벨 1.5, MBR의 포인터는 1.5단계의 시작을 가리킵니다. MBR 코드는 1.5단계의 첫 번째 블록을 로드합니다. 이 블록의 코드에는 로드할 추가 블록 목록과 2단계를 찾을 위치를 지정하는 BIOS 파티션 번호 및 파일 이름이 포함되어 있습니다.

하지만 OP의 경우 GRUB Legacy가 이미 설치되어 있습니다.1.5단계 없음Loading stage2, 두 번째 16진수 덤프의 텍스트에 표시된 대로입니다. 이 경우 MBR은 Stage 2의 첫 번째 블록을 직접 로드하며, Stage 1.5의 경우와 마찬가지로 첫 번째 블록에는 로드할 다른 블록의 목록이 포함됩니다.

스테이지 1.5와 스테이지 2 사이의 분리로 인해 이전 DOS 호환성 규칙(트랙 #1, 헤드 #0의 시작 부분에서 첫 번째 파티션 시작)을 사용하는 경우에도 스테이지 1.5가 MBR과 첫 번째 파티션의 시작 사이에 포함될 수 있습니다. 디스크에서도 마찬가지입니다. , 최신 운영 체제처럼 블록 #2048(즉, 디스크 시작 부분에서 정확히 1MiB)에서 시작하는 것이 아닙니다. 2단계는 MBR과 파티션 시작 사이의 영역에 맞지 않을 수 있지만 1.5단계는 하나의 파일 시스템 유형만 읽을 수 있으면 되므로 크기가 더 작습니다.

설치시레벨 1.5, GRUB Legacy의 2단계는 절대 블록 번호가 아닌 파일 이름으로 로드되므로 일반 파일처럼 처리할 수 있습니다. 하지만 설치 후1.5단계 없음, 단계 2는 설치 프로그램이 배치한 블록 위치에서 디스크로 이동하지 못할 수 있습니다. 파일이 실수로 이동되지 않도록 파일 시스템 유형별 작업을 수행해야 합니다. 예를 들어 VFAT 파일 시스템에서 2단계 파일은 "시스템" 및 "읽기 전용" 특성으로 표시되어야 합니다.

물론 사용 가능한 공간이 맞는 경우 설치 프로그램은 MBR과 첫 번째 파티션의 시작 부분 사이에 2단계를 포함할 수 있습니다. 이 경우 파일 시스템 내 작업을 방해하는 것은 문제가 되지 않습니다.

OP의 두 번째 16진수 덤프의 끝 부분은 다음과 같습니다.

000001f0  00 00 00 00 00 00 00 00  fd 49 08 00 f6 00 20 08

여기에는 여러 개의 8바이트 블록 목록 구조로 로드할 추가 블록의 사양이 포함되어 있습니다. 이 경우에는 "블록 #0x000849fd에서 시작하는 블록 0x00f6을 16비트 세그먼트 주소 0x0820으로 로드" 중 하나만 있습니다. 블록 번호는 전체 LBA48 블록 번호가 아닌 32비트에 불과합니다. 이는 GRUB 레거시가 대용량 디스크의 전체 용량에 액세스하는 것을 제한합니다.

  1. BIOS(EFI 사용 안 함)는 MBR을 읽고, 파티션 테이블을 찾고, GRUB stage1(처음 446바이트)을 메모리에 로드합니다.

이것은 절대적으로 정확합니다.

  1. 내 /boot 파티션은 1024개의 실린더 미만이고, 여러 문서에서 제가 가져온 아이디어는 stage2가 1024개의 실린더 미만인 경우 GRUB stage1이 stage2를 직접 로드할 수 있다는 것입니다.

기술적으로는 "32비트 LBA 블록 번호로 주소 지정이 가능한 모든 위치"이지만 그렇지 않으면 정확합니다. BIOS가 LBA 액세스를 지원하지 않으면 "1024개 미만의 실린더"가 작동하게 되고 GRUB는 이전 C/H/S 스타일 BIOS 호출로 대체해야 합니다. 그러나 2000 이후 하드웨어에서는 그렇지 않습니다. 문제가 발생해서는 안 됩니다.

내가 확인한 일부 문서에서는 stage1.5가 MBR 다음 섹터 63 앞에 위치한다고 언급했는데,

만약에stage1.5에서는 일반적으로 여기서 끝납니다. 그렇지 않다~ 해야 하다하지만 거기 있어주세요. 위에서 말했듯이 "섹터 63 이전"은 첫 번째 파티션의 시작에 대한 오래된 DOS 규칙에서 유래되었습니다.

다른 사람들은 디스크의 처음 1MB 이내 어디에나 있을 수 있다고 제안했습니다.

실제로는 32비트 블록 번호로 주소 지정이 가능한 어느 곳이든 가능하지만 처음 1MB가 해당 위치에 있습니다.대개즉, 1.5단계를 완전히 사용한 경우입니다. "첫 번째 1MB"는 파티션 시작을 디스크 시작부터 정확히 1MiB로 설정하는 최신 SSD/SAN 친화적 규칙에서 비롯됩니다. 이는 상당히 큰 전력이므로 더 큰 블록 크기에 잘 맞춰집니다. , RAID 스트라이프 크기 및/또는 스토리지 하드웨어에 있을 수 있는 기타 정렬 기본 설정입니다.

stage1.5는 GRUB v2 전용이며 이전 버전의 GRUB에는 적용되지 않는다고 주장하는 또 다른 조직이 있습니다.

문서는 정반대입니다. stage1.5는 GRUB Legacy에만 해당됩니다.오직.

  1. GRUB stage2에는 파일 시스템을 읽고 커널과 램디스크를 로드하고 제어권을 커널에 넘기는 데 필요한 모든 드라이버/모듈이 있습니다.

옳은.

  1. 커널은 RHEL/CENTOS 6에서 init를 시작하고 RHEL/CENTOS 7에서 systemd를 시작합니다.

약간 단순화되었지만 기본적으로 정확합니다.

RHEL/CentOS 6에서 첫 번째 사용자 공간 프로세스는 처음에 /init초기 램디스크 파일에서 실행됩니다. 이는 실제로 마지막 작업이 실행되거나 이와 유사한 스크립트입니다 exec switch_root <mountpoint_of_real_root_filesystem> /sbin/init <arguments>.

/initRHEL/CentOS 7에서는 실제로 접두사가 있는 일부 시스템별 매개변수를 인식하는 특수 버전을 실행하는 initramfs 내의 링크 입니다 . 이전 버전의 스크립트와 마찬가지로 루트 파일 시스템에 액세스하는 데 필요한 모든 것을 설정한 다음 실제 루트 파일 시스템의 "전체" 버전을 설정합니다./usr/lib/systemd/systemdsystemdrd./initexec()systemd

답변4

내가 한 일은 Hiren.info의 자동 그럽 로더를 사용하여 USB 플래시 드라이브에 로드하도록 Hiren의 부팅 CD를 구성하고 마운트하는 것뿐이었습니다. 일단 부팅 가능한 Hiren의 USB 드라이브가 있으면 메인 드라이브의 HDD를 조정했습니다. 파티션의 크기는 다음과 같습니다. 백엔드 플래시 드라이브에서 1GB 감소 그런 다음 할당되지 않은 공간에 ext4 파티션을 만들었습니다. 다음으로 내가 한 일은 RIPLinuX의 xterm에서 grub2config 명령을 실행하는 것이었고 설치는 비교적 자동으로 이루어졌습니다. 마법사를 사용하면 grub2 설치를 위한 파티션과 디렉터리를 선택할 수 있습니다. 로더를 플래시 드라이브의 기본 파티션에서 mbr로 설정하고 ext4 /boot/grub을 grub2 파일의 설치 디렉터리로 설정했습니다. grub2config 설치 도움말

무슨 일이 일어났는지는 grub2 grldr이 플래시 드라이브의 기본 파티션 루트에 있는 이전 grldr을 대체했다는 것입니다. 새 menu.lst 파일을 자동화 마법사에서 선택한 부팅 옵션으로 바꾸기 전에 이전 menu.lst 파일을 백업할 수 있습니다. 4 또는 5단계 프로세스를 완료한 후(구성 기본 설정에 따라) 간단히 시스템을 재부팅하고 USB 디스크를 부팅 장치로 선택한 다음 grub2 menu.lst가 부팅 옵션을 로드할 때 문자 "c"를 입력하기만 하면 됩니다. grub2 명령 인터페이스로 들어갑니다. 이제 휴대용 grub2 환경을 완전히 로드하고 부팅할 수 있습니다.grub2 명령 목록 1 grub2 명령 목록 2grub2 명령 목록 3

여기에 게시된 추가 스크린샷: https://www.minds.com/groups/profile/924192575922864128

관련 정보