NFS를 통해 제공되는 원격 시스템의 파일 시스템을 사용하여 임베디드 ARM 보드의 U-boot에서 Linux를 부팅하려고 합니다. 이더넷 연결이 잘못 연결된 것으로 나타나 NFS 공유가 탑재되지 않습니다. 그러나 U-boot가 TFTP를 통해 커널을 로드하기 때문에 이더넷 하드웨어가 작동한다는 것을 알고 있습니다.
어떻게 디버깅할 수 있나요? 커널을 조정해 볼 수도 있지만 이는 반복할 때마다 커널을 다시 컴파일해야 하므로 속도가 느립니다. 외부 파일 시스템을 마운트하지 않고도 커널을 실행할 수 있는 방법이 있습니까?
답변1
initrd 이미지를 커널( General Setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support -> Initramfs source file(s)
)로 컴파일할 수 있습니다. (x86의 경우 my init)과 같은 특수 형식으로 파일을 지정합니다.
dir /bin 0755 0 0
file /bin/busybox /bin/busybox 0755 0 0
file /bin/lvm /sbin/lvm.static0755 0 0
dir /dev 0755 0 0
dir /dev/fb 0755 0 0
dir /dev/misc 0755 0 0
dir /dev/vc 0755 0 0
nod /dev/console 0600 0 0 c 5 1
nod /dev/null 0600 0 0 c 1 3
nod /dev/snapshot 0600 0 0 c 10 231
nod /dev/tty1 0600 0 0 c 4 0
dir /etc 0755 0 0
dir /etc/splash 0755 0 0
dir /etc/splash/natural_gentoo 0755 0 0
dir /etc/splash/natural_gentoo/images 0755 0 0
file /etc/splash/natural_gentoo/images/silent-1680x1050.jpg /etc/splash/natural_gentoo/images/silent-1680x1050.jpg 0644 0 0
file /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg 0644 0 0
file /etc/splash/natural_gentoo/1680x1050.cfg /etc/splash/natural_gentoo/1680x1050.cfg 0644 0 0
slink /etc/splash/tuxonice /etc/splash/natural_gentoo 0755 0 0
file /etc/splash/luxisri.ttf /etc/splash/luxisri.ttf 0644 0 0
dir /lib64 0755 0 0
dir /lib64/splash 0755 0 0
dir /lib64/splash/proc 0755 0 0
dir /lib64/splash/sys 0755 0 0
dir /proc 0755 0 0
dir /mnt 0755 0 0
dir /root 0770 0 0
dir /sbin 0755 0 0
file /sbin/fbcondecor_helper /sbin/fbcondecor_helper 0755 0 0
slink /sbin/splash_helper /sbin/fbcondecor_helper 0755 0 0
file /sbin/tuxoniceui_fbsplash /sbin/tuxoniceui_fbsplash 0755 0 0
file /sbin/tuxoniceui_text /sbin/tuxoniceui_text 0755 0 0
dir /sys 0755 0 0
file /init /usr/src/init 0755 0 0
아직 ARM에서는 사용해본 적이 없지만 작동할 것입니다. /init
시작 명령을 배치할 수 있는 파일입니다. 나머지는 필요한 다양한 파일입니다(busybox 등).
답변2
답변3
이 게시물은 커널 디버깅에 관한 것이 아니라 질문에서 제기된 네트워크 문제에 관한 것입니다.
스위치가 STP(Spanning Tree Protocol)를 지원하는 경우 STP가 작동 중일 때 STP는 6초 이상 스위치의 이더넷 포트를 활성화하지 않을 수 있다는 점을 명심하십시오. 이 지연은 호스트가 호스트의 이더넷 포트를 재설정할 때마다 다시 시작될 수 있으며, 이는 전원 켜기, DHCP 요청, 네트워크 드라이버의 커널 로딩 등 사이에 여러 번 발생할 수 있습니다. 이는 디스크가 없는 시스템의 NFS 부팅, DHCP, 킥스타트 등을 방해하여 많은 시스템 관리자에게 많은 문제를 일으킬 수 있습니다. 몇 가지 예를 보려면 RedHat을 참조하세요.버그 189795 - Kickstart 중 DHCP 시간 초과, 그리고이 PXE 가이드.
Cisco 스위치 및 HP ProCurve 스위치와 같은 대부분의 고급 스위치는 STP를 지원하며 모든 포트에서 이 기능을 활성화합니다.