커널 버전 확인

cat /proc/version

Linux version 4.9.201-tegra (root@avermedia.com) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Wed Mar 10 18:56:54 CST 2021

> Linux version 4.9.201-tegra

 

Kernel 4.x 에서:

/etc/udev/rules.d99-gpios.rules 추가 후 아래 내용 기입, 저장

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'find -L /sys/class/gpio/ -maxdepth 2 -exec chown root:gpio {} \; -exec chmod 770 {} \; || true'"

해당 권한을 부여할 계정을 gpio 그룹에 추가

usermod -G gpio -a user_name

재부팅 후 사용 가능 여부 확인

 

Kernel 5.x 에서:

23.01.26: 현재 주변에 5.x 기반 장치가 없어 확인 및 검증 불가.

특정 MAC 주소를 갖는 네트워크 통신 장치의 이름을 사용자 지정으로 명시하는 쉬운 방법

/etc/udev/rules.d 경로에 99-custom_network.rules 추가 후 아래 내용 기입, 저장

(* root 권한 필요)

SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b4:96:91:14:ae:58",ATTR{type}=="1",NAME="provider0"

 

재부팅 후 적용 확인

sudo reboot now

 

이번에 서버를 새로 들이면서, 우분투 설치에 이슈가 있어서 기록을 남긴다.

 

남기기에 앞서, HP만 관리하다가 Dell은 처음이라 문의를 했는데, Dell ProSupport는 별로 도움이 안되는 듯하다.. 실력도 영 없지만, 뭐랄까 엔드 유저도 찾아서 볼 수 있는 정도의 매뉴얼 검색 수준만 해주고, 실질적 기술 지원은 도움이 안된다.

심지어 자기가 안된다고 기술해놓고 제시한 자료에는 당당하게 Supported라고 써있는데..?

지적해주는 족족 자기 말을 정정하니 신뢰 0... 하다 하다 방법을 내가 찾아서 Dell Korea에 전달하는 수준이란;;

Dell 서버 사용 시 그냥 글로벌 커뮤에 물어보는게 더 낫다.

내가 찾은 방법을 글로벌 커뮤측 담당자는 이미 알고 있더라.

 

우선 R240은 별도 옵션으로 추가하지 않으면 Software RAID 인 S140이 사용된다.

R240은 Ubuntu 20.04 및 18.04에 Cert되어 있으나, S140의 지원은 예외가 있다. 바로, Bootable로는 활용할 수 없는 것.

(참고로 이 공인 Cert된 버전 조차 제대로 안내를 못한 Dell Korea ProSupport...)

 

S140의 Ubuntu 환경은 Data 로만 쓸 수 있으며, 설치 진행 시 Storage 초기화 과정에서 에러 발생한다.

 

해결 방법은

 

1. System BIOS -> SATA -> RAID모드 설정

2. Device Settings -> S140 -> Select... -> Convert to Non-RAID disks

 

즉, 부팅용 하드는 레이드에서 제외하면 된다.

(근데 Dell Korea는 별도 hw 컨트롤러 없이는 안된다고 어디서 뻥카를.. 나도 몇 년을 했는데;; )

클라이언트 버전과 서버 버전의 차이는 dll과 드라이버 등 많은 부분이 차이남.

이를 위해 에디션 등 구분없이 확인 필요 시

 

Win32_OperatingSystem 클래스 - Win32 apps | Microsoft Docs

 

Win32_OperatingSystem 클래스 - Win32 apps

컴퓨터에 설치된 Windows 기반 운영 체제를 나타냅니다.

docs.microsoft.com

 

에서 Product Type 체크로 가능함

시리얼 객체, 특히 메가 시리즈 등 다수의 시리얼을 가진 아두이노 개발 보드를 다룰 때, 특정 함수를 다양한 시리얼 객체에 적용하고자 할 경우에 타입으로 Stream &을 사용하면 arg로 쉽게 넘길 수 있다.

 

void test_function(Stream &stream) {
	....
}

void loop(){
    test_function(Serial);
    test_function(Serial1);
    test_function(Serial2);
    test_function(Serial3);
}

라즈베리파이에서, ble 사용시 dbus 에러가 발생할 경우

ERROR:dbus.proxies:Introspect error on :1.5:/: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.16" (uid=1000 pid=2709 comm="/usr/bin/python ./example_advertisement.py ") interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" requested_reply="0" destination=":1.5" (uid=0 pid=522 comm="/usr/lib/bluetooth/bluetoothd ")
Traceback (most recent call last):
  File "./example_advertisement.py", line 204, in <module>
    main()
  File "./example_advertisement.py", line 180, in main
    adapter = find_adapter(bus)
  File "./example_advertisement.py", line 164, in find_adapter
    objects = remote_om.GetManagedObjects()
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.16" (uid=1000 pid=2709 comm="/usr/bin/python ./example_advertisement.py ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination=":1.5" (uid=0 pid=522 comm="/usr/lib/bluetooth/bluetoothd ")

 

라즈비안이 lite 버전인지 확인한다.

lite 버전에서는 pi에 default로 일부 bt 제어 권한이 없기 때문에 다음과 같이 해결할 수 있다.

 

sudo usermod -G bluetooth -a pi
sudo reboot now