hyojeonglee / osfall2019

Undergraduate Operating Systems course (2019 fall)
17 stars 8 forks source link

booting sd card 만드는 중 오류 #12

Closed chphch closed 5 years ago

chphch commented 5 years ago

과제를 진행하던 중 잘 돌아가던 테스트 프로그램이 단순한 프린트도 출력하지 못하게 되어 디버깅 중입니다.

부팅 sd카드 만드는 과정에 문제가 있을까 싶어 메세지를 읽어보니 오류 메세지들이 나타납니다.

아래 메세지 정상인가요? 아니라면 어떻게 해결해야 할까요?

1570271983791

hyojeonglee commented 5 years ago

해당 에러는 무시하고 진행하셔도 부팅 이미지 생성에 문제가 없습니다. 다른 원인을 찾아보셔야할 것 같습니다. 관련해서 나타나는 다른 에러 메시지 등을 알려주시면 해결에 도움드리겠습니다.

chphch commented 5 years ago

현재 가장 이상한 현상은 코드를 고치고 새로 빌드를 하더라도 이전 버전의 커널이 나타난다는 점입니다. (ptree가 간단하게 특정 값을 return하게 짜고 test 코드에서는 ptree의 리턴 값만 프린트하게 했습니다. ptree 리턴 값을 수정해 보았는데 이전 버전의 리턴 값이 나타납니다.)

다양한 이유들을 의심해 보고 있는데 한 가지 이상한 점은 부팅 디스크를 만든 후 lsblk를 입력하면 아래와 같이 loop device들이 생성된다는 점입니다 정상인가요?

image

이 때문인지 mount, umount도 잘 되지 않는 것 같네요

![Uploading Screenshot from 2019-10-06 00-38-56.png…]()

hyojeonglee commented 5 years ago

먼저, sd card가 인식이 제대로 되는지 보시고, (참고) flash-sdcard.sh 스크립트 실행 시 device node를 정확히 지정해주셔야할 것 같습니다. 제대로 인식이 안되면 usb 리더의 문제일 가능성이 있습니다. 다른 팀원분들도 같은 문제를 겪고 계신가요?

chphch commented 5 years ago

다른 팀원들은 같은 코드로 잘 실행됩니다.

그런데 링크에서 알려주신대로 lsblk명령어로 확인해서 제대로 나와도 될 때가 있고 안될때가 있네요

flash-sdcard.sh 읽어보다가 dd 명령어가 될 때도 있고 안될 때도 있는 것을 확인했습니다.

우분투를 재부팅한 직후에는 되는 것 같네요

hyojeonglee commented 5 years ago

그렇다면 구성품 문제이니 키트를 교환해드리겠습니다. 그전까진 팀원분들 디바이스로 테스트하셔야할 것 같습니다.

chphch commented 5 years ago

팀원 장비로 테스트해보니 바로 되네요 월요일에 교체하러 연구실로 찾아가겠습니다. 언제쯤 가면 좋을까요?

hyojeonglee commented 5 years ago

네 월요일 11~12시 사이에 오시면 됩니다.!

chphch commented 5 years ago

조교님 팀원들 장비로 교체해 보더라도 같은 현상이 발생하는데요 하드웨어 문제보다 소프트웨어 문제인 것 같습니다.

커널 빌드 후 부팅디스크 만들고 라즈베이파이에서 테스트파일 실행 해보면 수정한 커널 빌드가 반영되지 않은 것을 확인할 수 있습니다.

부팅디스크가 잘 만들어지지 않은 것으로 보여 부팅디스크 만드는 과정을 관찰해 보았습니다. 부팅디스크 만드는 과정에 파티션 만들어 지는 과정도 문제가 없고 오류 메세지도 발생하지 않습니다.

하지만 부팅 디스크로 파일을 옮길 때 문제가 생기는 것을 관찰할 수 있었는데요

  1. 부팅 디스크를 만든 후
  2. lsblk를 입력하면
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdb      8:16   1  14.9G  0 disk 
    ├─sdb4   8:20   1     1K  0 part 
    ├─sdb2   8:18   1     3G  0 part 
    ├─sdb9   8:25   1   7.5M  0 part 
    ├─sdb7   8:23   1     8M  0 part 
    ├─sdb5   8:21   1  11.2G  0 part 
    ├─sdb3   8:19   1   512M  0 part 
    ├─sdb1   8:17   1    64M  0 part 
    ├─sdb8   8:24   1    12M  0 part 
    └─sdb6   8:22   1    20M  0 part 
    sda      8:0    0 465.9G  0 disk 
    ├─sda4   8:4    0 111.8G  0 part 
    ├─sda2   8:2    0 335.2G  0 part 
    ├─sda3   8:3    0  18.6G  0 part /
    └─sda1   8:1    0   200M  0 part /boot/efi
  3. sudo mount /dev/sdb2 mount_dir 입력하면 sdb2가 마운트 되는 것이 아니고 loop가 마운트 되는 것을 볼 수 있습니다.
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdb      8:16   1  14.9G  0 disk 
    ├─sdb4   8:20   1     1K  0 part 
    ├─sdb2   8:18   1     3G  0 part 
    ├─sdb9   8:25   1   7.5M  0 part 
    ├─sdb7   8:23   1     8M  0 part 
    ├─sdb5   8:21   1  11.2G  0 part 
    ├─sdb3   8:19   1   512M  0 part 
    ├─sdb1   8:17   1    64M  0 part 
    ├─sdb8   8:24   1    12M  0 part 
    └─sdb6   8:22   1    20M  0 part 
    loop0    7:0    0 240.4M  0 loop /home/chphch/temp
    sda      8:0    0 465.9G  0 disk 
    ├─sda4   8:4    0 111.8G  0 part 
    ├─sda2   8:2    0 335.2G  0 part 
    ├─sda3   8:3    0  18.6G  0 part /
    └─sda1   8:1    0   200M  0 part /boot/efi

예상되는 원인이 있으신가요?

hyojeonglee commented 5 years ago

일단 마운트하기전에도 lsblk을 수행하시면 sdb1~9의 MOUNTPOINT에 rootfs 등 인식이 되어야하고 마운트 후에도 말씀하신대로 loop0가 아닌 sdb2 옆에 본인이 생성하신 mount_dir이 나타나야합니다. 아래는 mount_dir을 /home/leto/Documents/temp로 지정해서 마운트/언마운트한 예시 결과입니다. test

먼저,

  1. usb리더와 본인 우분투 머신의 연결,
  2. 그리고 usb리더에 sd카드가 제대로 꽂혀있는지를 확인해보시고,

같은 구성품으로 팀원분이나 다른 우분투 머신에서 확인했을 때에는 제대로 인식이 된다면 현재 사용하고 계신 우분투 머신이나, 머신과 연결에 사용되는 젠더 등의 문제일 수 있습니다. 반대로 다른 환경에서도 같은 구성품으로 확인했을때 문제가 생긴다면 구성품 문제이니, 오늘도 연구실로 오시면 키트 교체가 가능합니다.

cosmosno commented 5 years ago

조교님 UART-to-USB 케이블이 몇시간 전까지 되다가 안되서 교체를 받고 싶은데 언제 쯤 찾아가도 될까요?

hyojeonglee commented 5 years ago

네 지금 바로 오셔도 되고, 오늘 가능하신 때 메일로 시간 알려주시고 오시면 됩니다.

chphch commented 5 years ago

어제 늦은 저녁 다른 OS조교님들과 함께 맥북 위에 설치된 우분투 문제임을 확인했습니다.