/etc/init.d를 통해 부팅 시 시작되는 서비스가 있는데, 이로 인해 모든 것이 올바르게 설정되기 전에 그래픽 디스플레이 관리자를 통해 로그인할 수 있을 만큼 부팅 프로세스의 마지막 단계가 충분히 지연됩니다.
범인은 나에게 자주 필요하지 않은 서비스인 네타톡(netatalk)이다.
init는 두 번째 라운드에서 일부 서비스를 시작하기 위한 다층 접근 방식을 지원합니까(그리고 어떻게)? 아니면 부팅 시 자동 시작을 비활성화하고 /etc/init.d/netatalk start
수동으로 또는 rc.local() 끝에서 서비스를 시작 해야 합니까 ?
내가 아는 한, 서비스는 다음과 같은 방법으로만 비활성화할 수 있습니다. /etc/default/netatalk
그런데 뭔가 빠졌을 수도 있습니다(netatalk init 스크립트 자체를 변경하는 것 외에)?
atalkd
FWIW, 백그라운드에서 시작할 수 있는 이전 데몬이 실행되고 있지 않습니다 (/etc/default/netatalk의 옵션).
편집: 주요 세부 사항을 언급하는 것을 잊었습니다. 쿠분투 14.04.6 LTS입니다. 더 이상 지원되지 않는다는 것을 알고 있지만 그게 요점이 아닙니다. 새로운 버전으로 업그레이드하지 않을 이유가 있습니다. 최고의 성능을 제공하기 위해 커널을 업데이트하고 X, Mesa, DRM 드라이버를 모두 업데이트했지만 대부분의 핵심 OS는 여전히 Ubuntu 14.04이며 upstart
일부 systemd
기능만 작동하는 다소 이상한 조합(/sbin/init 제공)이 있습니다. 내가 아는 한 작은 효과.
/etc/init.d의 많은 스크립트에는 /etc/init에 해당 항목이 있으며 이는 확실히 신생 기업에서 사용됩니다.
아래 논의에서 언급했듯이 /etc/default/netatalk에 백그라운드 옵션이 설정된 경우 백그라운드에서 모든 서비스를 시작하도록 netatalk init 스크립트를 조정했습니다. 그 외에도 내 주요 "문제"는 누군가 데스크탑 세션에 로그인하기 전에 /etc/rc.local에서 수행 중인 작업이 완료되어야 한다는 것입니다. 내가 아는 한, 이 스크립트는 항상 마지막에 실행되므로, 최선의 선택은 느리게 시작되는 서비스를 연기하기 위해 init 시스템에 의존하지 않고 서비스가 자동으로 시작되는 것을 방지하고 나중에 단계에서 "수동으로" 시작하는 것 같습니다. /etc/rc.local의 앰블 부분.
그래서 내 질문은: upstart가 서비스를 완전히 비활성화하지 않고 자동 시작을 비활성화하는 방법을 제공합니까?
답변1
귀하의 질문은 완전히 믿을만하며, netatalk가 부팅을 완료하기 전에 그래픽 시스템을 시작하라는 귀하의 요청은 완전히 합리적입니다. 이는 종속성이 아니며 그래픽 로그인 관리자를 시작하는 데 지연이 있어서는 안 됩니다. 시스템에서는 가능한 한 빨리 필요한 작업을 시작할 수 있어야 합니다.
이것이 실제로 시작/서비스 관리자의 임무입니다. 가능한 경우 서비스가 시작되도록 하고 종속성을 포함하여 필요할 때 활성화할 수 있는 서비스만 요청 시 활성화되도록 하는 것입니다.
이제 문제는 init 스크립트에 의존하는 고대 Unixoid 배포판(아마도 고대 Linux 배포판?)을 사용하고 있는 것 같다는 것입니다. 그리고 이는 종속성이나 주문형 활성화가 아닌 고정된 실행 순서만 지원합니다.
당신은 쳤다이것고전적인 init 시스템을 재설계해야 하는 이유에 대한 고전적인 주장입니다!
따라서 어떤 Linux 배포판을 사용하든 문제를 발견했을 것입니다. 해결책은 실제로 그 이름에 맞는 부팅 관리자를 사용하는 것입니다. 부끄러워하지 마세요. 지난 20년 동안 Linux 설계를 통해 배운 내용을 따르도록 Linux를 업데이트하세요!
일반 바닐라 데비안을 사용하기 시작하면 부팅 시간이 더 좋아진다는 것을 알 수 있을 것입니다. (오래된 초기화 시스템의 "부풀어오르는" 지지자들이 말하는 것과는 매우 반대입니다. 그들은 모든 구석에서 그것을 볼 수 있지만 실제로는 없습니다) 거기에는 없습니다) 부팅 프로세스를 수정하기가 훨씬 쉽습니다.