레이블이 yocto인 게시물을 표시합니다. 모든 게시물 표시
레이블이 yocto인 게시물을 표시합니다. 모든 게시물 표시

2022-07-18

[개발노트] Distribution-package의 u-boot 수정 및 컴파및 수정 [ums 이용]

1. devtool modify u-boot-stm32mp
(뭔가 잘못됬을시에는 devtool reset u-boot-stm32mp )

2. 소스수정. 위치는 workspace/source........

3. devtool build u-boot-stm32mp

4. bitbake u-boot-stm32mp -c deploy

5. bitbake tf-a-stm32mp -c deploy -f

최종폴더 fip에 결합된 fipXXX.bin파일이 있음.

u-boot> ums 0 mmc 1
PC$> ls -l /dev/disk/by-partlabel/
lrwxrwxrwx 1 root root 10  7월 18 14:47  boot -> ../../sdd2
lrwxrwxrwx 1 root root 10  7월 18 14:47  fip -> ../../sdd1
lrwxrwxrwx 1 root root 10  7월 18 14:47  rootfs -> ../../sdd4
lrwxrwxrwx 1 root root 10  7월 18 14:47  vendorfs -> ../../sdd3

sudo dd if=tmp-glibc/deploy/images/stm32mp153d-ssonic/fip/fip-stm32mp153d-ssonic-trusted.bin of=/dev/sdd1 bs=1M conv=fdatasync
[sudo] happycpu 암호:
0+1 레코드 들어옴
0+1 레코드 나감
1042421 bytes (1.0 MB, 1018 KiB) copied, 0.0663301 s, 15.7 MB/s

u-boot> reset


2020-06-03

systemd

yocto systemd

리눅스 부팅 및 운영시, 서비스라는 컨셉으로 백그라운드에서 실행되는 것,
네트워크 설정, dhcp서버 운영, 방화벽, crond, 디바이스드라이버 트리거링
등등,
모든 기능들을 비슷한 설정파일과 실행방법으로 표준화? 통일화? 
각 서비스설정파일들에 스크립트도 연결가능하고, 서비스간 종속성도 정의 가능함.

이 서비스를 이용하여, 이더넷 1포트로 공유기구성 할것임.
1. network 설정 (vlan, dhcpc)
2. dnsmasq ==> 하부기기 dhcpd서비스
3. iptables ==> nat기능


# networkd.service
/etc/systemd/network 폴더에 99-default.link로 되어있고

99-default.link -> /dev/null 링크파일만 있다. 
그럼에도 eth0, eth1이 자동으로 살고, dhcp로 설정되어있다. 아마 드라이버단에서 올라온 eth장치들의 기본 설정인가보다.

인터넷에서 systemd networkd를 검색하면 다양한 설정방법이 있다.
https://wiki.archlinux.org/index.php/VLAN
여기 나온것들은 
/etc/systemd/network/eno1.network
이런이름의 이더넷장치.network 이다.
그리고,
/etc/systemd/network/eno1.100.netdev
과같은 이더넷장치.netdev 파일이 있다.

이 파일들은 yocto networkd 관련 recipe 에 추가해주어야 하는데,
급해서 그냥 만들어 넣었으나, 설정파일이 적용이 안되는 현상이 있었다.
위에 설명헌 99-default.link를 보고, 앞세 숫자를 쓰면 적용되었다.
그래서 만든 파일리스트.
-rw-r--r-- 1 root root   86 Jun  2 08:56 20-eth0.network
-rw-r--r-- 1 root root   66 Jun  2 09:43 21-eth0.101.network
-rw-r--r-- 1 root root   78 Jun  2 05:38 22-eth0.102.network
lrwxrwxrwx 1 root root    9 Jun  2 03:48 99-default.link -> /dev/null
-rw-r--r-- 1 root root   92 Jun  2 03:46 en.network
-rw-r--r-- 1 root root   49 Jun  2 05:33 eth0.101.netdev
-rw-r--r-- 1 root root   48 Jun  2 05:33 eth0.102.netdev
-rw-r--r-- 1 root root   94 Jun  2 03:46 wlan.network

network파일들에만 숫자를 붙였다.

결국, systemd가 서비스하는 networkd라는 서비스는 
/etc/systemd/network/파일들이 있으면, 그것을 토대로 네트워크 설정을 하는것이다.

root@imx6ull14x14evk:/etc/systemd/network# cat 20-eth0.network
[Match]
Name=eth0
KernelCommandLine=!nfsroot

[Network]
VLAN=eth0.101
VLAN=eth0.102

root@imx6ull14x14evk:/etc/systemd/network# cat 21-eth0.101.network
[Match]
Name=eth0.101

[Network]
DHCP=yes

[DHCP]
UseRoutes=true

root@imx6ull14x14evk:/etc/systemd/network# cat 22-eth0.102.network
[Match]
Name=eth0.102

[Network]
DHCP=no

[Address]
Address=192.168.102.1/24

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.101.netdev
[NetDev]
Name=eth0.101
Kind=vlan

[VLAN]
Id=101

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.102.netdev
[NetDev]
Name=eth0.102
Kind=vlan

[VLAN]
Id=102

여기까지 하면 eth0포트로 vlan 2개를 생성하고, eth0.101을 dhcpc로 ip를 받아오는 설정
eth0.102를 192.168.102.1로 설정하는것까지 된다.

공유기 기능을 위해서는 아이피 포워딩을 1로 만들어줘야한다. 이 설정은
/etc/sysctl.conf 파일안에 있다.
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 eth0.102 포트로 dhcpd서비스를 구성해야하는데
dhcpd보다 dns캐쉬도 가능한 dnsmasq를 systemd로 구성해야하는데,
yocto에 ADD PACKAGE로 dnsmasq를 추가해서 빌드했다면, 기본구성은 있다.
단, conf가 기본값이므로, 변경시켜줘야한다.
위치는 /etc/dnsmasq.conf
모두 주석이라 지우기도 뭐하고해서, 맨 아래 다음과같이 추가함.
resolv-file=/etc/resolv.conf
interface=eth0.102
listen-address=127.0.0.1
dhcp-range=192.168.102.1,192.168.102.254,12h
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 iptables로 nat와 마스커레이딩 룰을 추가해줘야 한다.
iptables는 systemd 파일이 없었다. 왜 없었지..

iptables.service 이것이 서비스파일인데 없어서, 
/lib/systemd/system/iptables.service 이걸 복사해다가
/etc/systemd/system 폴더에 넣음

내용을 보면
ExecStart=/usr/sbin/iptables-restore /etc/iptables/iptables.rules 룰 위치설정 기본값이므로
그곳에 rules파일이 있음, 이 내부에 필요룰을 넣어야하나,
룰 쓰는 문법이 까다로움.
직접쓰는 문법은있음.
iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE
이렇게 입력하면, 커널내부규직에 룰이 세팅됨,
이걸 읽어서 rules파일로 넣는명령이 있음.
iptables-save > /etc/iptables/iptables.rules
cat /etc/iptables/iptables.rules 해서 내용을 보면,
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*nat
:PREROUTING ACCEPT [167:54020]
:INPUT ACCEPT [40:4307]
:OUTPUT ACCEPT [38:2423]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0.101 -j MASQUERADE
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*mangle
:PREROUTING ACCEPT [1176474:2149394260]
:INPUT ACCEPT [347:52516]
:FORWARD ACCEPT [1176111:2149340196]
:OUTPUT ACCEPT [323:37311]
:POSTROUTING ACCEPT [1176443:2149377969]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*filter
:INPUT ACCEPT [161:26667]
:FORWARD ACCEPT [1175701:2149218077]
:OUTPUT ACCEPT [140:16903]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020

이런 복잡한 내용으로 채워짐.
이 파일들, 내용 위치 생성등 모두 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.


yocto recipe 알아야할 내용.
1. 패키지 추가방법
2. 관련 설정파일 추가방법

암호화 + base64 하고 쉘스크립트.

 #!/bin/bash # IV와 UserKey를 설정합니다 (아스키 문자열을 그대로 사용). IV="0123456789abcdef"  UserKey="0123456789abcdef" # IV와 UserKey를 16...