내가 이루고 싶은 것

내가 이루고 싶은 것

내가 이루고 싶은 것

USB-RS232 어댑터를 통해 내 NAS(Debian Stretch 실행)에 원격으로 액세스하고 싶습니다. 이 시스템은 헤드리스로 되어 있으므로 직렬 회선에서 부팅 프로세스도 확인하고 싶습니다.

(단, 이 문제를 평가하기 위해 현재 HDMI 포트에 화면이 연결되어 있습니다.)

내가 취한 행동

console=ttyUSB0커널 매개변수 목록에 추가합니다 . 이로 인해 시작 시 시스템이 정지됩니다.

부팅 출력의 마지막 몇 줄은 다음과 같습니다. (부트로더는 extlinux입니다)

Loading /vmlinuz... ok
Loading /initrd.img...ok
Probing EDD (edd=off to disable)... ok

해당 커널 매개변수를 사용하지 않으면 시스템이 문제 없이 부팅됩니다. 여기에서 다음을 실행하여 직렬 터미널 액세스를 쉽게 수행할 수 있습니다.

systemctl enable [email protected]
systemctl start [email protected]

원격 서버에서

screen -F /dev/ttyUSB0 9600

내 로컬 컴퓨터에서. 따라서 USB-RS232 어댑터가 제대로 작동합니다. 서버는인텔 NUC 5CPYHBraswell 칩셋이 장착되어 있고 Linux 4.9.0-4-amd64Debian 커널을 실행합니다.

내 질문

이를 작동시키려면 어떤 조치를 취해야 합니까?

편집 1

부팅 매개변수가 제공되면 console=tty0 console=ttyUSB0,9600n8머신은 정상적으로 부팅되지만 여전히 직렬 포트에 연결할 수 없습니다. 또한 서비스는 다음과 같습니다. 나는 그것이 실행되기를 바랐습니다.systemctl status [email protected]loadedinactive (dead)

편집 2

나는 몇 가지 조사를 한 결과 내 initramfs에 관련 커널 모듈이 없다는 것을 발견했습니다. 커널 인수를 제공하여 initramfs 셸에 들어갈 수 있었지만 장치가 break=init보이지 않았습니다 /dev/ttyUSB0.

initramfs를 다시 생성한 후 , cp210x, pl2303및 을 추가했는데 이제 initramfs 셸에 장치가 있음을 확인했습니다.ftdi_sio/etc/initramfs-tools/modules/dev/ttyUSB0

그래도 다른 컴퓨터에서는 연결할 수 없습니다. 그래서 해당 장치에서 수동으로 getty를 시작하려고 합니다.

# /sbin/getty -L 9600 /dev/ttyUSB0 vt100
getty: setsid: Operation not permitted
# su root -c "/sbin/getty -L 9600 /dev/ttyUSB0 vt100"
sh: su: not found

이것이 내가 지금 있는 곳이다.

답변1

시스템이 정지되지 않았습니다. 방금 감독하셨죠모두직렬 콘솔로 출력됩니다.

콘솔 매개변수를 커널에 전달하려면 로컬 콘솔과 직렬 인터페이스가 모두 포함되어야 합니다.

바라보다TLDP - 원격 직렬 콘솔 방법 - 5장 Linux 커널 구성

그림 5-2. 권장 커널 매개변수,그래픽 카드가 장착된 컴퓨터

console=tty0 console=ttyS0,9600n8

커널 메시지는 첫 번째 가상 터미널과 직렬 포트에 나타납니다. 초기화 시스템 및 시스템 로거의 메시지는 첫 번째 직렬 포트에만 나타납니다. 연결된 모니터를 볼 때 약간 혼란스러울 수 있습니다. 컴퓨터가 부팅된 다음 정지되는 것처럼 보입니다. 당황하지 마십시오. 초기화 시스템이 시작되었지만 이제 직렬 포트에 메시지를 인쇄하고 있지만 화면에는 아무 것도 인쇄되지 않습니다. getty가 구성되면 결국 login: 프롬프트가 연결된 모니터에 나타납니다.

그래픽 카드가 없는 PC의 경우 이 HOWTO에서는 커널 매개변수를 권장합니다.

그림 5-3. 권장 커널 매개변수,그래픽 카드가 없는 컴퓨터

console=ttyS0,9600n8

이러한 매개변수는 부트 로더에 의해 부트 커널로 전달됩니다. 다음으로 Linux 설치에 사용되는 부트 로더를 구성하여 콘솔 매개변수를 커널에 전달합니다.

답변2

CONFIG_USB_SERIAL_CONSOLE=y데비안은 현재 이 기능이 제대로 작동하는 데 필요한 를 사용하여 Linux 커널을 빌드하지 않습니다 .

해당 버그 보고서는 다음과 같습니다.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868352

나만의 커널을 구축한 후 CONFIG_USB_SERIAL_CONSOLE=y(참조https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official), 또한 initrd에 어댑터의 FTDI 직렬 드라이버를 포함해야 했습니다.

# echo ftdi_sio >> /etc/initramfs-tools/modules
# update-initramfs -u

마지막으로 나는 /etc/default/grub다음 내용을 읽도록 조정했습니다.

GRUB_CMDLINE_LINUX_DEFAULT="panic=10 panic_on_oops=1 console=tty0 console=ttyUSB0,115200"

...그리고 도망쳤어요 update-grub.

그 후, 시작 메시지를 성공적으로 확인했고 자동 시작된 serial-getty@ttyUSB0 서비스를 통해 로그인할 수 있었습니다.

관련 정보