All posts by RSR

커널 모듈만 컴파일 하는 방법

Ways to compile kernel modules

커널 소스 디렉터리에서 아래 커맨드 진행 ( ecryptfs만 컴파일 하는경우)

make oldconfig
cp ../linux-headers-4.0.0-kali1-amd64/Module.symvers ./

make prepare
make modules_prepare
make SUBDIRS=fs/ecryptfs/ modules

또는 모듈디렉터리로 이동 후

make -C /usr/src/[linux-header~] /build M=$(PWD) modules

알면 쉽고 모르면 어렵다…

 

ARM Secure Boot Procedure

용어 정리
TBB – Trusted Board Boot
CoT – Chain of trust
iROM – Internal ROM
BL – Boot Loader
OM – Operation Mode
iSRAM – Internal SRAM

1

리셋
시스템이 리셋되면 iROM부터 PC가 시작된다
iROM에는 BL0을 수행하는 코드가 들어있어 OM Pin으로부터 부팅매체를 찾아 해당 디바이스로부터 BL1을 iSRAM으로  읽어들인다. 읽어들이는 과정에서 Secure Boot가 활성화 되어있으면 BL1의 무결성을 검사하고  BL1으로 제어권을 넘기게 된다.
BL0은 칩 제조사가 생산시점에서 기록하게되며 삼성 휴대폰의 경우 삼성 반도체가 역할을 맡는다(추정)

제어권을 넘겨받은 BL1은 BL2를 로딩하는데 역시 Secure Boot 활성 여부에 따라 무결성을 체크하고 BL2로 제어권을 넘겨준다
BL1은 2차벤더가 기록하게되며 삼성 휴대폰의 경우삼성 모바일 사업부, ODROID의 경우 HARDKERNEL에서 책임을 담당한다(강한 추정)

BL2는 일반적으로 u-boot이나 BLOB, grub 과 같은 널리 알려진 Boot Loader가 사용된다. (주로 u-boot)
ODROID의 경우 BL1에서 BL2의 무결성 검사를 진행하지 않아 사용자가 BL2을 변경할수 있다
삼성의경우 BL2의 무결성 검사에 실패하면 Knox를 trip 시켜 보안서비스 동작을 막는것으로 확인된다.

2Boot Loader를 검증하는데에 RAS 서명이 사용되며 무결성 검사에 실패하면 CPU는 멈추게 된다.

대부분의 경우 BL1이 문제가 되며 (…) 자세하고 정확한 내용은 CPU의 USER Manual 을 참고해야 한다(그런데 구할길이 NDA 밖에 없다…)

참고
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-design.md
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/trusted-board-boot.md
https://github.com/limingth/ARM-Resources/blob/master/tiny210/Datasheet/S5PV210_UM_REV1.1.pdf
http://prog3.com/sbdm/blog/yueqian_scut/article/details/38983607
http://prog3.com/sbdm/blog/yueqian_scut/article/details/39004727
http://eoworld.tistory.com/entry/mango210-%EB%B6%80%ED%8C%85-%EA%B3%BC%EC%A0%95
http://chlrbgh0.tistory.com/entry/2-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%9E%91%EC%9D%80-Bootloader%EB%A7%90%EA%B3%A0-%EA%B5%AC%EC%A1%B0-%ED%8C%8C%EC%95%85%EB%B6%80%ED%84%B0
http://blog.naver.com/dong880510/140162794298

ps. 중국어 배우고싶다
XDA 보니까 이런게 있다 (http://forum.xda-developers.com/showthread.php?t=1233273)

Universal Flash Storage / Embedded MultiMediaCard

Universal Flash Storage
S6, S6 edge가 최초의 UFS2.0 폰임 (근데 iPhone6보다 느림)
http://www.anandtech.com/show/9146/the-samsung-galaxy-s6-and-s6-edge-review/7

UFS 는 USB와 같이 직렬통신으로 고속을 구현함
반면 eMMC는 병렬통신을 사용함으로써 속도향상에 무리가있음
SCSI 아키텍쳐 모델을 사용함, 커맨드 큐잉 가능
읽기쓰기명령이 동시에 가능, emmc에 비해 저전력(피크치는 높으나 빨리 처리하고 Idle 타버림)
아직은 비교적 고가

eMMC 5.0 – 400MB/s
UFS 2.0 – 720MB/s(HS-G2x2LANE) (사타 3.0보다 빠름!)

http://www.slideshare.net/BhaumikBhatt4/universal-flash-storage

 

Embedded MultiMediaCard
그냥 칩형태의 SD카드(MMC)라 생각하면 이해가 빠를거같다
MicroSD나 SecureDigital에 핀만 맞춰주면 리더기로 바로 읽힌다
고가의 eMMC 리더기 보면 저항 몇개랑 캐패시터가 전부이다
CMD, GND, VDD, CLK, DAT0 5가닥만 연결되어도 읽어진다(but 느려)

http://blog.skhynix.com/1312
http://www.androidpolice.com/2015/02/26/samsung-electronics-starts-mass-producing-industrys-first-128gb-universal-flash-storage-almost-certainly-galaxy-s6-bound/
http://www.androidpolice.com/2015/03/05/galaxy-s6-storage-benchmarks-show-it-blowing-all-past-phones-out-of-the-water/

linux 디스크 입출력 속도 확인 캐시 드랍

dd if=something of=somewhere bs=4K/1M/2M/4M count=testsize oflag=dsync

 

  • To free pagecache:
    # echo 1 > /proc/sys/vm/drop_caches
    
  • To free dentries and inodes:
    # echo 2 > /proc/sys/vm/drop_caches
    
  • To free pagecache, dentries and inodes:
    # echo 3 > /proc/sys/vm/drop_caches

     

 

 

http://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system

https://romanrm.net/dd-benchmark

https://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd