카테고리 보관물: Tools & Tips

Raspberry Pi Debugprobe Firmware Update

Warn : ***
Warn : *** Old Raspberry Pi Debugprobe firmware detected (1.0.1)
Warn : *** Using low-performance workaround
Warn : *** Please update to the latest release at:
Warn : *** https://github.com/raspberrypi/debugprobe/releases/latest
Warn : ***

Debugprobe의 firmware가 오래되어서 low-performance workaround로 동작한다는 경고메세지가 발생할 때는 firmware의 버전을 업데이트 해주는 것으로 해결할 수 있다.

  • Debugprobe realease page에서 최신 버전의 debugprobe.uf2 file을 다운로드 받는다.
  • Debugprobe hardware에도 BOOTSEL 버튼이 있는데 이것을 누른채로 USB를 연결하면 디스크가 마운트된다.
  • 다운로드 받은 debugprobe.uf2 file을 복사하면 완료된 후 최신 firmware로 재실행된다.

HHKB Fn+ESC suspend 진입 방지

Linux에서 Happy Hacking Keyboard의 Fn key를 누르고 있다가 실수로 ESC key를 눌러서 Fn + ESC 조합이 되어 sleep에 진입하는 경우가 종종 있는데, 한 참 작업하는 중에 컴퓨터가 sleep에 들어가 버리면 흐름이 다시 잡기가 여간 힘들다.

Fn+ESC는 WakeUp에 해당하는 Keycode 값(151)이 keyboard로 부터 올려지는 것이어서 상위단에서 이 상황을 따로 구분해 주기는 어렵다. HHKB의 DIP switch를 변경해 주거나 해당 키를 처리하지 않도록 환경 설정을 해주어야 하는데, DIP switch를 변경하면 다른 설정이 영향을 받을 것 같아서 환경 설정으로 수정해 보기로 했다.

Fn+ESC에 의해 발생되는 sleep key는 먼저 logind에서 처리되고 Window manager (GNOME)에 전달되는데, logind에서 이 키를 받았을 때 무시하도록 하려면 다음과 같이 /etc/systemd/logind.conf를 수정해 준다.

/etc/systemd/logind.conf


HandleSuspendKey=ignore
HandleSuspendKeyLongPress=ignore
HandleHibernateKey=ignore
HandlePowerKey=ignore
HandlePowerKeyLongPress=ignore
HandleRebootKey=ignore

GNOME 추가 수정

Hyprland를 사용하는 경우에는 위의 설정만으로도 되지만, GNOME은 추가로 전원에 관련된 동작을 수정해 주어야 한다. Terminal에서 gsettings의 전원 동작을 아래와 같이 설정해 준다.

gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing'

이제 시스템을 재부팅하고 Fn+ESC를 누르면 해당 키가 무시되어 suspend에 진입하지 않게 된다.

Shell drop이 되지 않을 때 원격서버 재시동

원격 서버의 시스템 노드가 망가졌거나 과도한 task 실행으로 ssh로 접근할 때 제대로 shell을 drop하지 못하는 경우가 종종 생긴다.

ssh는 원격 서버에서 실행할 명령어를 인자로 받을 수 있지만 ls같은 단순한 명령어와는 달리 reboot 명령어를 수행하려면 sudo 권한을 접근하기 위한 비밀번호 입력을 필요로 한다.

비록 ssh가 “Secure SHell”이라고는 해도 일반적인 shell처럼 상호작용을 위한 비밀번호 입력 창을 대기해 주지는 않는다.

오류 메세지를 보면 다행히도 sudo는 표준입력으로 부터 비밀번호를 읽어 들이는 -S 옵션을 지원한다. 따라서 비밀번호를 표준출력으로 내보내는 명령어를 묶어서 함께 전송하면 관리자 권한으로 명령어를 실행할 수 있다.

# 비밀번호를 echo를 이용해서 표준출력으로 내보내고 sudo 명령어를 실행시킨다.
ssh <ssh_server> "echo <비밀번호> | sudo -S reboot"

다만, 이렇게 하면 history에 관리자 비밀번호가 노출되므로 동작한 후에는 history를 삭제해 주자.