syslinux UEFI 부팅: 하드웨어 식별자를 기반으로 부팅 옵션을 자동으로 선택합니다.

syslinux UEFI 부팅: 하드웨어 식별자를 기반으로 부팅 옵션을 자동으로 선택합니다.

USB 미디어에서 부팅하고 syslinux EFI를 사용하여 부팅했습니다.

두 대의 서로 다른 랩톱에서 동일한 미디어를 부팅하고 있으며 syslinux.cfg에는 각 랩탑마다 하나씩 2개의 메뉴 옵션이 있습니다.

현재는 각 노트북에 맞는 메뉴 옵션을 수동으로 선택해야 합니다.

syslinux이를 자동화하고 부팅 중인 노트북을 자동으로 식별할 수 있는 방법이 있습니까 ? 어쩌면 고유한 하드웨어 식별자를 기반으로 했을 수도 있습니다.

어떻게 해야 하나요?

이 내 꺼야 EFI/BOOT/syslinux.cfg:

DEFAULT menu.c32
PROMPT 0
MENU TITLE UEFI boot menu
MENU AUTOBOOT Booting AAA in # seconds

LABEL AAA
MENU LABEL AAA
KERNEL menu.c32
APPEND /AAA/menu

LABEL BBB
MENU LABEL BBB
KERNEL menu.c32
APPEND /BBB/menu

파일을 /AAA/menu다운로드한 /BBB/menu다음 각 노트북에 맞는 부팅 옵션을 제공하세요.

/AAA/menu기본적으로 노트북 A 와 노트북 B에서 자동 시작이 필요합니다./BBB/menu

답변1

내가 아치 위키에서 읽은 내용에 따르면:협회

syslinux extlinux와 함께 제공되는 패키지를 사용하고 이를 두 번 체인로드하는 것은 가능하지만 어렵다고 생각합니다 . syslinux하지만 아직 테스트해보지는 않았습니다.

두 대 이상의 서로 다른 컴퓨터에 대해 이 작업을 수행해야 한다면 많은 작업이 필요합니다. 왜냐하면 10대의 서로 다른 컴퓨터, USB 드라이브에 10개의 서로 다른 파티션이 필요하기 때문입니다. 각 파티션에는 커널과 initrd 및 일부 syslinux 파일의 복사본이 있습니다.

모든 노트북에는 ESP 부팅 파티션이 있어야 합니다. /dev/sda1그렇지 /dev/sdaX않은 경우 이 방법은 작동하지 않습니다.

진행 방법은 다음과 같습니다.

1. 노트북 A에 extlinux를 설치합니다.

노트북 A에서 esp 부팅 파티션이 /dev/sda1이라고 가정합니다.

mkdir ./mntefi
sudo mount /dev/sda1 ./mntefi
sudo mkdir ./mntefi/boot
sudo mkdir ./mntefi/boot/syslinux

# install extlinux:
sudo extlinux -i ./mntefi/boot/syslinux/ 

# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mntefi/boot/syslinux

파일 만들기./mntefi/boot/syslinux/syslinux.cfg

TIMEOUT 0

UI menu.c32

LABEL MAIN
    COM32 chain.c32
    APPEND hd1 3

이 파일은 노트북 A의 syslinux.cfg를 포함하는 USB 드라이브의 세 번째 파티션(노트북 A에 내부 드라이브가 하나만 있는 경우 hd1)에 연결됩니다.

2. USB 드라이브에 파티션 3(/dev/sdb3)을 생성합니다.

파티션은 작을 수 있으며 syslinux, 커널 및 initrd만 포함하면 됩니다.

3. USB 드라이브의 파티션 3에 extlinux를 설치합니다.

mkdir ./mnt3
sudo mount /dev/sdb3 ./mnt3
sudo mkdir ./mnt3/boot
sudo mkdir ./mnt3/boot/syslinux

# install extlinux:
sudo extlinux -i ./mnt3/boot/syslinux/ 

# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mnt3/boot/syslinux

파일 만들기./mnt3/boot/syslinux/syslinux.cfg

DEFAULT menu.c32
PROMPT 0
MENU TITLE UEFI boot menu
MENU AUTOBOOT Booting AAA in # seconds

LABEL AAA
MENU LABEL AAA
KERNEL menu.c32
APPEND /AAA/menu

이 파일은 노트북 A의 메뉴를 표시합니다. 메뉴 파일은 파티션 3의 디렉터리에 있습니다 /AAA.

메뉴 파일에서 커널에는 다음 매개변수가 있어야 하며, root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rwLinux가 설치된 USB 드라이브에 있는 파티션의 UUID가 있어야 합니다.

4. USB 드라이브의 마스터 syslinux.cfg:

Linux 시스템이 설치된 USB 드라이브에서 /dev/sda2 파티션에 있다고 가정하고 파일을 생성합니다 EFI/BOOT/syslinux.cfg.

TIMEOUT 0

UI menu.c32

LABEL MAIN
    COM32 chain.c32
    APPEND hd0 1

이 파일은 노트북 내부 드라이브의 첫 번째 파티션이라고 가정하고 노트북 내부 드라이브의 esp 부팅 파티션에 연결됩니다.

이는 항상 노트북 내부 드라이브의 첫 번째 파티션에 있는 syslinux에 연결됩니다.

하지만 syslinux는 부팅하는 드라이브부터 번호를 매길 수도 있습니다. 그렇다면 hd1 1대신 연결해야 합니다.hd0 1

5. 각 노트북에 대해 1, 2, 3단계를 반복합니다.

1단계에서는 syslinux.cfg를 2단계에서 만든 새 파티션에 연결해야 합니다.

관련 정보