시작 매개변수를 사용하여 시작 후 특정 작업 수행

시작 매개변수를 사용하여 시작 후 특정 작업 수행

저는 Grub 2를 사용하여 부팅 후 무엇을 해야 할지 운영 체제에 알려줄 수 있는지 스스로에게 물었습니다.

배경:
Debian Wheezy가 설치된 HTPC가 있습니다. 때로는 시스템을 일반 데스크탑으로 사용하고 싶지만 때로는시안 BMC여기요.

듀얼부팅을 해봤습니다개방형 전자 제품OpenElec에서는 RAID-1을 설치할 수 없기 때문에 별로 편리하지 않습니다.

다음 시도는 XBMC와 함께 두 번째 최소 데비안 설치를 사용하는 것이었습니다. 이 솔루션을 사용하면 여전히 Grub에서 일반 데스크톱 및 HTPC를 사용할 수 있습니다.

하지만 지금은 이미 데비안을 설치했기 때문에 이것이 시간과 디스크 공간 낭비가 될 수도 있다고 생각합니다. 일반 데비안 설치에 관해 알려주는 데 사용할 수 있는 일종의 부팅 매개변수가 있다면 더 쉬울 것입니다.

  • "데스크톱으로 부팅" 또는
  • "XBMC로 부팅"

그런 다음 이 시작 매개변수를 처리하려면 Grub의 두 번째 항목이 필요합니다.

이것이 가능한가?

답변1

Linux 커널에 대한 모든 명령줄 인수는 /proc/cmdline. 예를 들어 멋진 grub 메뉴를 사용하여 빌드한 다음 시작 스크립트에서 이를 사용하여 /etc/rc.local무엇을 할지 결정할 수 있습니다.

예를 들어 다음을 추가합니다 /etc/grub.d/09-xcmd.

#! /usr/bin/tail -n+2
menuentry 'XMBC' {
  set xcmd='xcmd=xmbc'
  echo 'Now select a kernel'
  sleep 1
}

그런 다음 다음에 추가하십시오 /etc/default/grub.

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \${xcmd}"

달리기 update-grub.

다음을 수행할 수 있습니다 /etc/rc.local.

case $(cat /proc/cmdline) in
  (*xcmd=*) exec sudo -Hu marcel startx;;
esac

당신의 ~/.xinitrc:

cmdline=$(cat /proc/cmdline)
case $cmdline in
  (*xcmd=*)
    xcmd=${cmdline##*xcmd=}
    xcmd=${xcmd%% *}
    "$xcmd" &
esac

관련 정보