Skip to main content

3 posts tagged with "Windows"

View All Tags

Crowdstrike BSOD 에러 수정(Azure)

· 2 min read

image

어느 날 클라우드에 접속하려 하니 RDP 접속이 되지 않았다.

왜 안되지? 서버가 꺼졌나 싶어 클라우드 콘솔을 확인해 봤지만 status: Running 상태...;

해킹을 당했나 싶어 고민하다 결국 서버실 엔지니어분께 연락해 확인해 보니 위와 같이 계속 재시작을 반복하고 있었다.

서버실 엔지니어분이 요새 화제가 되고 있는 CrowdStrike 에러인 것 같다고 말했고, 그게 뭔지 검색해 보니 간단한 해결 방법이 있어 이를 엔지니어분께 전달해 문제를 해결할 수 있었다. 결국 집 컴퓨터에서 위와 같은 오류가 있다고 하면 아래와 같이 해결하면 된다.

1. 재부팅을 한다.

2. 부팅 모드를 안전모드로 하여 윈도우를 실행한다.

3. 안전모드에서 Windows/System32/Drivers/CrowdStrike/C-00000291*.sys (*는 이후의 문자가 무엇이든 291까지만 일치하면 .sys 확장자인 경우 모두 지우라는 말) 를 지워준다.

4. 다시 재부팅하여 정상모드로 실행한다.

직접 작업한 건 아니지만 이렇게만 전달하니 문제가 해결됐다.

그런데 문제는 외국 클라우드 회사들이다. 외국 클라우드 회사들도 연락이 되는 사람들도 있지만 나는 연락처가 없다. 그래서 어떻게 하지 하고 찾던 중 Azure의 경우 이 링크를 참조해 수정하면 됐다. 난 이 링크에서 옵션 2를 이용해 해결했다.

과정은 간단하다. 복구 VM을 만들고, 문제가 있는 VM의 OS Disk를 Copy한 후 복구 VM에 Copy한 OS Disk를 장착합니다.

그런 뒤 복구 VM을 같은 Resource Group에 만들어 줍니다. MS 에서 이 과정을 한번에 할 수 있게 script를 만들어 줌.

우선 Azure Shell을 열고 복구가 필요한 VM이 있는 구독으로 셋팅합니다. 

az account set --subscription "<구독 이름>"

그런 뒤 아래 스크립트를 실행합니다. (RGNAME: Resource Group이름, BROKENVMNAME: 무한재부팅중인VM)

az vm repair create -g RGNAME -n BROKENVMNAME --verbose

여기서 만약 VM이 Encrypt 되어 있다면 뒤에 --unlock-encrypted-vm 을 붙여줘야 합니다.

VM 구성이 완료되면 이제 복구 스크립트를 동작시킵니다. (여기서 291 파일을 제거하는 것으로 예상함)

az vm repair run -g RGNAME -n BROKENVMNAME --run-id win-crowdstrike-fix-bootloop --run-on-repair --verbose

이제 마지막 과정은 이제 복구 VM의 고쳐진 OS Disk를 복사하고 무한 재부팅 중인 VM을 종료하고 고쳐진 OS Disk를 장착합니다. 그리고 다시 고쳐진 VM을 실행하고 복구용 VM을 제거합니다.

az vm repair restore -g RGNAME -n BROKENVMNAME --verbose

위 3개의 스크립트로 간단히 문제가 해결됩니다.

windows 폴더 내 모든 파일의 확장자 확인

· One min read

image

어느 날 갑자기 폴더 내의 모든 파일들에 대한 확장자 종류에 대해 조사하라는 미션이 생겼다.

윈도우 자체를 거의 사용하지 않고 개발하면서 처음 겪는 미션이라 당황스러웠는데 검색하기도 좀 애매한 상황...

간단한 해결책이 있었다.(MS Copilot의 도움!)

Powershell을 활용하면 간단했다.

$folderPath = "C:\\YourFolderPath" # 여기에 원하는 폴더 경로를 입력하세요.
$outputFile = "C:\\YourOutputFile.txt" # 여기에 결과를 저장할 파일의 경로를 입력하세요.

Get-ChildItem -Path $folderPath -Recurse | # 재귀적으로 모든 하위 폴더와 파일을 가져옵니다.
Where-Object {!$_.PSIsContainer} | # 폴더는 제외하고 파일만 선택합니다.
ForEach-Object { $_.Extension } | # 각 파일의 확장자를 가져옵니다.
# ForEach-Object { $_.Extension.ToLower() } | # 각 파일의 확장자를 소문자로 변환하여 가져옵니다.
# ForEach-Object { $_.Extension.ToLower().Trim() } | # 각 파일의 확장자를 소문자로 변환하고 공백을 제거하여 가져옵니다.
Sort-Object | # 확장자를 정렬합니다.
Get-Unique | # 중복된 확장자를 제거합니다.
Out-File $outputFile # 결과를 텍스트 파일로 출력합니다.
# 만약 파일 이름까지 필요하다면, ForEach-Object { $_.Extension } 부분을 ForEach-Object { $_.Name }로 변경하면 됩니다.

이 방법을 활용해 테스트 폴더에서 먼저 테스트 해봤고 중복을 잘 걸러내며 모든 Extension을 불러와 내 수고를 덜어줄 수 있었다.

하지만 상당히 nested 한 폴더 구조와 많은 파일들이 있다면 당연히 시간이 오래 걸린다.

간단한 미션이지만 폴더 내의 구조가 상당히 복잡하다면 눈과 손으로 하기보다 스크립트로 하는 것이 도움이 될 듯 합니다. 누군가에게 도움이 됐으면 좋겠다.

윈도우 서버 원격 접속 사용자 계정 설정하기(Windows Server Remote Access User Account Settings)

· 3 min read
Alex Han
Software Engineer

image

개발자로 회사 생활을 하다 보니 윈도우 서버도 운영해 보게 됐다.

그 동안 윈도우 서버를 사용해 본 경험이 없다가 Spotfire 라는 software를 사용하면서 windows에서만 돌아가는 프로그램을 운영하게 되면서 windows를 사용하게 되는데 여러 명이 windows에 원격으로 접속해 작업할 수 있는 작업용 서버 환경을 만들어야 했다.

생각보다 그 과정이 아주 간단하다.

윈도우 원격 접속 사용자 추가

image

윈도우 버튼을 누르면 검색창이 뜨게 되는데 여기에 control 을 치면 아마도 cont 정도까지만 쳐도 제어판(control panel)이 보일 것이다.

그걸 클릭해 준다. 그러면 아래 둘 중에 하나의 이미지가 보인다.

image

image

두번째 이미지가 보인다면 바로 시스템을 클릭하면 되지만 첫번째 이미지와 같이 보인다면 오른쪽 위에 View by 옆에 Category 를 클릭하여 작은 아이콘으로 보이도록 만들어주면 두번째 그림과 같이 보이면서 시스템을 선택할 수가 있다.

image

시스템에 들어가면 Remote Settings가 보이는데 이걸 클릭해 준다.

image

그럼 위에 처럼 나오는데 아래 체크박스는 해제해도 무방하다. 하지만 권장으로 되어 있어 나는 체크했다.

image

그런 뒤 select users 버튼을 클릭하면 아래와 같은 장면이 보일거다.

image

그럼 여기서 이미 사용자 계정을 추가했으면 바로 add 버튼을 눌러 사용자를 추가해도 되고 아니라면 노란색 원으로 표시한 user accounts 파란색 버튼을 눌러준다. 그런 뒤에 사용자 추가는 간단하다.

직관적으로 user, group 중 하나를 선택하는 폴더가 보이고 이 중 user를 선택해 들어가면 이미 생성된 user들이 보인다.

그럼 마우스 오른쪽 버튼을 눌러 사용자 추가 버튼을 누르면 user 이름, 비밀번호 관련 설정들을 해주면 간단히 추가가 된다.

그런 뒤 위 그림의 add 버튼을 눌러 원격 유저로 추가해 주고 확인하면 윈도우 서버에서 할 작업은 끝이다.

image

그런 뒤 본인이나 본인의 팀원들 또는 원격접속할 사람들에게 본인이 만든 계정들을 뽐내며 전달해 준다. 이제부터는 맥북에서의 접속 예시!

image

그런 뒤 위에는 맥북에서의 PC name에 윈도우 서버 [ip]:[port] 적어주고 user account 는 설정에서 미리 작성해 놓으면 된다.

그리고 friendly name은 안 써도 되는데 ip 말고 본인이 알기 쉬운 이름으로 적어두면 편하다.

그렇게 save해 둔 뒤 접속하게 되면 위에 위에 이미지에는 빈 화면처럼 되어 있지만 접속하고 마지막 화면이 거기에 남게 된다.

이로써 당신은 윈도우 서버의 원격 접속 설정과 사용자 계정 설정, 그리고 개인 랩탑의 Microsoft Remote Desktop 프로그램을 통해 원격접속하는 방법까지 다 알게 됐다.

집에서 혼자 쓰던 윈도우를 고사양으로 쓰고 싶거나 여럿이서 쉽게 사용할 수 있게 되어 좋다.