별도의 명령줄이 동일한 결과를 제공하지 않음

별도의 명령줄이 동일한 결과를 제공하지 않음

가상 디스크(1024MB)를 만들었습니다.

~$ dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync

사례 1:

이제 구성하겠습니다.헤어졌다MyDrive.img 파티션/형식:

~$ parted MyDrive.img
(parted) mklabel msdos
(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1

결과:

(parted) print
 Model:  (file)
 Disk /home/user/test/MyDrive.img: 1074MB
 Sector size (logical / physical): 512B / 512B
 Table of partitions: msdos
 Disk Flags: 

 Start Number  End     Size    Type    File system  Flags
  1   1049kB  1024MB  1023MB  primary     ntfs       lba

파티션 확인:

~$ sudo losetup loop1 MyDrive.img
~$ sudo -H gparted /dev/loop1

여태까지는 그런대로 잘됐다. 이제 질문은 ...

사례 2:

명령줄(터미널, parted 외부)에서 "parted"를 시작하려는 경우 동일한 명령을 사용해도 동일한 결과를 얻지 못합니다.

  ~$ parted -s MyDrive.img mklabel msdos
  ~$ parted -s MyDrive.img mkpart primary NTFS 1 1024
  ~$ parted -s MyDrive.img align-check optimal 1
  ~$ parted -s MyDrive.img set 1 lba on

나가:

  ~$ parted -s MyDrive.img print
     Model:  (file)
     Disk /home/user/test/MyDrive.img: 1074MB
     Sector size (logical / physical): 512B / 512B
     Table of partitions: msdos
     Disk Flags: 

     Start Number  End     Size    Type    File system  Flags
       1   1049kB  1024MB  1023MB  primary         

질문:NTFS 및 LBA 누락(ext3, ext4 등에서도 마찬가지입니다.)

이유:

   ~$ parted -s MyDrive.img mklabel msdos # Works
   ~$ parted -s MyDrive.img mkpart primary NTFS 1 1024 # Not Work
   ~$ parted -s MyDrive.img align-check optimal 1  # Works
   ~$ parted -s MyDrive.img set 1 lba on  # Not Work

질문:

동일한 출력(사례 1)을 얻기 위해 터미널 명령줄(사례 2)에서 직접 "-s"(--script) 옵션을 사용하여 "parted"를 올바르게 실행하려면 어떻게 해야 합니까?

감사해요

답변1

parted홀수 단위는 기본적으로 사용되므로 지정하는 것이 가장 좋습니다.

(parted) unit MiB

또는

(parted) mkpart ... 1MiB 1024MiB

파티션이 시작되는 위치를 알고 있다면 정렬 확인을 수행할 필요가 없습니다 1MiB.

set 1 lba on명령은 실제로 파티션 유형을 Linux로 변경합니다. 이는 다소 놀랄 수 있지만 파티션 유형을 변경하는 것이 일반적입니다(다른 옵션은 parted, , ...입니다).setraidlvm

이 세부 사항을 제외하면 작업 결과는 정확히 동일합니다. 출력의 차이는 단순히 광학의 문제입니다.

parted아마도 파티션뿐만 아니라 파일 시스템 자체를 생성하는 데 사용되었던 오래된 잔재일 것입니다 . (*) ntfs서로 붙어 있으 려면 실제로 mkntfs이렇게 해야 합니다.


상호작용 방법:

# dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync
# parted MyDrive.img 
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos                                                    

이 시점에서 다른 방법을 검사하고 비교할 수 있도록 복사본을 만들었습니다.

(parted) ^Z                                                               
[1]+  Stopped                 parted MyDrive.img
# cp MyDrive.img MyDrive-Copy.img
# fg

앞으로:

(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1                                            
1 aligned
(parted) print                                                            
Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary  ntfs         lba

표시되지만 ntfs다시 lba인쇄되고 사라집니다.

# parted MyDrive.img
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary

터미널 명령을 사용하는 두 번째 방법은 복제본에서 실행하는 것입니다.

# parted MyDrive-Copy.img mkpart primary NTFS 1 1024
# parted MyDrive-Copy.img align-check optimal 1
1 aligned
# parted MyDrive-Copy.img print
Model:  (file)
Disk /dev/shm/MyDrive-Copy.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary

실제로 어떤 차이가 있나요?

# cmp -l MyDrive.img MyDrive-Copy.img && echo Identical || echo Different
Identical

(복사 방법을 사용하지 않으면 사용할 때마다 무작위이기 때문에 서로 다른 디스크 식별자를 갖게 됩니다 mkpart. GPT 파티션을 사용하면 각 개별 파티션에도 고유한 PARTUUID가 있으므로 이 방법은 다른 파티션 구성표에서 작동하지 않습니다. 다른 바이트가 무엇을 나타내는지 확인합니다.)


그래서 당신은하다set명령이 다르지 않는 한(첫 번째 예에서는 그렇지 않음) 결국 동일한 결과를 얻습니다.


(*)

혼란을 없애기 위해 mkntfs파티션을 나눈 후 partedNTFS가 감지되고 set 1 lba onLinux는 더 이상 파티션 유형으로 설정되지 않습니다. 이는 또한 디스크의 임의 데이터에 대해 파티션 테이블에서 임의의 결과를 얻을 수 있음을 의미합니다.

따라서 결국에는 NTFS를 지정하는 것이 합리적일 수 있습니다 mkpart. parted이 유형을 기억하세요현재 세션의 경우파티션 유형을 선택할 때 적절한 조치를 취하십시오. 일단 터미널로 변환되면 하나의 명령으로 모든 작업을 수행하는 것이 가장 좋습니다.

# parted MyDrive.img \
    mklabel msdos \
    mkpart primary NTFS 1 1024 \
    set 1 lba on \
    align-check optimal 1 \
    print

Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary  ntfs         lba

관련 정보