Arch Linux 참고 3
분구
익숙하지 않아서 찾아보면서 진행했어요.
현재 Arch Linux의 부팅 환경은 UEFI입니다.
VirtualBox 가상 스토리지는 20GB로 제작되었습니다.
장치 확인
lsblk -l
또는 fdisk -l
를 통해 확인할 수 있습니다.lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 653.4M 1 loop /run/archiso/airootfs
sda 8:0 0 20G 0 disk
sr0 11:0 1 807.3M 0 rom /run/archiso/bootmnt
대략loop0과 sr0은 ArchLinux의 iso 이미지 자체를 가리키는 거죠?내 생각엔sda는 VirtualBox 가상 스토리지입니다.
다음은
fdisk -l
.fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 byutes, 41943040 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk /dev/loo0: 653.41 MiB, 685150208 byutes, 1338184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
와 lsblk
의 디스플레이 내용의 취지는 다르다.lsblk
블록 장치의 디스플레이를 중요시하는지 여부.분구 기초
파티션은 스토리지 디바이스를 분할하는 데 사용되는 메커니즘입니다.
예를 들어 OS 부팅용 프로그램이 일반 데이터와 같이 마우스 포인터로 삭제하거나 편집할 수 있다면 OS를 부팅하지 못할 수도 있다는 구분의 뜻이 있는 것 아닌가 싶습니다.
OS 이니시에이터의 파티션과 데이터가 저장된 파티션을 적어도 생성해야 합니다.
그렇다면 파티에서 분할하기 위한 구조다.스토리지의 시작 위치와 OS 부팅, 데이터 스토리지를 관리해야 합니다.
아래의 두 가지 관리 방법은 매우 유명하다.
간단하게 MBR 한번 볼게요.
주 시작 레코드(MBR)
메모리 구역 관리 방법을 MBR로 설정하면 메모리 전단 512Byte의 구조는 다음과 같다.
시작 주소
터미널 주소
컨텐트
크기
0x0000
0x01bd
마운트 마운트 시작
446Byte
0x01be
0x01cd
첫 번째 파티션 테이블
16Byte
0x01ce
0x01dd
제2분구표
16Byte
0x01de
0x01ed
제3분구표
16Byte
0x01ee
0x01fd
제4분구표
16Byte
0x01fe
0x01ff
서명 시작(0xAA55)
2Byte
합계
512Byte
부팅 마운트는 부팅 가능한 로고의 구역을 찾아서 읽는 역할을 합니다.
MBR을 만들어 보세요.
$ parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
mklabel msdos
에서/dev/sda를 MBR로 초기화합니다.종료 후quit
parted를 종료합니다.(parted) mklabel msdos
(parted) quit
가 정말로 만들어졌는지 hexdump
/dev/sda를 보십시오.메모리의 시작 512Byte만 읽습니다.hexdump /dev/sda -s 0 -n 512 -v
hexdump 옵션-s
: 시작 주소가 지정되지 않은 경우 0-n
: 읽기 길이(Byte) 512바이트-v
: 표시된 지정을 생략하지 않습니다.*
에서 지정하지 않은 것과 같은 값을 생략합니다.0000000 b8fa 1000 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
0000030 ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
0000040 024c 13cd 00ea 007c eb00 00fe 0000 0000
0000050 0000 0000 0000 0000 0000 0000 0000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 0000
0000070 0000 0000 0000 0000 0000 0000 0000 0000
0000080 0000 0000 0000 0000 0000 0000 0000 0000
0000090 0000 0000 0000 0000 0000 0000 0000 0000
00000a0 0000 0000 0000 0000 0000 0000 0000 0000
00000b0 0000 0000 0000 0000 0000 0000 0000 0000
00000c0 0000 0000 0000 0000 0000 0000 0000 0000
00000d0 0000 0000 0000 0000 0000 0000 0000 0000
00000e0 0000 0000 0000 0000 0000 0000 0000 0000
00000f0 0000 0000 0000 0000 0000 0000 0000 0000
0000100 0000 0000 0000 0000 0000 0000 0000 0000
0000110 0000 0000 0000 0000 0000 0000 0000 0000
0000120 0000 0000 0000 0000 0000 0000 0000 0000
0000130 0000 0000 0000 0000 0000 0000 0000 0000
0000140 0000 0000 0000 0000 0000 0000 0000 0000
0000150 0000 0000 0000 0000 0000 0000 0000 0000
0000160 0000 0000 0000 0000 0000 0000 0000 0000
0000170 0000 0000 0000 0000 0000 0000 0000 0000
0000180 0000 0000 0000 0000 0000 0000 0000 0000
0000190 0000 0000 0000 0000 0000 0000 0000 0000
00001a0 0000 0000 0000 0000 0000 0000 0000 0000
00001b0 0000 0000 0000 0000 ed4c a356 0000 0000
00001c0 0000 0000 0000 0000 0000 0000 0000 0000
00001d0 0000 0000 0000 0000 0000 0000 0000 0000
00001e0 0000 0000 0000 0000 0000 0000 0000 0000
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0000200
0000은 2byte이고 1은 16byte입니다.자세히 구분해 보다
마운트 마운트 시작(446Byte)
0000000 b8fa 1000 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
0000030 ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
0000040 024c 13cd 00ea 007c eb00 00fe 0000 0000
0000050 0000 0000 0000 0000 0000 0000 0000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 0000
0000070 0000 0000 0000 0000 0000 0000 0000 0000
0000080 0000 0000 0000 0000 0000 0000 0000 0000
0000090 0000 0000 0000 0000 0000 0000 0000 0000
00000a0 0000 0000 0000 0000 0000 0000 0000 0000
00000b0 0000 0000 0000 0000 0000 0000 0000 0000
00000c0 0000 0000 0000 0000 0000 0000 0000 0000
00000d0 0000 0000 0000 0000 0000 0000 0000 0000
00000e0 0000 0000 0000 0000 0000 0000 0000 0000
00000f0 0000 0000 0000 0000 0000 0000 0000 0000
0000100 0000 0000 0000 0000 0000 0000 0000 0000
0000110 0000 0000 0000 0000 0000 0000 0000 0000
0000120 0000 0000 0000 0000 0000 0000 0000 0000
0000130 0000 0000 0000 0000 0000 0000 0000 0000
0000140 0000 0000 0000 0000 0000 0000 0000 0000
0000150 0000 0000 0000 0000 0000 0000 0000 0000
0000160 0000 0000 0000 0000 0000 0000 0000 0000
0000170 0000 0000 0000 0000 0000 0000 0000 0000
0000180 0000 0000 0000 0000 0000 0000 0000 0000
0000190 0000 0000 0000 0000 0000 0000 0000 0000
00001a0 0000 0000 0000 0000 0000 0000 0000 0000
00001b0 0000 0000 0000 0000 ed4c a356 0000
여기 기계어 같은데.00001b0의 마지막 2Byte는 첫 번째 구역이기 때문에 포함되지 않습니다.첫 번째 파티션 테이블
00001b0 0000
00001c0 0000 0000 0000 0000 0000 0000 0000
제2분구표00001c0 0000
00001d0 0000 0000 0000 0000 0000 0000 0000
제3분구표00001d0 0000
00001e0 0000 0000 0000 0000 0000 0000 0000
제4분구표00001e0 0000
00001f0 0000 0000 0000 0000 0000 0000 0000
서명 시작00001f0 aa55
구역을 나눈 책상은 모두 0이다.아직 제작되지 않아서 그런가?파티션 테이블 생성
첫 번째 구역만 만들어 보십시오.1 MiB가 시작한 100MiB가 끝날 때 먼저 큰 덩어리로 만든다.
partd에 들어간 후 입력
mkpart primary ext4 1MiB 100MiB
하고 실행이 끝난 후quit로 제거합니다.$ parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart primary ext4 1MiB 100MiB
(parted) quit
역시 hexdump
로 확인한다.다 볼 필요는 없으니까 첫 번째 구역의 책상 부분만 봐요.
hexdump /dev/sda -s 0 -n 512
제1분구00001b0 0400
00001c0 0401 9083 9142 0800 0000 1800 0003
오, 변했네.이 표지는 소단 절순임을 주의하십시오.소단 절서에 주의하면서 읽으면 구역별 탁자의 구조는 다음과 같다.
주소 오프셋
컨텐트
크기
이번 값 (hex)
해석하다
0x00
부팅 플래그
1Byte
00
부팅 불가능
0x01
파티션 시작 섹터(CHS 방식)
3Byte
04 01 04
0x04
파티션 식별자
1Byte
83
etx4
0x05
파티션 끝 섹터(CHS 방식)
3Byte
90 42 91
0x08
파티션 시작 섹터(LBA)
4Byte
00 00 08 00
2048 섹터
0x0c
파티션 전체 섹터 수
4Byte
00 03 18 00
202752 섹터
파티션의 모든 섹터 수가 MiB인 경우 MBR의 섹터 크기는 다음과 같이 512개의 Byte로 고정됩니다.
202752 Sector * 512Byte = 103,809,024 Byte
103,809,024 Byte/1024^2 = 99 MiB
1mB~100m 크기로 지정했기 때문에 계산이 잘 맞는 것 같아요.
이것은 섹션 테이블이라고 불리며 저장소의 부채 번호를 저장하고 관리한다.
1~4위도 모두 같다.
서명 시작
마지막 값이 하나 있다.
서명 시작
00001f0 aa55
이것은 시작 서명이라고 불리며 이 저장소가 MBR로 구성된 마술 번호를 나타낸다.다음은 GPT 내용을 보고 싶은데 기사가 길어져서 다음에 할게요.
Reference
이 문제에 관하여(Arch Linux 참고 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tkcd/articles/7de5c335b2dbda텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)