Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

삼성 오디세이(Odyssey) 노트북의 운영체제를 새로 설치하는 방법

제가 구매한 오디세이(Odyssey) 노트북의 경우 하드 디스크가 2개가 있습니다.

NVMe (256GB) - C, D 드라이브
HDD (1GB) - E 드라이브

설치는 NVMe 하드의 내용을 파티션까지 제거한 후에 새로 할 것이기 때문에 이 글을 따라하시는 분들은 우선 NVMe 하드에 담긴 데이터가 있다면 백업을 하신 다음에 진행해야 합니다.




약간 특이한 면이 있다면, 제가 구매한 오디세이의 경우 반드시 UEFI 모드로 설치해야 한다는 점입니다. 왜냐하면, 이상하게도 오디세이의 경우 하드 디스크 인식이 무조건 다음의 순으로 되기 때문입니다.

Disk 0 - HDD
Disk 1 - NVMe

"CSM OS" 방식으로 설치하는 경우, 반드시 Disk 0번으로 잡힌 드라이브에만 할 수 있는데 만약 Disk 1에 설치를 시도하려는 경우 "0x80300024" 오류가 발생합니다. 이 오류를 피하려면 노트북 하단 케이스를 열어 HDD를 분리시켜야 합니다. (분리시키면 Disk 0번이 없으니 당연히 NVMe가 Disk 0 순위가 됩니다.) 그런데... 아마 일반 사용자라면 케이스를 열고 싶어하진 않을 것입니다. 또 다른 방법으로는 BIOS에서 HDD 우선 순위를 변경하는 것인데, 오디세이의 경우 어떻게 해도 순위가 바뀌지 않았습니다.

따라서 "UEFI" 모드로 설치해야 하고, 그 모드에서는 "Disk 1" 순위로 잡힌 NVMe 드라이브에도 설치가 지원되므로 별다른 문제 없이 운영체제를 재설치할 수 있습니다.




가장 먼저 준비해야 할 것은 UEFI 모드로 설치 가능한 윈도우 10 설치 USB 디스크입니다. 이에 대해서는 전에 다음의 글을 통해 설명했습니다.

UEFI 모드로 윈도우 10 설치 가능한 USB 디스크 만드는 방법
; https://www.sysnet.pe.kr/2/0/10937

위의 방법으로 USB를 준비했으면 오디세이에 연결합니다. 그다음, 바이오스 설정을 해야 하므로 부팅 후 시작할 때 "F2" 키를 눌러 바이오스 설정화면으로 넘어갑니다. 그리고, 아래 화면과 같이 "Boot" 범주에서 3가지 설정을 확인합니다.

odyssey_reinstall_1.png

"Secure Boot Control" == Off
"OS Mode Selection" == "UEFI OS"
"Fast BIOS Mode" == Off

변경했으면 우측의 "Save" 버튼을 눌러 설정을 저장하고 다시 부팅할 때 "F2" 키를 눌러 바이오스 설정화면으로 또 들어갑니다. 이번에는 "Boot Device Priority" 링크를 눌러서 진입하는데 다음과 같이 "Boot Option Priorities" 화면으로 바뀌면,

odyssey_reinstall_2.png

아래와 같이 "Boot Option #1"의 항목을 여러분이 이전 단계에서 준비한 USB 디스크로 설정해야 합니다.

Boot Option #1 : "General USB Flash Disk 1100" (이 항목은 여러분들의 윈도우 설치 이미지가 담긴 USB를 지정)
Boot Option #2 : "Disabled"

* 만약 USB 항목이 보이지 않는다면 정상적인 UEFI 용 설치 디스크가 아니기 때문입니다. 
반드시 "UEFI 모드로 윈도우 10 설치 가능한 USB 디스크 만드는 방법" 글에 따라 만든 USB 디스크여야 합니다.

이제 BIOS 설정을 저장하고 나가면 부팅 시 USB 이미지 설치 디스크의 동작으로 넘어갑니다.




USB 설치 디스크로 부팅이 되면, "Windows 설치" 대화창이 뜨고 "설치할 언어", "시간 및 통화 형식", "키보드 또는 입력 방법", "키보드 종류"를 묻습니다. 기본 값 그대로 "다음" 버튼을 누르고, "지금 설치" 버튼이 있는 화면에서 좌측 하단의 "컴퓨터 복구(Repair your computer)"를 선택합니다.

이어서 "옵션 선택" 화면이 나오고, "문제 해결(Troubleshoot)"을 눌러, "고급 옵션(Advanced options)" 화면으로 진행한 후 "명령 프롬프트(Command Prompt)"를 선택합니다. 그럼 "관리자" 권한의 cmd.exe 창이 뜨는데 여기서 diskpart.exe 프로그램을 실행합니다.

X:\Sources> diskpart.exe

그리고 list disk 명령어로 디스크 상태를 확인하고,

DISKPART> list disk
  Disk ###  Status          Size      Free      Dyn   Gpt
  --------  -------------   -------   -------   ---   ---
  Disk 0    Online           931 GB      0  B         *
  Disk 1    Online           238 GB   1024 KB         *
  Disk 2    Online            15 GB      0  B

3개의 Disk가 나오는데, 각각 다음과 같은 식일 것입니다.

Disk 0 == HDD
Disk 1 == NVMe
Disk 2 == (윈도우 Install 용 USB)

만약 여러분들의 상태가 "Disk 0 == NVMe, Disk 1 == HDD"라면 이 글을 읽지 마시고 다른 설치 방법을 참고하세요. (능숙하신 분이라면 그래도 이 글을 읽으면서 자신의 상황에 맞게 적용할 수 있겠지만, 초보자인 경우라면 자칫 데이터를 모두 잃어버릴 수 있으므로 주의가 필요합니다.)

운영체제를 NVMe에 설치할 것이므로 disk 1번을 선택 후,

DISKPART> sel disk 1

Disk 1 is now the selected disk.

1번 디스크의 파티션을 확인해 정말 운영체제를 새로 설치할 디스크인지 다시 한번 확인합니다.

DISKPART> list part
  Partition ###  Type            Size      Offset
  -------------  -------------   -------   ------
  Partition 1    Recovery         500 MB   1024 KB
  Partition 2    System           100 MB    501 MB
  Partition 3    Reserved          16 MB    601 MB
  Partition 4    Primary          195 GB    617 MB    // <== C 드라이브
  Partition 5    Primary           42 GB    195 GB    // <== D 드라이브

(제 경우에는 NVMe 하드에 C와 D드라이브로 나뉘어 있어서 저렇게 보이는 것입니다.)

맞으면, 이제 clean 명령으로 모든 파티션을 삭제합니다. (물론, NVMe 하드에 있는 모든 데이터가 삭제됩니다.)

DISKPART> clean

DiskPart succeeded in cleaning the disk.

그다음 UEFI 설치를 위해 GPT 모드로 변경합니다.

DISKPART> convert gpt

list disk로 다시 확인하면 다음과 같이 "Gpt" 항목의 별표와 함께 초기화된 것을 확인할 수 있습니다.

DISKPART> list disk
  Disk ###  Status          Size      Free      Dyn   Gpt
  --------  -------------   -------   -------   ---   ---
  Disk 0    Online           931 GB      0  B         *
* Disk 1    Online           238 GB    238 GB         *
  Disk 2    Online            15 GB      0  B

문제는, 이 상태에서 Disk 0에 있는 데이터 파티션이 "C" 드라이브 문자를 자동으로 가져간다는 것입니다. 따라서, 이 문자를 다른 문자로 변경해야 하는데 다음과 같은 식의 명령어로 순서를 진행합니다.

// 0번 HDD를 선택하고,
sel disk 0

// 0번 HDD의 파티션을 확인하고,
list part

// 만약 2번 파티션이 C 드라이브를 소유한 경우,
// 해당 파티션의 드라이브 문자를 변경
sel part 2
assign letter=f

그다음, GPT 모드로 새롭게 초기화한 "Disk 1"에 파티션을 잡고 드라이브 문자를 할당합니다. 제 경우에는 Disk 1에 D 드라이브 용 데이터 공간을 위해 40GB 정도 남겨둘 것이므로 다음과 같이 195GB 정도만 C 드라이브로 할당했습니다.

DISKPART> sel disk 1

Disk 1 is now the selected disk.

DISKPART> create part primary size=200000

DiskPart succeeded in creating the specified partition.

DISKPART> format fs=ntfs quick

  100 percent completed

DiskPart successfully formatted the volume.

DISKPART> assign letter=c

여기까지 마치고 diskpart.exe를 "exit" 명령어로 종료한 후 다시 부팅을 해, 이번에는 윈도우 설치 화면으로 진입해 정상적으로 "Install Now" 버튼을 눌러 설치를 진행합니다. 중간에 라이선스 키를 입력하는 화면이 뜨고, 이후 "Windows 설치 프로그램" 단계에서 "업그레이드"와 "사용자 지정"이 나오는데 여기서 "사용자 지정"을 선택하고 C 드라이브 용으로 "드라이브 1"의 "파티션 1"로 잡았던 195GB 파티션을 선택해 윈도우 설치를 진행합니다.

이후 설치를 마치고 나면, NVMe 하드에 대해 다음과 같은 파티션 구성을 확인할 수 있습니다.

Partition 1    Primary          195 GB
Partition 2    Recovery         500 MB
Partition 3    EFI              100 MB

제 경우에 남은 공간이 42GB 정도가 더 있으므로 이것을 "디스크 관리자"를 이용해 마저 파티션 할당하고 D 드라이브로 문자를 부여했습니다.




드라이브 문자 할당 시 다음과 같은 오류가 발생한다면?

DISKPART> assign letter=c

가상 디스크 서비스 오류:
지정한 드라이브 문자를 할당하는 데 사용할 수 없습니다.

이미 다른 파티션에 "C" 드라이브 문자가 할당되어 있기 때문입니다. 이런 경우 "list vol" 명령을 내리면 어떤 디스크에 할당되어 있는지 확인할 수 있고 그 디스크의 해당 파티션을 찾아들어가 "assign letter" 명령어로 다른 드라이브 문자로 변경해야 합니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/28/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 106  107  108  109  [110]  111  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11175정성태4/5/201725933.NET Framework: 652. C# 개발자를 위한 C++ COM 객체의 기본 구현 방식 설명파일 다운로드1
11174정성태4/3/201719478VC++: 116. Visual Studio 단위 테스트 - Failed to set up the execution context to run the test
11173정성태4/3/201723077VC++: 115. Visual Studio에서 C++ DLL을 대상으로 단위 테스트할 때 비정상 종료한다면?파일 다운로드1
11172정성태4/3/201722211.NET Framework: 651. C# - 특정 EXE 프로세스를 종료시킨 EXE를 찾아내는 방법파일 다운로드1
11171정성태3/31/201718939VS.NET IDE: 114. Visual Studio 디버깅 경고 창 - You are debugging a Release build of ...
11170정성태3/31/201720805.NET Framework: 650. C# - CachedAnonymousMethodDelegate 유형의 코드 생성
11169정성태3/30/201720701VC++: 114. C++ vtable의 가상 함수 호출 가로채기파일 다운로드1
11168정성태3/29/201724001VC++: 113. C++ 클래스 상속 관계의 vtable 생성 과정
11167정성태3/28/201724286VC++: 112. C++의 가상 함수 테이블 (vtable)은 언제 생성될까요? [2]
11166정성태3/28/201718499오류 유형: 382. System.Data.SqlClient.SqlException - Arithmetic overflow error converting IDENTITY to data type int.
11165정성태3/27/201721798오류 유형: 381. Visual C++에서 min, max 함수를 사용한 경우 C2589, C2059 컴파일 오류 발생
11164정성태3/27/201730132VC++: 111. C++ 클래스의 상속에 따른 메모리 구조 [2]파일 다운로드1
11163정성태3/25/201719969VC++: 110. CreateThread Win32 API에 C++ 클래스의 멤버 함수를 전달하는 방법파일 다운로드1
11162정성태3/24/201724166오류 유형: 380. Visual Studio 빌드 실패 - The OutputPath property is not set for project
11161정성태3/24/201716902오류 유형: 379. ICOMAdminCatalog.GetCollection 호출 시 0x80070422 예외 발생
11160정성태3/23/201721833.NET Framework: 649. ASP.NET - Server cannot append header after HTTP headers have been sent. (HTTP 헤더를 보낸 후에는 서버에서 헤더를 추가할 수 없습니다.)파일 다운로드1
11159정성태3/23/201719066Windows: 136. Memory-mapped File은 Private Bytes 크기에 포함될까요?파일 다운로드1
11158정성태3/22/201718654디버깅 기술: 85. Windbg - SOS 디버깅 사례 System.NullReferenceException 예외 추적
11157정성태3/22/201721907.NET Framework: 648. Dictionary<TKey, TValue>를 deep copy하는 방법파일 다운로드1
11156정성태3/21/201722579.NET Framework: 647. 닷넷(C#) 코드로 인증서 요청 코드 만드는 방법파일 다운로드1
11155정성태3/21/201722864.NET Framework: 646. SslStream의 CipherAlgorithm 선택이 가능할까요?파일 다운로드1
11154정성태3/5/201729795VC++: 109. DLL에서 STL 객체를 인자/반환값으로 갖는 함수를 제공할 때, 그 함수를 외부에서 사용하는 경우 비정상 종료한다면? [2]파일 다운로드1
11153정성태3/5/201729175VC++: 108. DLL에 정의된 C++ template 클래스의 복사 생성자 문제파일 다운로드1
11152정성태3/4/201722891VC++: 107. VirtualAlloc, HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new의 차이점파일 다운로드1
11151정성태3/3/201723420VC++: 106. DLL 개발자가 주의해야 할 Secure CRT 함수 사용 [1]파일 다운로드1
11150정성태2/21/201719353.NET Framework: 645. Visual Studio Fakes 기능에서 Shim... 클래스가 생성되지 않는 경우 [5]
... 106  107  108  109  [110]  111  112  113  114  115  116  117  118  119  120  ...