---
title: 설치 후 작업
description: CachyOS 설치 후 구성 단계
tableOfContents:
  minHeadingLevel: 1
  maxHeadingLevel: 4
---

import { Tabs, TabItem, Steps } from '@astrojs/starlight/components';
import ImageComponent from '~/components/image-component.astro';

## 권장 설치 후 단계

### 시스템 업데이트

:::tip
일반적인 실수를 피하고 시스템을 안전하게 유지하려면 [보안 및 모범 사례](/cachyos_basic/faq#security--best-practices)를 꼭 확인하세요.
:::

<Tabs>

<TabItem label="Shelly (GUI 및 CLI)">

    [Shelly](https://github.com/Seafoam-Labs/Shelly-ALPM)는 Arch Linux 패키지 관리자를 현대적으로 재해석한 도구로, pacman과 Octopi보다 더 직관적이고 사용자 친화적인 대안을 목표로 설계되었습니다.

    개발: [Seafoam-Labs](https://github.com/Seafoam-Labs)

    사용자가 터미널을 사용하지 않고도 패키지를 관리할 수 있게 해줍니다.

    Shelly의 주요 기능은 다음과 같습니다.

    AUR, 공식 저장소, AppImage, Flatpak, 로컬 패키지에서 패키지 설치/제거, 패키지 세부 정보 보기, 패키지 그룹 관리 등을 지원합니다.

    자세한 내용은 [Shelly의 README](https://github.com/Seafoam-Labs/Shelly-ALPM?tab=readme-ov-file#features)를 확인하세요.

    Octopi 대신 Shelly를 선택하는 이유는 무엇인가요?
    - 더 현대적이고 사용자 친화적인 인터페이스를 제공합니다.
    - 새로운 기능과 개선 사항이 지속적으로 개발 및 업데이트됩니다.
    - 더 다양한 패키지 형식(AUR, AppImage, Flatpak 등)을 지원합니다.

    <details>
        <summary>Shelly 홈페이지 스크린샷</summary>
        <ImageComponent imgsrc={import('~/assets/images/shelly-homepage.png')} />
    </details>
    <details>
        <summary>패키지 관리 탭</summary>
        <ImageComponent imgsrc={import('~/assets/images/shelly-package-management.png')} />
    </details>
</TabItem>

<TabItem label="Octopi 사용 (GUI)">

Octopi는 Arch 기반 배포판용 그래픽 패키지 관리자로, 패키지와 업데이트를 편리하게 관리할 수 있는 방법을 제공합니다.
Octopi로 시스템을 업데이트하려면 다음 단계를 따르세요.

<Steps>

1. 애플리케이션 메뉴에서 **Octopi**를 실행합니다.
2. 메인 창에서 **Check updates** 버튼(좌측 상단)을 클릭한 뒤, 옆에 있는 **System upgrade**를 클릭합니다.
3. Octopi가 사용 가능한 업데이트를 확인하고, Octopi 자체에서 설치할지 터미널에서 설치할지 묻습니다.
4. 업데이트를 진행하려면 **Apply** 버튼을 클릭합니다.
5. Octopi가 업데이트를 다운로드하고 설치합니다.
6. 큰 업데이트 후에는 컴퓨터를 재부팅하는 것이 좋습니다. **특히 커널이 업데이트된 경우에는 더욱 권장됩니다.**

</Steps>

</TabItem>

<TabItem label="Pacman 사용">

<Steps>

1. 터미널 에뮬레이터를 열거나, WM(예: Qtile)에서 `ctrl + alt + t` 또는 `mod + return`을 누릅니다.
2. 다음 명령어를 실행하여 시스템을 업데이트합니다.

   ```sh
   sudo pacman -Syu
   ```
3. 큰 업데이트 후에는 컴퓨터를 재부팅하는 것이 좋습니다. **특히 커널이 업데이트된 경우에는 더욱 권장됩니다.**

</Steps>

</TabItem>

<TabItem label="오프라인 시스템 업데이트">

*CachyOS는 [`pacman-offline`](https://github.com/eworm-de/pacman-offline) 스크립트를 사용한 오프라인 시스템 업그레이드를 지원합니다. 이 기능을 사용하면 시스템이 패키지 업데이트를 다운로드한 뒤 다음 재부팅 때 적용할 수 있습니다. (Windows와 비슷한 방식입니다.)*

:::note
`pacman-offline` 도구는 systemd의 오프라인 업데이트 기능과 통합됩니다. 커널 업데이트와 모듈 로딩을 자동으로 처리합니다.

`/etc/pacman.d/offline.conf` 파일은 일반 업데이트와 오프라인 업데이트 중 어떤 패키지가 업데이트될지 관리하는 데 중요합니다. 원하는 커널에 맞게 올바르게 구성했는지 확인하거나, `pacman-offline` 실행 중에만 업데이트되고 일반 업데이트에서는 무시되기를 원하는 패키지를 추가하세요. 예: `pacman -Syu`.

**자동 업데이트 타이머를 활성화하면 더 이상 시스템을 수동으로 업데이트할 필요가 없습니다.**
:::

<Steps>

1. **pacman-offline 패키지 설치**

   ```bash
   sudo pacman -S pacman-offline
   ```

2. **Pacman이 별도의 패키지 무시 목록을 읽도록 설정**

   :::note[[options] 섹션 뒤에 줄을 추가하세요. 아래 예시를 참고하세요.]
   :::

   ```bash title='/etc/pacman.conf 파일에 다음 줄 추가'
   Include = /etc/pacman.d/offline.conf
   ```
   *예시*
   ```bash
   # /etc/pacman.conf
   # REPOSITORIES
   #   - can be defined here or included from another file
   #   - pacman will search repositories in the order defined here
   #   - local/custom mirrors can be added here or in separate files
   #   - repositories listed first will take precedence when packages
   #     have identical names, regardless of version number
   #   - URLs will have $repo replaced by the name of the current repo
   #   - URLs will have $arch replaced by the name of the architecture
   #
   # Repository entries are of the format:
   #       [repo-name]
   #       Server = ServerName
   #       Include = IncludePath
   #
   # The header [repo-name] is crucial - it must be present and
   # uncommented to enable the repo.
   #
   # GENERAL OPTIONS
   [options]
   # other options like 'Color', 'CheckSpace', etc. can be here
   Include = /etc/pacman.d/offline.conf
   ```
3. **일반 업데이트 중 CachyOS 커널을 pacman이 무시하도록 추가**

   `pacman-offline` 도구는 기존 pacman 업데이트 중 어떤 패키지를 무시할지 결정하기 위해 이 파일을 사용합니다.

   예: `sudo pacman -Syu`를 실행할 때

   *`/etc/pacman.d/offline.conf` 파일의 내용을 다음으로 교체하세요.*

   ```text
   # Arch Linux kernels
   IgnorePkg = linux linux-headers linux-docs
   IgnorePkg = linux-lts linux-lts-headers linux-lts-docs
   IgnorePkg = linux-zen linux-zen-headers linux-zen-docs
   IgnorePkg = linux-hardened linux-hardened-headers linux-hardened-docs

   # CachyOS kernels
   IgnorePkg = linux-cachyos linux-cachyos-headers linux-cachyos-nvidia-open linux-cachyos-zfs
   IgnorePkg = linux-cachyos-bmq linux-cachyos-bmq-headers linux-cachyos-bmq-nvidia-open linux-cachyos-bmq-zfs
   IgnorePkg = linux-cachyos-bore linux-cachyos-bore-headers linux-cachyos-bore-nvidia-open linux-cachyos-bore-zfs
   IgnorePkg = linux-cachyos-deckify linux-cachyos-deckify-headers linux-cachyos-deckify-nvidia-open linux-cachyos-deckify-zfs
   IgnorePkg = linux-cachyos-eevdf linux-cachyos-eevdf-headers linux-cachyos-eevdf-nvidia-open linux-cachyos-eevdf-zfs
   IgnorePkg = linux-cachyos-gcc linux-cachyos-gcc-headers linux-cachyos-gcc-nvidia-open linux-cachyos-gcc-zfs
   IgnorePkg = linux-cachyos-hardened linux-cachyos-hardened-headers linux-cachyos-hardened-nvidia-open linux-cachyos-nvidia-hardened-zfs
   IgnorePkg = linux-cachyos-lts linux-cachyos-lts-headers linux-cachyos-lts-nvidia-open linux-cachyos-lts-zfs
   IgnorePkg = linux-cachyos-rc linux-cachyos-rc-headers linux-cachyos-rc-nvidia-open linux-cachyos-rc-nvidia-open linux-cachyos-rc-zfs
   IgnorePkg = linux-cachyos-rt-bore linux-cachyos-rt-bore-headers linux-cachyos-rt-bore-nvidia-open
   IgnorePkg = linux-cachyos-server linux-cachyos-server-headers linux-cachyos-server-nvidia-open linux-cachyos-server-zfs
   ```

   *이제 위의 모든 패키지는 일반 업데이트에서는 무시되지만, 오프라인 업데이트 준비 중에는 확인됩니다.*

3. **오프라인 업데이트 준비를 한 번만 시작**

   ```bash title='다음 명령어 실행'
   sudo systemctl start pacman-offline-prepare.service
   ```
   이 명령은 `pacman-offline`을 한 번 실행하여 패키지 데이터베이스를 동기화하고 업데이트를 다운로드하도록 합니다. 단, 다운로드만 진행하며 설치하지는 않습니다.

</Steps>

*이 스크립트를 자동화하려면 다음 단계를 따르세요.*

<Steps>

1. **준비 타이머 활성화**

   `pacman-offline-prepare.timer`를 활성화하면 systemd가 매 시스템 시작 후 몇 분 뒤, 매일 업데이트 다운로드 스크립트를 실행할 수 있습니다.

   ```bash
   sudo systemctl enable pacman-offline-prepare.timer
   ```

2. **시스템 재부팅:**

   업데이트는 다음 시스템 재부팅 중에 설치됩니다.

3. **(선택 사항) 자동 시스템 재부팅:**

    `pacman-offline-reboot.timer`를 활성화하면 대기 중인 업데이트가 있을 때 기본적으로 **오전 3시**(사용자 시간대)에 시스템을 자동 재부팅합니다. 기본값으로 2시간의 `RandomizedDelaySec`가 포함되어 있어 항상 정확히 같은 시각에 실행되지는 않을 수 있습니다.

    ```bash
    sudo systemctl enable pacman-offline-reboot.timer
    ```

    :::tip
    `pacman-offline-reboot.timer` 파일을 편집하여 대기 중인 업데이트가 있을 때 시스템을 재부팅할 시간을 변경하거나 무작위 지연 일정을 비활성화할 수 있습니다.
    :::

</Steps>

</TabItem>

<TabItem label="Cachy-Update">

[Arch-Update](https://github.com/Antiz96/arch-update)의 포크입니다.

Arch Linux용 업데이트 알림 및 적용 도구로, 중요한 업데이트 전/후 작업을 도와줍니다.
모든 데스크톱 환경/창 관리자와 쉽게 통합할 수 있도록 동적이며 클릭 가능한 시스템 트레이 애플릿을 포함합니다.

<details>
    <summary>Cachy-Update 활성화 방법</summary>
    `CachyOS Hello > Apps/Tweaks > Cachy Update enabled`에서 Cachy-Update를 활성화합니다.
</details>

<details>
    <summary>Cachy-Update 비활성화 방법</summary>
        터미널을 열고 다음 명령어를 실행합니다.
            ```bash
            sudo systemctl --global disable arch-update-tray.service
            sudo systemctl --global disable arch-update.timer
            ```
            :::tip
            시스템 트레이 애플릿은 계속 활성화한 채 자동 업데이트 확인만 비활성화하려면, 서비스를 비활성화하지 않고 타이머만 비활성화하면 됩니다.
            :::
</details>

- 기능:
  - 사용 가능한 업데이트를 자동으로 확인하고 목록으로 표시합니다.
  - 최근 Arch Linux 뉴스를 확인하고, 뉴스가 있으면 표시할지 제안합니다.
  - 고아 패키지를 확인하고, 있으면 제거할지 제안합니다.
  - 캐시에 남아 있는 오래되었거나 설치되지 않은 패키지를 확인하고, 있으면 제거할지 제안합니다.
  - 재부팅이 필요한 대기 중인 커널 업데이트를 확인하고, 있으면 재부팅을 제안합니다.
  - 업그레이드 후 재시작이 필요한 서비스를 확인하고, 있으면 재시작을 제안합니다.
  - `sudo`, `sudo-rs`, `doas`, `run0`를 지원합니다.

**업데이트 확인 간격:** `부팅 후 15초 뒤 한 번, 이후 매시간.`

- 업데이트 확인 간격 변경 방법:

```sh title='다음 명령어 실행'
systemctl --user edit --full arch-update.timer
# Tip: You can also use any text editor of your choice instead of `nano`
# e.g EDITOR=micro systemctl --user edit --full arch-update.timer
```

<details>
<summary>파일의 기본 내용:</summary>
    ```systemd
    [Timer]
    OnStartupSec=15 # Check for updates 15 seconds after boot
    OnUnitActiveSec=1h # Check for updates every hour
    ```
</details>
기본적으로 `OnUnitActiveSec` 값을 원하는 값으로 변경할 수 있습니다. 예를 들어 30분마다 업데이트를 확인하려면 `30m`으로 변경하고, 6시간마다 확인하려면 `6h`로 변경하세요. 시간 간격 설정 방법에 대한 자세한 내용은 이 [문서](https://www.freedesktop.org/software/systemd/man/latest/systemd.time.html#Parsing%20Time%20Spans)를 확인하세요.

Cachy-Update가 부팅 시 한 번만 새 업데이트를 확인하게 하려면 `OnUnitActiveSec` 줄을 완전히 삭제하면 됩니다.

업스트림 Arch-Update 프로젝트를 유지 관리하고 Cachy-Update 구현에 기여한 [Antiz](https://github.com/Antiz96)에게 감사드립니다.

</TabItem>

</Tabs>

### 방화벽(ufw) 구성
:::note
UFW는 설치 후 기본적으로 활성화되어 있습니다.
:::
ufw를 구성하려면 다음 단계를 따르세요.

<Tabs>

<TabItem label="활성화">

```bash
sudo ufw enable
```

</TabItem>

<TabItem label="비활성화">

```bash
sudo ufw disable
```

</TabItem>

<TabItem label="허용">

기본적으로 ufw는 들어오는 트래픽은 무시하고 나가는 트래픽은 허용합니다. 특정 연결을 차단하거나 허용하도록 방화벽에 특정 규칙을 추가할 수 있습니다.

```bash
# For example:
sudo ufw allow ssh
```

</TabItem>

<TabItem label="거부">

```bash
# To deny a specific port, check the following example:
sudo ufw deny 80
```

</TabItem>

<TabItem label="상태">

```bash
sudo ufw status verbose
```

</TabItem>

</Tabs>

:::note
방화벽 규칙을 잘못 구성하면 자신의 시스템에 접근하지 못할 수 있으므로 주의하세요.
:::

:::note
KDE Plasma 설정의 "Firewall" 섹션을 사용하여 그래픽 방식으로도 구성할 수 있습니다.
:::

### 전역 메뉴 활성화
Visual Studio Code와 같은 일부 앱에서는 전역 메뉴가 작동하지 않거나 패널 대신 상위 앱에 연결될 수 있습니다.

```sh
# To enable global menu support, run the command and restart the app.
sudo pacman -S appmenu-gtk-module libdbusmenu-glib
```

## 선택적 구성

### 기본 셸 변경

현재 CachyOS는 [fish](https://fishshell.com/)를 사용자의 기본 로그인 셸로 사용합니다. 하지만 기본 셸은 원하는 것으로 변경할 수 있습니다.

<Tabs>
   <TabItem label='bash'>

      bash는 거의 모든 Linux 배포판에서 기본 셸로 사용됩니다. 또한 root 사용자의 로그인 셸로도 여전히 사용됩니다. bash는 기본적인 자동 완성 기능과 쉬운 히스토리 관리를 제공합니다. fish와 zsh가 제공하는 화려한 사용자 지정 기능 및 플러그인 생태계는 없다는 점에서 zsh, fish와 다릅니다.


      ```sh title='기본 셸을 bash로 변경'
      chsh -s /usr/bin/bash
      ```

   </TabItem>

   <TabItem label='zsh'>

      CachyOS는 일반적으로 사용되는 플러그인과 구성을 포함한 [zsh 설정](https://github.com/CachyOS/cachyos-zsh-config)을 제공합니다.
      이 설정은 [fish 설정](https://github.com/CachyOS/cachyos-fish-config)과 1:1 기능을 제공하는 것을 목표로 합니다.
      zsh는 MacOS에서 기본으로 사용되는 셸이기도 합니다.

      ```sh title='기본 셸을 zsh로 변경'
      chsh -s /usr/bin/zsh
      ```

   </TabItem>
</Tabs>

### [tldr](https://github.com/tldr-pages/tldr) 업데이트/사용

:::note
CachyOS는 원래 tldr의 더 빠른 Rust 기반 구현체인 [tealdeer](https://github.com/tealdeer-rs/tealdeer)를 사용합니다.
:::

이 도구는 긴 도움말/매뉴얼 페이지를 읽고 싶지 않거나 읽는 데 시간을 쓰고 싶지 않은 사용자에게 매우 유용합니다.

<Steps>

1. ```sh title="터미널을 열고 다음 명령어 실행"
   tldr --update
   ```
2. tldr 사용 예시:
   ```sh
   tldr java
     Execute a `.jar` program:

      java -jar filename.jar

   # As you can see, it's really useful, and new tools/pages get added over time.
   ```

</Steps>

### AppImage 관리

AppImage는 설치나 root 권한 없이 대부분의 Linux 배포판에서 실행되는 휴대용 애플리케이션입니다.

:::note[모든 AppImage를 실행하려면 실행 권한이 필요합니다.]
다음 명령어로 실행 권한을 설정할 수 있습니다.
```sh
chmod +x /path/to/your/appimage
```
또는 AppImage 파일을 마우스 오른쪽 버튼으로 클릭하고 `Properties` > `Permissions`로 이동한 뒤, `Allow executing file as program.`이라고 표시된 체크박스를 선택합니다.
:::

:::note[AppImage를 실행하기 전에 FUSE(Filesystem in Userspace)가 시스템에 설치되어 있는지 확인하세요.]
```sh
sudo pacman -S fuse2
```
:::

AppImage를 관리하려면 [gearlever](https://github.com/mijorus/gearlever)를 사용할 수 있습니다. 이 도구는 AppImage를 시스템에 쉽게 통합하는 방법을 제공합니다.

`gearlever`는 시스템에서 AppImage 관리를 단순화하는 그래픽 도구입니다. 데스크톱 환경과 통합되어 AppImage를 쉽게 실행하고 관리할 수 있게 해줍니다.

gearlever를 설치하려면 다음 단계를 따르세요.

<Steps>
    1. 아직 설치하지 않았다면 flatpak을 설치합니다.
        ```sh
        sudo pacman -S flatpak
        ```
    2. 시스템을 재시작합니다.
    3. flatpak을 사용하여 gearlever를 설치합니다.
        ```sh
        flatpak install flathub it.mijorus.gearlever
        ```
    4. 설치 후 로그아웃한 다음 다시 로그인하면 애플리케이션 메뉴에서 gearlever를 볼 수 있습니다.
</Steps>

### Samba 공유 접근 구성

Samba는 SMB 네트워킹 프로토콜을 자유 소프트웨어로 재구현한 것입니다. Samba 서버에 연결하기 위해 CachyOS 사용자를 위한 유용한 설정이 제공되지만, 이를 사용하려면 Samba 서버의 구성을 변경해야 합니다.

#### CachyOS smb.conf 파일 설치 및 사용

편리한 `smb.conf` 파일을 사용하려면 먼저 필요한 `smb.conf` 파일을 제공하는 특정 패키지를 설치합니다. 그런 다음 서버의 기존 `smb.conf`를 이 파일로 교체하고 공유 볼륨을 다시 구성합니다.

:::note[이 가이드는 이미 작동 중인 Samba 서버가 있다고 가정합니다.]
:::

<Steps>
    1. 일반적으로 Linux 시스템의 `/etc/samba/smb.conf`에 있는 원본 `smb.conf` 파일을 백업합니다.
    2. 클라이언트 머신에 CachyOS Samba 설정 패키지를 설치합니다.
        ```sh
        sudo pacman -S cachyos-samba-settings
        ```
    3. 클라이언트 머신의 `smb.conf`를 Samba 서버로 복사합니다.
    4. 파일을 열고 편집하여 공유 디렉터리, 프린터 등을 추가합니다.
    5. 서버에서 Samba 서비스를 재시작합니다.
        ```sh
        sudo systemctl restart --now samba
        ```
    6. 클라이언트 머신에서 파일 관리자를 통해 공유 리소스에 접근합니다(예: `smb://<your_server_ip>/<share_name>`).

        올바르게 구성되었다면 로그인 자격 증명을 입력하라는 메시지가 표시됩니다. 원한다면 로그인 정보를 저장하는 옵션을 선택하는 것을 잊지 마세요.
</Steps>

### AppArmor.d 프로필을 사용한 AppArmor 지원

Wikipedia 인용:

*AppArmor("Application Armor")는 시스템 관리자가 프로그램별 프로필을 사용하여 프로그램의 기능을 제한할 수 있게 해주는 Linux 커널 보안 모듈입니다. 프로필은 네트워크 접근, raw socket 접근, 일치하는 경로의 파일 읽기, 쓰기 또는 실행 권한과 같은 기능을 허용할 수 있습니다.*

이 내용은 AppArmor에 익숙하지 않은 사용자를 위해 기본 AppArmor 설정을 설치하는 방법을 소개하는 부분일 뿐입니다. 영향을 이해하지 못한 상태에서는 진행하지 마세요.

AppArmor.d에 대한 자세한 정보와 직접 프로필을 만드는 방법은 [AppArmor.d 문서](https://github.com/roddhjav/apparmor.d?tab=readme-ov-file#configuration)를 확인하세요.

:::caution[주의해서 진행하세요. AppArmor 설정이 잘못되면 문제가 발생할 수 있습니다.]
:::

<Steps>

1. 다음 커널 매개변수를 Boot Manager에 추가합니다. 참고 자료는 [Boot Manager Configuration](/configuration/boot_manager_configuration)을 확인하세요.

   ```text
   lsm=landlock,lockdown,yama,integrity,apparmor,bpf
   ```

2. apparmor 및 apparmord **(+1500개 이상의 프로필 세트)** 패키지를 설치합니다.
   ```bash
   sudo pacman -S apparmor apparmor.d
   ```

3. AppArmor 서비스를 활성화/시작합니다.

   ```bash
   systemctl enable --now apparmor.service
   ```

4. AppArmor 프로필 캐싱을 활성화합니다.

   ```shell
   # /etc/apparmor/parser.conf
   ## Add the following lines:
   write-cache
   Optimize=compress-fast
   cache-loc /etc/apparmor/earlypolicy/
   ```
   파일을 저장하고 재부팅합니다.
</Steps>
