질문으로 돌아가기

질문으로 돌아가기

커널 자체 외에도파일 시스템 계층 표준아마도 모든 Linux 시스템에 공통된 유일한 주요 기능일 것입니다. 일부 모호한 배포판에서는 약간만 수정합니다. 예를 들어 stali는 단순화된 버전을 사용하고 nixos도 이를 추가합니다(/etc 및 /bin을 보이지 않게 만들고 직접 제어할 수 없게 만듭니다). 그러나 둘 다 "/etc"가 있습니다. 초기화 시스템을 변경하고, PATH를 변경하고, glibc를 musl로 바꾸고, 다른 창 관리자, 데스크탑 환경, 디스플레이 서버, 컴포지터 등을 선택할 수 있습니다. 그러나 Linux 시스템에서 실행 중인 시스템에 앉아 있는 경우 " /etc"가 있을 겁니다. 당신은 이것을 확신할 수 있습니다.

이것은 질문을 구걸합니다. 다른곳에 놓으면 어떡하지...

수많은 장소와 수준에서 "/etc"에 대한 가정이 이루어졌습니다.

커널은 그것이 존재한다고 가정합니까?

GLibc에는 확실히 소스 코드에 "/etc/hosts"가 하드코딩되어 있습니다. glibc에는 그러한 경로가 몇 개 있습니까? 어딘가에 목록이 있나요? 그것들을 바꾸는 것이 얼마나 어려울까요?

임베디드 Linux 이미지에 있는 소프트웨어 중 얼마나 많은 부분이 발견됩니까? 어떻게 알 수 있나요? 다시 컴파일하지 않고 변경할 수 있나요? 그렇다면 우분투에서는 얼마나 더 변경해야 합니까?

그런데 10년 전 제가 Ubuntu를 처음 설치했을 때 가장 먼저 하고 싶었던 일은 /etc를 /conf로 옮기는 것이었지만, 그것이 작동하지 않는다는 것을 금방 깨달았습니다. 하지만 이와 같은 일이 가능하도록 Linux 생태계가 구축된다면 어떤 모습일까요?

이것은 일반적인 호기심이며 Linux 생태계의 내용을 더 잘 이해하기 위해 이 질문을 드리는 것입니다. 물론 완전한 답변을 기대하는 것은 아니지만 누군가가 유용한 정보를 갖고 있거나 올바른 방향을 알려줄 수 있을 것이라고 생각했습니다.

답변1

커널은 그것이 존재한다고 가정합니까?

아니요. 커널은 사용하는 파일 시스템의 내용에 대해 거의 가정하지 않습니다. 커널은 /etc/init경우에 따라 이를 찾고 /sbin/init일부 임시 드라이버는 helpers 를 사용 etc하지만 커널은 그렇지 않습니다 /etc.

GLibc에는 확실히 소스 코드에 "/etc/hosts"가 하드코딩되어 있습니다.

예,물론.

glibc에는 그러한 경로가 몇 개 있습니까? 어딘가에 목록이 있나요? 그것들을 바꾸는 것이 얼마나 어려울까요?

내 저장소 복사본에서 grep -r '"/etc'86개의 인스턴스가 발견되었습니다. 나는 어디에도 유지되는 목록을 모른다. 소스 코드에서 경로를 변경하는 것은 어렵지 않습니다.

임베디드 Linux 이미지에 있는 소프트웨어 중 얼마나 많은 부분이 발견됩니까?

이것은 결정하기가 더 어렵습니다. 자체 구성이 필요한 프로그램은 /etc확실히 거기에서 볼 수 있습니다. 다른 많은 프로그램은 라이브러리(C 라이브러리만 있는 경우)를 통해 간접적으로 이를 수행합니다. 전자는 다른 경로를 사용하기 위해 변경이 필요하며 후자는 관련 라이브러리에 대한 변경 사항을 적용합니다.

어떻게 알 수 있나요?

grep...당신도 볼 수 있습니다Debian에서 해당 소스 코드 검색.

다시 컴파일하지 않고 변경할 수 있나요?

아니요. 관련된 질문은 다시 컴파일하기 전에 얼마나 많은 변경 사항이 포함되는지입니다. Autoconf에서 생성된 configure스크립트는 일반적 으로 또는 sysconfdir기본 옵션을 지원 하지만 모든 경우를 처리하지는 않습니다. 많은 경우 프로그램이 설치된 위치를 결정하고 자체 구성 파일을 찾지만 프로그램이 표시되는 위치는 변경되지 않습니다. 다른 파일이 필요합니다 (GNU C 라이브러리 참조)./etc/usr/local/etc/etc

그렇다면 우분투에서는 얼마나 더 변경해야 합니까?

나는 당신이 더 "위로" 움직일수록 이런 일이 점점 줄어들 것이라고 생각합니다. 사용자가 구성할 수 있는 모든 항목은 기껏해야 에 기본값이 /etc있으며 요즘 많은 프로그램에는 구성이 전혀 없거나 /etc구성이 있는 경우 에서 직접 표시되지 않고 일부 메커니즘을 통해 제공됩니다 /etc.

하지만 이와 같은 일이 가능하도록 Linux 생태계가 구축된다면 어떤 모습일까요?

다음 중 하나처럼 보일 수도 있습니다무료 데스크톱 웹사이트프로그램이 파일(XDG 등)을 찾는 방법을 결정하는 사양입니다.

답변2

Gnu/Linux에 대해 질문하셨습니다(Linux는 커널이며 전체 운영 체제를 설명하기 위해 종종 혼란스럽게 사용됩니다. 운영 체제는 커널, 셸, 명령 도구, 라이브러리 및 컴파일러이기 때문에 - 이것이 Dennis의 것일 수 있다고 생각합니다) Ritchie는 GNU 없이 Linux를 사용할 수 있다고 말했습니다: android, 그리고 Linux 없이 Gnu를 사용할 수 있습니다: cygwin, Linux용 Windows 하위 시스템 1, Gnu/Hurd, BSD의 Gnu, Solaris의 Gnu, ...)

질문으로 돌아가기

각 프로그램을 다시 컴파일하여 다른 위치에서 구성을 찾으세요.

자동 구성을 사용하는 모든 프로그램은 다른 위치에서 쉽게 컴파일될 수 있습니다. 여기에는 타당한 이유가 있을 수 있습니다. 그런데 왜 기본값을 변경합니까?

/conf또는 에서 까지의 모든 심볼릭 링크 /etc.(cd /; ln -s -T /etc /conf )

관련 정보