Grub 부팅 옵션으로 스크립트 실행

Grub 부팅 옵션으로 스크립트 실행

내 Linux 상자에 대한 몇 가지 DR 항목을 정리하고 있습니다. 정말 편리했던 것 중 하나는 내 IP 주소를 고정 IP에서 동적 IP로 변경하는 스크립트를 실행하는 GRUB 옵션이었습니다.

단일 사용자 모드로 전환하고, 스크립트를 실행하고, 재부팅하는 등의 작업을 수행할 수 있다는 것을 알고 있지만 다른 관리자(주로 Windows 배경 사용자)가 하나를 선택하고 프로세스를 자동화하는 것은 매우 간단합니다.

Grub이 이 작업을 한 번에 수행하도록 제공된 구성 설정을 본 적이 있지만 꽤 오랜 시간이 걸렸습니다. 무엇을 구글링해야 할지 모르겠습니다.

편집하다:

rc.local 메서드에 대해 알고 있지만 부팅할 때마다 이 메서드가 실행되는 것을 원하지 않습니다. 해당 부팅 옵션이 선택된 경우에만 특정 스크립트가 실행되도록 허용하는 옵션(아마도 grub.conf의 행 항목)을 나열하고 싶습니다.

답변1

Grub 자체는 이를 수행할 수 없습니다. 파일 시스템 드라이버는 읽기만 지원합니다.

init=/path/to/scriptLinux 커널(및 적절한 initrd 또는 initramfs)을 로드하는 항목을 생성하고 커널 명령줄을 전달하여 특정 명령을 실행할 수 있습니다. 스크립트는 필요한 모든 설치, 사용자 프롬프트, 파일 수정을 수행하고 마지막으로 재부팅을 수행합니다.

커널 명령줄에서 사용자 정의 매개변수를 전달하기 위해 별도의 항목을 생성할 수도 있습니다. 모듈로 로드될 수 있는 일부 드라이버에서 사용될 수 있다고 가정하면 알 수 없는 매개변수는 무시됩니다. 따라서 커널 매개변수를 전달하는 Grub 항목을 생성 하고 ( ) local.network_interfaces=…에서 /etc/rc.local매개변수 값을 찾으세요 </proc/cmdline tr ' ' '\n' | sed -n 's/^local.network_interfaces=//p'.

답변2

커널이 네트워크를 설정하게 하세요

set netcfg='ip=none'
menuentry 'Switch DHCP on/off' {
   if [ $netcfg = 'ip=dhcp' ]; then
      set netcfg='ip=off'
   else
      set netcfg='ip=dhcp'
   fi
   echo Setting $netcfg
   sleep 1
}
menuentry 'Linux' {
   linux vmlinuz $netcfg
}

관련 정보