카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2019/01/02

flatpak 패키지 관리자 Dreams 설치

패키지 관리 유틸 설치
sudo apt-get install flatpak

저장소 등록
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

플러그인 설치(ui 환경)
sudo apt install gnome-software-plugin-flatpak

패키지 다운로드 문제 발생 사용자 저장소 등록.
flatpak install --user https://flathub.org/repo/appstream/org.speed_dreams.SpeedDreams.flatpakref

사용자 권한으로 설치
flatpak --user update org.speed_dreams.SpeedDreams

패키지 검색
flatpak remote-ls --app | grep SpeedDreams

사용자 저장소 삭제
flatpak remote-delete flathub

설치 
flatpak install flathub org.speed_dreams.SpeedDreams

현재 접근 할 수 없음.... 
Server returned status 503: Service Unavailable
다시 실행시 다운로드 받은 파일이 줄어 든 걸 볼 수 있음. 다운로드 받을 때 까지 계속 실행. 서버가 불안 한 것으로 보인.

실행
flatpak run org.speed_dreams.SpeedDreams

안드로이드 8.1, guest on Ubuntu 17.10 호스트 환경 GDB 에물레이터

안드로이드 8.1, guest on Ubuntu 17.10 호스트 환경

소스코드 다운로드 및 안드로이드 환경 구성
curl https://storage.googleapis.com/git-repo-downloads/repo >repo
chmod a+x repo
vi repo
#!/usr/bin/env python2.7
:wq

정보 추가 선택 사항 임.
git config --global user.email "linuxleejang@gmail.com"
git config --global user.name "JangHo"

하디드스크 용량 100G 정도 여유 공간 확보.
./repo init -b android-8.1.0_r1 --depth 1 -u https://android.googlesource.com/platform/manifest
./repo sync -c  -j $(($(nproc) - 2)) --no-tags --no-clone-bundle

설치
. build/envsetup.sh
lunch aosp_x86_64-eng
USE_CCACHE=1 CCACHE_DIR=ccache make -j $(($(nproc) - 2))

에물레이터 실행
emulator -show-kernel

1분에서 2분 정도 기달림.

안드로이드가 다 부팅 된후 터미널 콘솔에다가 엔터키를 입력 하면 쉘 모드로 진입

참고
./repo init -b 태그 지정. master -release는 버전 변경이 항상 있음.

태크 목록 사이트
https://android.googlesource.com/platform/manifest

두 가지 트리
개발 코드 삭제. Google 및 OEM 개발자의 공개된 마스트로 문제가 해결된 버전.
마스터 빌드 오류는 더이상 지원이 없음. 공개된 버전은 문제가 없으므로, 오류 관련은 빌드 사용자가 기존 해결 내용을 참고 해야 함.

repo sync 호환성 보장 없음.

--depth 1 옵션과 sync -c --no-tags --no-clone-bundle 동기화 처리 옵션은 복제를 빠르게 하지만, 복제의 성공률이 문제가 있을 수 있음.

저장소 동기화 시간 문제
https://stackoverflow.com/questions/28379870/aosp-repo-sync-takes-too-long

호스트 환경 옵션
lunch aosp_x86_64-eng 호스트 환경이 X86
lunch aosp_arm-eng 암 버전 구축

안드로이 에물레이터 응답 대기 및 실패.
https://stackoverflow.com/questions/43779596/process-system-isnt-responding-in-android-emulator
메모리 확장 및 해상도 낮춰서 해결
config
ORIGINAL: disk.dataPartition.size=512M
MODIFIED: disk.dataPartition.size=512MB
ORIGINAL: hw.ramSize=1024
MODIFIED: hw.ramSize=1024MB

-show-kernel 옵션은 터미널과 연결해, 부팅 메시지를 확인할 수 있다. 이 메세지로 디버깅 정보를 확인 할 수 있음.

type emulato emulator 별칭 설정
명시 적으로 ROM을 선택하기 위해 몇 가지 인수 전달하는 방법을 알고 있어야 함.
emulator -help
emulator -help-build-images
emulator -help-disk-images

Android 에뮬레이터에서 맞춤 ROM 실행
https://stackoverflow.com/questions/25985384/run-custom-rom-on-android-emulator

GDB 디버깅 방법
먼저 GDB 명령을 실행 ./rungdb 하여 전체 명령 활성화 : 명령을 실행 하기 전에 명령을 표준 출력으로 출력합니다

findAOSP 빌드 디렉토리 내부에서 명령에 필요한 파일확인.
emulator명령 QEMU에 매개 변수를 전달하는 플래그가 있음.

linux-kernel-module-cheat 컴파일

apt update

소스 다운로드
git clone https://github.com/cirosantilli/linux-kernel-module-cheat
cd linux-kernel-module-cheat/

./configure -t
sudo apt-get install gcc-6 g++-6

우분투 툴체인 저정소 추가
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
apt update

apt-get install gcc-6 g++-6
./configure

vi ./build
#!/usr/bin/env bash ---> 버전 변경
#!/bin/bash -x

./build

서브 모듈 다운로드
git submodule update --depth 1 --jobs 4 --init

로그 확인
git log --oneline

커널 개발을위한 qemu 간편 설정

루트 파일 시스템 생성
IMG=test_stretch.img
DIR=stretch
qemu-img create $IMG 1g
sudo mkfs.ext4 $IMG
mkdir -p $DIR
sudo mount -o loop $IMG $DIR
sudo debootstrap --arch amd64 stretch $DIR
sudo umount $DIR
rmdir $DIR

현재 커널 테스트
$ qemu-system-x86_64 -kernel /boot/vmlinuz-`uname -r` \
-hda qemu-image.img -append "console=ttyS0 root=/dev/sda"

커널 컴파일 테스트
$ git clone --depth=1 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux
$ make x86_64_defconfig
$ make kvmconfig
$ make -j 4

$ qemu-system-x86_64 -kernel linux/arch/x86/boot/bzImage \
-hda qemu-image.img -append "console=ttyS0 root=/dev/sda"

추가 옵션:
--enable-kvm(KVM으로 속도 향상
--nographic(GUI 생략)

참고 : https://nautiluslee.blogspot.com/search?q=%EC%BB%A4%EB%84%90+%EA%B0%9C%EB%B0%9C+qemu+kvm+config+%EC%84%A4%EC%A0%95

virtme QEMU 커널 개발 도구

virtme : 커널 개발의 필수 도구

프로젝트 사이트 : https://github.com/amluto/virtme/
사용방법 : https://github.com/amluto/virtme/blob/master/README.md

리눅스 커널은 QEMU를 통해 테스트 하는게 일반적이다. kernel/core 코드, 가상 드라이버 병합되므로서,  응용프로그램을 사용해 테스트하는데 유용하다.

"Virtme은 가상화 Linux 커널을 실행하는 간단한 도구이다. 전체 루트파일 시스템 이미지 대신 단순한 rootfs를 사용. Virtme의 특징은  작고 사용하기 쉬우며 커널 변경 사항을 간단하게 테스트 할 수 있다."

virtme 설치하기
git clone https://github.com/ezequielgarcia/virtme.git
cd virtme
sudo ./setup.py install

메세지 확인
Installed /usr/local/lib/python3.6/dist-packages/virtme-0.0.3-py3.6.egg

커널 소스 다운로드
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

virtme 설정
커널 설정 생성
cd linux
virtme-configkernel --defconfig

#
# configuration written to .config
#
Configured.  Build with 'make ARCH=x86 -j4'

필요한 드라이버 사용
vim2m 드라이버 활성화는 video4linux memory2memory 가상 드라이버임.
make menuconfig 설정

vi .config
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2=y
CONFIG_V4L2_MEM2MEM_DEV=y
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIM2M=y

커널 빌드
make -j4 또는 make ARCH=x86 -j4

virtme 실행
sudo virtme-run --kimg arch/x86_64/boot/bzImage
또는
sudo virtme-run --kdir .

부팅시 스크립트 실행
-script-dir 옵션은 부팅시 스크립트를 실행할 위치를 지정한다.
sudo virtme-run --kdir . --script-dir test-dir/

-script-dir 매개 변수 사용해 vim2m 드라이버를 테스트 할 수 있는 스크립트 작성
vi v4l2-compliance_test.sh

#!/bin/sh
v4l2-compliance -d /dev/video0

모듈 디렉토리 지정하기
-mdir 옵션을 사용해 virtme 모듈을 추가 할 수 있다.

CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=m
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIM2M=m

./tmp 디렉토리 설치 지정
make INSTALL_MOD_PATH=./tmp modules_install
  INSTALL crypto/crypto_engine.ko
  INSTALL drivers/crypto/virtio/virtio_crypto.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-common.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-memops.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-v4l2.ko
  INSTALL drivers/media/common/videobuf2/videobuf2-vmalloc.ko
[..]

모듈 실행
sudo virtme-run --kimg arch/x86_64/boot/bzImage --mdir tmp/lib/modules/4.19.0-rc3
Decompressing Linux... Parsing ELF... Performing relocations... done.
Booting the kernel.
[..]

root@(none):/# modprobe vim2m
[   66.071041] videodev: Linux video capture interface: v2.00
[   66.083405] vim2m vim2m.0: Device registered as /dev/video0