2013-12-12 6 views
2

민트 13 (우분투 파생물)의 initrd를 수정하려고합니다. 주요 아이디어는 로컬 톱 스크립트에 의해 실행되도록 만드는 프로그램입니다. 즉, 커널이 시작되어 initrd를로드 할 때 initrd가 ram에서 언로드되기 전에 내 프로그램이 initrd에 있어야 실행됩니다. 기본적으로 윈도우를 보여주고 ncurses lib 함수 중 일부를 사용하려고하지만 오류가 발생합니다. 나는 나의 initrd 파일에 라이브러리를 포함시켰다. 내가 얻는 오류 : 터미널 : Linux를 여는 중 오류가 발생했습니다.initrd에서 ncurses 사용 (linux mint 13 - 기본 커널)

여기 누군가가 문제를 해결하는 방법에 대한 아이디어가 있습니까?

+0

initramfs 단계에서 ncurses를 사용하는 데 성공했습니다. 이제는 마우스를 사용할 수 있는지 테스트 할 것입니다. –

답변

4

충분하지 않습니다. Ncurses는 터미널 파일이 많으며/etc/terminfo에 있습니다. 실제 터미널 유형은 항상 TERM 환경 변수에 저장됩니다. 이것은 아마도 "linux"입니다. 이 구조의 목표는 ncurses 응용 프로그램을 호환 가능하게 만들거나 적어도 어느 곳에서나 사용할 수있게 만드는 것입니다. 예를 들어, wyse 터미널 (antediluvian 시대의 고대 터미널)은 리눅스 나 자유 콘솔처럼 절대적으로 다른 제어 순서를 가지고 있습니다.

라이브러리 만 복사하는 것만으로는 충분하지 않으므로 /etc/terminfo/l/linux도 복사해야합니다.

더 많은 파일이 필요할 수 있습니다. strace 명령으로 테스트 할 수 있습니다 (출력을 해석 할 수없는 경우 google은 친구이거나 다음 질문을 기다리고 있습니다). 구문 :

strace -s 200 -f -o sux.txt ./theCommandToTest 

./theCommandToTest의 커널 호출 로그를 sux.txt 텍스트 파일로 덤프합니다.

어쨌든이 것을 테스트하려면 명령 셸에서 리눅스를 부팅하는 것이 가장 좋습니다 (예 : init =/bin/bash 부팅 옵션을 사용하거나 로컬 상단에서 간단한 bash를 호출). 그래서이 strace를 실행하고, 이것으로 놀아서, 아직 무엇이 필요한지 알아낼 수 있습니다.

행운을 빈다.

+1

안녕하세요, 제공해 주신 정보에 대해 감사드립니다. 방금 터미널 파일을 추가하려고했습니다. (예전 터미널이 다른 seq를 사용했는지는 몰랐습니다.) 그 결과 더 이상 오류가 발생하지 않지만 일시 정지됩니다 (현재 로컬 톱은 자동으로 앱을 시작합니다). 또한 윈도우가 있어야하는 곳을 여러번 클릭했는데 (분명히 보이지는 않음) 여러 프로그램을 클릭하고 일부 프로그램이 하드웨어 장치에 직접 액세스하려고한다는 메시지가 표시되면서 정확히 고정되지 않았습니다. 내일 나는 strace도 사용하려고 노력할 것이므로 정확히 무슨 일이 일어나는지 더 많은 아이디어를 얻을 수 있습니다. –

+0

? 캐릭터 콘솔에서? 그것은 가능합니다 (Google 용 : gpm console linux). 그러나 실제로는 그렇지 않습니다. – peterh

+0

이제 initramfs 환경에서 ncurses 응용 프로그램을 실행할 수 있지만 마우스를 사용할 수는 없습니다. 그래서 현재 gpm이나 다른 것을 initrd에 넣고로드하는 방법을 알아 내려고 노력 중입니다. (gpm 바이너리 만 복사했는데 예상대로 작동하지 않았거나 잘못된 것을했을 수도 있습니다). –