별도의 하드 드라이브에 프로그램을 어떻게 설치하나요?

별도의 하드 드라이브에 프로그램을 어떻게 설치하나요?

저는 최근에 Windows에서 Linux Mint로 전환했는데 지금까지 정말 마음에 듭니다! 다만, 각종 프로그램의 설치 대상을 선택하는 방법을 알고 싶습니다.

예를 들어 1TB SATA 드라이브와 128GB SSD가 있습니다. Steam과 각종 게임을 SATA에 설치하고 싶은데, 설치를 실행하려고 할 때마다 디렉터리를 선택할 수 없습니다.

Linux Mint에 설치된 프로그램의 디렉토리를 선택하는 방법은 무엇입니까?

답변1

아시다시피 Unix 계열 운영 체제에서는 설치 디렉터리를 지정하는 것이 일반적이지 않습니다. 모든 것이 큰 계층 구조로 들어가고 패키지 관리자에 의해 정렬되기 때문입니다. 여전히 여러 개의 파티션을 가질 수 있지만 해당 파티션은 "특정 경로 아래의 모든 것"입니다. 예를 들어 일반적인 설정에는 /home사용자가 시스템 디스크를 채우지 않도록 별도의 파티션이 있습니다.

그러나 Steam은 시스템 관리자가 아닌 사용자의 권한으로 실행되므로 일반 경로에 아무것도 설치할 수 없다는 점에서 약간 특별합니다.

따라서 설치된 모든 파일은 홈 디렉토리의 숨겨진 디렉토리에 있게 됩니다 ~/.local/share/Steam.

게임 전용 파티션을 갖고 싶다면, 가장 쉬운 방법은 거기에 파티션을 마운트하는 것입니다.

변환을 위해서는 Steam이 실행되지 않는 동안 데이터를 이동해야 합니다.

$ cd ~/.local/share
$ pwd

나중에 필요하므로 여기에 전체 경로를 기록해 두십시오.

$ mv Steam Steam.old
$ mkdir Steam
$ sudo -i

이제 우리는 루트로 작업하고 있습니다.

# lsblk -o +UUID

그러면 블록 장치와 해당 UUID 목록이 제공됩니다. SATA 디스크에서 파티션을 찾아 UUID를 기록해 둡니다. 그런 다음 필요에 따라 경로와 UUID를 변경하여 파티션을 마운트합니다.

# mount UUID=12345678-1234-1234-1234-123456789abc /home/yourname/.local/Steam

df유효한 경우 파티션이 출력 에 표시됩니다 . 그렇지 않다면 먼저 준비하고 싶을 수도 있습니다. 그것은 별도의 질문입니다.

그런 다음 다음 줄을 추가하여 변경 사항을 영구적으로 적용할 수 있습니다 /etc/fstab.

UUID=12345678-1234-1234-1234-123456789abc /home/yourname/.local/Steam auto noatime 0 2

auto매개변수는 mount 명령과 파일 시스템 유형( 자동 감지용), 플래그( noatime액세스 시간이 기록되지 않으므로 게임 폴더에는 필요하지 않으며 많은 쓰기가 생성될 수 있음) 와 동일하다는 것을 알 수 있습니다. 로드 시), 백업 우선 순위( 0) 및 파일 시스템 검사( 2, 루트 파일 시스템을 제외한 모든 파일 시스템과 동일)를 확인합니다.

,nofail파일 시스템에 문제가 있는 경우 시스템이 정상적으로 부팅되도록 하려면 이러한 플래그를 추가할 수 있습니다. 이 방법의 단점은 Steam을 시작할 때까지 이를 알 수 없으며 새로 설치한 것처럼 작동한다는 것입니다.

수동으로 제거하고 한 번 설치하여 추가 라인이 작동하는지 테스트하십시오.

# umount /home/yourname/.local/Steam
# mount /home/yourname/.local/Steam

성공하면 루트 쉘을 종료할 수 있습니다.

# exit

그리고 데이터를 복사하세요.

$ rsync -Pra Steam.old/ Steam/

rsync 유틸리티가 누락된 경우 패키지 관리자에서 가져오세요.

Steam을 시작하여 모든 것이 완료되었는지 확인한 다음 이전 Steam 디렉터리를 삭제하세요.

$ rm -rf Steam.old

이제 준비가 되었습니다.

답변2

한 가지 방법은 GNU/Linux운영 체제에서 사용하는 것입니다 mount --bind.

  • 외부 드라이브에서 "내보내기"하려는 디렉터리를 확인하세요. 예제를 살펴볼 수 있습니다./opt
  • 당신이 할 수 있는 일은 디렉토리를 이동하여 운영 체제의 다른 곳에 설치하는 것입니다.

root(수퍼)유저로 다음을 수행하세요.

shopt -s dotglob # if you are using bash. To match hidden files too with following wildcard*
mv /path/to/BIG/dir/* /path/to/directory/on/external/drive
mount --bind /path/to/directory/on/external/drive /path/to/BIG/dir
echo '/path/to/directory/on/external/drive /path/to/BIG/dir none defaults,bind 0 0' >> /etc/fstab
  • mount --bind임시 설치
  • 영구적으로 만들려면 코드의 마지막 줄을 수정하세요 /etc/fstab. editor중복이 없는지 확인하기 위해 좋아하는 콘텐츠로 편집하는 데 시간을 투자하세요 .

그러면 운영 체제를 투명하게 사용할 수 있으며 BIG 디렉토리가 이동됩니다.

확인하다man mount | less +/--bind

바인드 마운트 작업
파일 계층 구조의 일부를 다른 곳에 다시 설치하십시오. 호출은 다음과 같습니다.
mount --bind olddir newdir
또는 이 fstab 항목 사용:
/olddir /newdir none bind
이 호출 후에 두 위치에서 동일한 콘텐츠에 액세스할 수 있습니다. "바인드"는 커널 VFS에 두 번째 클래스 또는 특수 노드를 생성하지 않는다는 점을 이해하는 것이 중요합니다. "바인딩"은 파일 시스템을 연결하기 위한 또 다른 작업입니다. "바인딩" 작업을 통해 파일 시스템이 연결되었다는 정보는 저장되지 않습니다. olddir과 newdir은 독립적이며 olddir을 제거할 수 있습니다.
개별 파일을 (단일 파일에) 다시 마운트하는 것도 가능합니다. 바인드 마운트를 사용하여 일반 디렉터리에서 마운트 지점을 생성할 수도 있습니다. 예:
mount --bind foo foo

관련 정보