Computer >> 컴퓨터 >  >> 시스템 >> Mac

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

시스템 폴더(System Folder)는 사용자가 직접 접근하도록 만들어진 폴더가 아닙니다. 애플리케이션과 운영체제가 원활하게 작동할 수 있도록 지원과 리소스를 제공하는 역할을 하며, 사용자가 프로그램을 통해 컴퓨터를 조작할 수 있게 해주는 기반층이라고 할 수 있습니다. 일부는 숨겨져 있고 일부는 보이지만, 대부분 어떤 방식으로든 사용자가 접근할 수 있습니다.

그렇다면 각 시스템 폴더는 정확히 어떤 역할을 할까요? 'bin'은 무엇이고, 컴퓨터에 어떤 도움을 줄까요? 이번 글에서는 가장 자주 언급되는 시스템 폴더들을 하나씩 살펴보겠습니다.

먼저 맥의 '/System' 폴더 자체에는 그리 많은 내용이 담겨 있지 않습니다. 우선 이 폴더의 내용물을 확인한 뒤, 더 깊은 곳에 있는 다른 시스템 폴더들로 넘어가겠습니다.

주의: 시스템 폴더와 파일을 추가, 삭제 또는 수정하지 마세요. 단순히 열어보는 것은 안전하지만, 파일을 추가·삭제·수정하거나 폴더 구조 자체를 변경하면 예측할 수 없는 결과를 초래할 수 있으며, 심한 경우 시스템 전체가 손상될 수도 있습니다. 꼭 실험이 필요하다면 진행하기 전에 부팅 가능한 클론(백업)을 만들어 두는 것이 좋습니다.

라이브러리 폴더: /System/Library와 ~/Library

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

라이브러리 폴더는 사용자에게 가장 가까운 시스템 폴더입니다. 애플리케이션이 생성하며, 앱이 실행되는 동안 파일을 추가하고 삭제하고 수정합니다. 솔직히 말해 이곳의 정리 체계는 다소 혼란스러울 수 있습니다. 앱들이 라이브러리에 파일을 배치하는 데 거의 자유롭기 때문인데, 다행히 대부분의 앱은 비슷한 규칙을 따릅니다.

사용자 라이브러리 폴더('~/Library')와 시스템 라이브러리 폴더('/System/Library')에는 매우 다양한 파일과 폴더가 존재합니다. 여기에는 환경설정, 애플리케이션 데이터베이스, 메타데이터, 플러그인, 저장된 앱 상태, 시스템 프로필, 쿠키 등 수많은 정보가 저장됩니다.

Application Support

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

'~/Library/Application Support' 폴더는 라이브러리 폴더 중 가장 자주 접근되는 곳입니다. 애플리케이션은 작동에 필요한 파일을 이곳에 저장하며, 사용자 데이터 폴더와 분리되어 있어 오염이나 수정으로부터 보호됩니다.

사용자가 이 폴더에 접근하는 경우는 크게 두 가지입니다. 기본 설정만으로는 불가능한 방식으로 프로그램의 동작을 변경하거나, 캐시 또는 데이터베이스 오류를 수정할 때입니다. 특정 프로그램의 Application Support 폴더를 삭제하면 해당 프로그램을 기본 상태로 초기화하여 깨끗하게 새로 시작할 수 있습니다. 또한 앱을 깊이 들여다보고 싶다면 결국 그 프로그램의 Application Support 폴더를 찾게 될 것입니다.

/System/Library와 ~/Library의 차이점은?

왜 macOS에는 라이브러리 폴더가 두 개나 필요할까요? 시스템 라이브러리(/System/Library)는 모든 사용자가 공유하는 시스템 전역 요구 사항을 위한 것으로, 모든 사용자가 접근할 수 있습니다. 반면 사용자 라이브러리(~/Library)는 해당 사용자 본인만 접근할 수 있습니다.

유닉스 폴더: /bin, /sbin, /usr, /var, /private

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

macOS는 유닉스(Unix) 커널을 기반으로 만들어졌습니다. 즉, 깊은 수준의 많은 기능이 유닉스의 기능에 의존한다는 뜻입니다. 따라서 상위 수준의 macOS 시스템 폴더 외에도 유닉스 폴더들을 발견할 수 있습니다. 이 폴더들은 기본적으로 모두 숨겨져 있으므로, 둘러보려면 먼저 숨김 파일 표시를 활성화해야 합니다.

홈 디렉터리에서 확인할 수 있는 주요 유닉스 폴더로는 '/bin', '/sbin', '/usr', '/var', '/private' 등이 있습니다.

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

'/bin'과 '/sbin'은 모두 바이너리(binary) 파일을 담고 있습니다. 'sbin'은 파일 시스템이 마운트되지 않은 상태에서도 시스템을 부팅, 복원, 회복 및 수리하는 데 필요한 바이너리를 포함합니다. '/bin'은 사실상 모든 사용자가 사용하는 명령어들을 담고 있습니다. 'bin'은 binaries(바이너리)의 줄임말이며, 'sbin'은 system binaries(시스템 바이너리)의 줄임말입니다.

macOS에서는 '/sbin'에 있는 파일 시스템 마운트 관련 바이너리 대부분이 '/System/Library/Filesystems' 폴더의 macOS 파일 시스템 플러그인으로 심볼릭 링크(symlink)되어 있습니다.

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

'/usr'에는 시스템이 정상적으로 작동하는 동안 사용되는 바이너리와 라이브러리가 들어 있습니다. 이곳의 파일들은 파일 시스템이 마운트된 이후에 사용됩니다. 'usr'은 'user'(사용자) 또는 Unix System Resources(유닉스 시스템 리소스)의 약자입니다.

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

'/var'에는 캐시, 데이터 라이브러리, 로그처럼 시스템이 작동 중에 기록하는 파일들이 들어 있습니다. 'var'은 variable(가변)의 줄임말로, 일반적으로 최상위(core) 수준의 시스템 애플리케이션만 이곳에 기록합니다. macOS에서는 '/var'이 '/private/var'로 심볼릭 링크되어 있습니다.

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

'/private'에는 데몬(daemon)과 명령줄 도구의 설정 파일, 캐시, 변수, 가상 메모리 스왑 파일, 임시 파일, 절전 이미지 등이 포함되어 있습니다. '/etc'와 '/tmp' 같은 일부 유닉스 시스템 폴더는 /private 안에 있는 같은 이름의 디렉터리로 심볼릭 링크되어 실제 내용을 저장합니다.

이 폴더들의 세부 내용이 궁금하다면 맥의 유닉스 폴더에 대한 상세 분석 자료를 참고해 보시길 권합니다.

익스텐션(Extensions)

맥 시스템 폴더 완벽 가이드: 숨겨진 핵심 디렉터리의 역할과 구조

해키노시(Hackintosh)를 만들어 본 경험이 있다면 'System/Library/Extensions'라는 이름을 들어본 적이 있을 것입니다. 흔히 'S/L/E'로 축약되는 이 폴더에는 'kext', 즉 커널 익스텐션(kernel extension)이 들어 있으며, 이는 macOS 커널의 기능을 확장합니다. kext를 추가하면 macOS 커널이 새로운 하드웨어와 통신할 수 있게 됩니다. 윈도우 사용자라면 kext를 드라이버(driver)와 같은 개념으로 이해하면 됩니다.

이 폴더의 내용을 수정하는 것은 까다로운 작업이며, 권한 관리에 세심한 주의가 필요합니다. macOS에서 kext를 추가하거나 제거하려면 올바른 방법을 확실히 숙지한 후 진행해야 합니다.

에이전트(Agents)와 데몬(Daemons)

데몬과 에이전트는 백그라운드에서 실행되며 사용자의 개입 없이 작업을 수행합니다. '데몬(daemon)'이라는 독특한 이름(발음은 '디먼(demon)')은 맥스웰의 악마(Maxwell's daemon)라는 사고 실험에서 유래했습니다.

데몬은 시스템 작업을 수행하며 root(루트) 권한으로 실행되고, 에이전트는 현재 로그인한 사용자 권한으로 실행됩니다. 글로벌 에이전트와 데몬은 모든 사용자를 대신해 접근·실행될 수 있는 반면, 사용자 에이전트는 해당 라이브러리 파일의 소유자인 사용자를 대신해서만 실행됩니다.

  • '~/Library/LaunchAgents': 로그인한 사용자를 대신해 실행되는 사용자 에이전트가 위치
  • '/Library/LaunchAgents': 로그인한 사용자를 대신해 실행되는 글로벌 에이전트가 위치
  • '/System/Library/LaunchAgents': 로그인한 사용자를 대신해 실행되는 시스템 에이전트가 위치
  • '/Library/LaunchDaemons': root 권한으로 실행되는 글로벌 데몬이 위치
  • '/System/Library/LaunchDaemons': root 권한으로 실행되는 시스템 데몬이 위치

명령줄 프로그램인 launchctl을 사용하면 새로운 데몬을 생성하거나 기존 데몬을 구성할 수 있습니다.

마무리

맥에는 이 외에도 사용자가 접근하지 않는 여러 폴더가 숨겨져 있지만, 위에서 소개한 폴더들이 가장 자주 접근되는 곳입니다. 유닉스 파일 시스템이 어떻게 구성되어 있는지 더 알아보고 싶다면, 유닉스 계열 시스템에서 파일과 디렉터리 배치에 대한 요구 사항과 지침을 설명하는 FHS(Filesystem Hierarchy Standard, 파일시스템 계층 표준) 문서를 참고해 보세요.