CentOS 7 데스크탑PC에 설치 도전
우선 개발용으로 테스크탑PC(삼성 DM500S4A-A71) 선정하여 CentOS 7 64bit를 설치하였습니다.
장비구매 전에 혹 CentOS가 설치되지 않을까 망설였는데. 이곳에 글을 올려 자문을 받아
일단 장비를 구매하였습니다.
역시나 CPU(i7-4770)/ Chipset(H81)은 CentOS 6.5에서는 설치 오류가 나더군요.
그래서 최신 CentOS 7로 설치를 했더니 정상적으로 설치는 되었습니다.
그런데 문제는 Etnernet이 잡히질 않더군요.
/etc/sysconfig/network-scripts/ifcgf-eth0에 구성을 다 했는데...
/var/log/message 파일에 Error:no device found for connection 'eth0' 라고 되어더군요.
제가 보기엔 드라이버가 동작이 안되서 장치를 인식하지 못하는것 같은데...
(무선랜은 정상동작이 되는데... ㅜ.ㅜ)
혹시나 CentOS 7의 커널이 3.10.0 이기에 커널버전 올려봤습니다.(3.15.6)
제발 되기를... 역시나 안돼더군요.
랜카드가 온보드 형식이라 외장형으로 다시 구매하면 해결이 될 수도 있겠지만.
제가 초보라서 그런게 아닌가 싶어 계속 구글링하며 찾고 있습니다.
랜카드 모델이 marvell yukon 88e8075 모델인데 리눅스용 드라이버는 커널 2.6.x만 있더군요.
lspci -v 명령으로 보면 irq까지 잡힌게 보입니다.
해결 방법은 뭐가 있을까요.
외장형으로 랜카드를 구매할 방법밖에 없을까요?
커널에 marvell ethernet 드라이버가
커널에 marvell ethernet 드라이버가 포함되어 있는데, 이 드라이버가 동작하지 않나 보죠?
제가 해당 장치를 가지고 있지 않아서 동작할지는 모르겠습니다만, 인터넷에서 2.6.x용 드라이버를 다운받아서 잠깐 수정해 보니 빌드가 되는군요.
처음에
빌드에러를 하나하나 수정해 나갑니다. 구글 검색과, 리눅스 커널 3.15.5에 포함된 marvell 드라이버(drivers/net/ethernet/marvell/)소스를 참고해서 수정했습니다.
1. http://elinux.org/Kernel_3.4_to_3.10_porting_guide 참고해서 __dev... 매크로 삭제
2. NETIF_F_HW_VLAN_TX => NETIF_F_HW_VLAN_CTAG_TX, ETIF_F_HW_VLAN_RX => NETIF_F_HW_VLAN_CTAG_RX <== 커널 소스 참고.
3. sk_buff 멤버인 rxhash가 hash로 변경. pMag->hash
4. PDE(inode)->data 를 PDE_DATA(inode)로 수정
5. __vlan_hwaccel_put_tag(pMsg, be16_to_cpu(Vlan)); 를 __vlan_hwaccel_put_tag(pMsg, htons(ETH_P_8021Q), be16_to_cpu(Vlan)); <== 커널 소스 참고.
이 방법으로 제대로 동작할지 모르겠습니다만 한번 시도해 보시기 바랍니다.
marvell ethernet 드라이버가 동작이 안돼는것 같내요.
답변 감사합니다.
우선 님께써 글을 올려주시기 전에 텀에 다시한번 centos 6.5를 설치하니 설치가 되더군요.
(문제는 usb 부팅이 문제가 있어서 그랬던거 같내요. CD로 제작하여 설치하니 정상 설치가 되내요.)
그런데 이상한 문제는 centos 6.5를 설치해도 똑같은 문제가 발생하내요.
그래서 marvell ethernet 드라이버가 커널 2.6.x 까지 지원되기에 함 설치해 봤죠.
드라이버에 포함된 설치가이드데로 했는데도 ip addr show하면 lo와 무선랜만 나옵니다.
그래서 다른 방법으로 win8.1깔고 VMware에 centos7를 설치해 봤더니.
유선랜이 잡히는데 드라이버가 marvell ethernet이 아니라 Ethernet(eno16777736)로 잡히더군요.
제가 intel 온보드 랜카드라 그런지 intel 제품으로 인식이 되더군요.
VMware에서는 어떤 제품의 드라이버든 ip addr show하면 뜨는데...
컴에 바로 centos7을 깔고 보면 왜 안 잡히는지 모르겠네요.
혹시 해서, 생각나서 적는 건데 eth0이 아닌 다른
혹시 해서, 생각나서 적는 건데 eth0이 아닌 다른 이름으로 장치가 잡혀 있는 건 아닌지 확인해 보시기 바랍니다.
3.15.5 커널 marvell ethernet 드라이버 소스를 보니 88e8075가 pci device table에 등록되어 있더군요.
VMware에선 확실히 다른 이름으로 잡힙니다.
답변 감사합니다.
VMware에선 확실히 eno16777736으로 잡힙니다.
헌데 바로 부팅하여 설치하는 상태에선 당췌 ip addr show에 잡히는게 없습니다.
CentOS7의 경우 네트워크디바이스 이름이
CentOS7의 경우 네트워크 장치 이름이 ethX형태가 아닐텐데요. /etc/sysconfig/network-scripts/ifcgf-eth0를 구성하셨다고 한게, 그 파일을 직접 작성하셨다는 의미인가요?
직접 셋팅하는것은 어려울 수 있으니 우선은 CentOS설치때 해주는 네트워크 디바이스 설정 그대로 쓰면 잘 될것 같습니다.
centos7에선 ethX 형태 아닌게 맞습니다.
어허야님 답변 감사합니다. ^^
언급하신데로 centos7에선 ethX가 아니라 다른것으로 잡히는것 같습니다.(예 WMware에선 eno16777736)
ifcfg-eth0 파일은 제가 직접 작성했습니다.
그리고 centos7 설치 때 네트워크 및 호스트 이름에서 '사용 가능한 테트워크 장치가 없음'으로 뜹니다.
그리고 장치추가하는 항목에도 유형이 Bond/Team/Vlan 으로만 나옵니다.
제가 intel 온보드 랜카드라 intel 드라이버를 구해서 설치해보려고 합니다.
제가 초보라 문제의 상황에 대한 대처방안이 선뜻 떠오르지 않내요.
걍 쉽게 VMware에 가상머신을 설치해서 centos7깔고 웹서버를 구축해야 되나 싶긴한데,
라이센스 비용과, 처리속도를 생각하면 직접 서버를 설치해서 구축하는게 맞는거 같은데...
시간은 없고 그져 답답하기만 하네요... T.T
Vmware안에 설치해서 잡힌 거는 vmware에서
Vmware안에 설치해서 잡힌 거는 vmware에서 가상으로 인텔 이더넷 장치를 제공하기 때문이고 이것과 실제로 메인보드에 온보드된 마벨 이더넷 장치와는 관계가 없습니다.
CentOS 6.5에서 마벨에서 제공하는 커널 2.6.x 용 드라이버를 설치했는데 ip addr show로 장치명이 보이지 않는다고 하셨는데, 죄송합니다만 제 생각에 뭔가 제대로 하지 않았기 때문일 가능성이 높습니다.
빌드된 모듈명이 sk98lin.ko이던데, 모듈이 올바른 위치에 복사했는지, 또는 lsmod 해서 sk98lin이 올라와 있는지 확인하셨는지 궁금합니다.
간단히, 명령창에서 아래와 같은 명령으로 어떤 결과가 나오는지 확인해 보시기 바랍니다.
depmod 결과를 덤프하여 파일첨부합니다.
답변 감사합니다.
centos 6.5에서 ethernet이 안잡힌 상황은 뭐 제가 별 한것은 없고요.
설치 후 바로 유선 lan이 잡히는지만 확인한겁니다.
(무선은 바로 잡혔기에...)
일단 저는 centos7로 재설치가 된 상태이구요.
centos7에서 님께서 조언한 depmod 결과를 덤프하여 파일첨부였습니다.
혹시 가능하시다면 파일을 함 확인해주셨으면 감사하겠습니다. ^^
lspci -nn 의 결과가 아니라서 확실하진
lspci -nn 의 결과가 아니라서 확실하진 않지만, 아마 온보드된 마벨 이더넷 장치의 PCI DEVICE ID 가 0x4373인 모양입니다.
커널에 포함된 소스, 또는 마벨 2.6.x 용 소스를 보면 88E8075의 device id가 0x4370 이군요. 비슷한 다른 장치로 0x4373이 있다면 그래도 커널이 잡압을 텐데, 아예 0x4373은 등록되어 있지 않습니다.
커널 소스에서 drivers/net/ethernet/marvell/sky2.c 에 0x4373 라인을 추가하서 빌드해 보시기 바랍니다. 아마 온보드된 장치가 특별하게 다른 장치가 아니라면 동작할 걸로 생각합니다.
물론 그 이전에 lspci -nn | grep Marvell 해서 device id가 0x4373인지 확인하셔야겠지요.
참고로 마벨 벤더 id가 0x11AB 이니까
참고로 마벨 벤더 id가 0x11AB 이니까 lspci -nn | grep Marvell 하면 [11ab:4373] 같은 게 보일 겁니다.
아마!, 커널 소스를 푼 후에 대략 아래 순서로
아마!, 커널 소스를 푼 후에 대략 아래 순서로 진행하시면 전체 커널을 빌드한 필요없이 모듈만 빌드하실 수 있을 겁니다.
이렇게 하고 관련 모듈 모두 내린후 다시 올리면 되는데, 그냥 간편히 리부트하시기 바랍니다.
제가 대충 빌드되는 것은 확인했는데, 제대로 동작할지는 실제로 테스트해 보셔야 합니다.
marvell 드라이버 문제 해결...!! 그러나.
우선 답변 감사합니다.
언금해 주신 sky2.c 파일에 보니 0x4370만 있더군요.!!
그래서 0x4373를 추가해서 컴파일 했더니. 정상적으로 잡힙니다.
헌데... 또다른 문제가 있네요.
제가 뭘 잘 못했는지 shutdown을 하면 reboot이 되네요.
제가 한 작업은...
1. 소스를 커널 최신 3.16으로 다운받아 소스에 있는 sky2.c를 변경 후
알려주신 방범으로 컴파일하니 오류가 계속 나더라구요.
2. 그래서 아예 커널 전체를 컴파일 했습니다.
3. 헌데 컴파일 완료 후 /boot/grub/grub.conf를 변경하려 했는데,
해당 폴더에 파일이 없더군요.
4. 커널이 컴파일이 완료된 상태라 그냥 리부팅을 함 해봤는데.
동작은 정상적으로 되더군요. 문제는 shutdown이 reboot으로 된다는 것 말고는
정상인 것 같습니다.
grup.conf 파일의 문제는 아닐것 같구요.
뭔가 디바이스의 문제일 것 같은데...
말씀하신 것만으로는 0x4373 수정이 야기한
말씀하신 것만으로는 0x4373 수정이 야기한 문제라고 속단하기는 어렵습니다.
일단 수정하지 않은 상태의 커널을 빌드해서 설치한 후 재부팅을 통해서 말씀하신 문제가 발생하는지 확인해 보시기 바랍니다.
문제가 발생하지 않는다면, 그 후에 0x4373을 수정해서 다시 테스트해 보기 바랍니다.
이렇게 해서야 문제가 발생한다면, 그때서 0x4373 추가가 야기한 문제라고 볼 수 있습니다.
일반적으로 grub.conf가 아니라 grub.cfg가 아닌지요. 이 파일이 없다면 부팅 자체가 되지 않을 텐데, 다시 한번 확인해 보시기 바랍니다.
새 커널을 설치했을 경우, 이 파일을 갱신해야 실제 부팅시 적용이 됩니다.
만약, 0x4373 수정이 문제가 아니라고 판단되신다면, 커널 빌드 및 설치 과정을 가능한 상세히 기술하셔서 다른 글타래서 질문을 올려보시기 바랍니다.
답변 감사합니다. (우선 PC의 파워서플라이가
답변 감사합니다.
(우선 PC의 파워서플라이가 고장이 나서 교체까지 몇일이 걸렸네요...)
조언해 주신데로 다시 설치하여 재부팅해 봤는데... 같은문제 이네요.
상세한 설치과정을 기술해서 다시 한번 문의해 봐야겠습니다.
답변 감사합니다. ^^
댓글 달기