안드로이드 5.0 Lolipop에서 SELinux enforce mode가 적용된다.

http://www.android.com/versions/lollipop-5-0/


SE for Android 관련 정보는 The SELinux Notebook 최신판 (4th edition)에 업데이트 되어 있다.

http://freecomputerbooks.com/The-SELinux-Notebook-The-Foundations.html


참고로, 현재 http://selinuxproject.org/page/NewUsers 에는 3rd edition이 링크되어 있다.

(2014/12/4일자로 4th Edition으로 업데이트됨)


The_SELinux_Notebook-4th_Edition.pdf


notebook-source-4.0.tar.gz


grub의 graphical terminal이 tty와 충돌이 발생하는 경우 login화면이 보이지 않는다.

프로세스 상으로는 정상동작하고, id/passwd 입력을 하면, bash 또한 fork된 것을 확인할 수도 있다.

$ ps -ax | grep tty

 1374 tty4     Ss+    0:00 /sbin/getty -8 38400 tty4

 1380 tty5     Ss+    0:00 /sbin/getty -8 38400 tty5

 1388 tty2     Ss+    0:00 /sbin/getty -8 38400 tty2

 1389 tty3     Ss+    0:00 /sbin/getty -8 38400 tty3

 1391 tty6     Ss+    0:00 /sbin/getty -8 38400 tty6

 1492 tty7     Ss+    0:09 /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none

 2166 tty1     Ss+    0:00 /sbin/getty -8 38400 tty1


이때 /etc/default/grub 파일에 GRUB_TERMINAL 주석을 지우고,  update-grub를 하면 이 문제를 해결할 수 있다.

# Uncomment to disable graphical terminal (grub-pc only)

GRUB_TERMINAL=console


출처 :

http://askubuntu.com/questions/162535/why-does-switching-to-the-tty-give-me-a-blank-screen


Quick start guide 링크 :

http://www.chromium.org/chromium-os/quick-start-guide


Full 버전 링크 :

http://www.chromium.org/chromium-os/developer-guide#TOC-Building-Chromium-OS


x86 경우, Legacy BIOS 와 EFI BIOS에 따라 부팅 스텝이 다르다.

http://www.chromium.org/chromium-os/chromiumos-design-docs/disk-format

EFI BIOS : /boot/efi/boot

Legacy BIOS : /boot/syslinux


우선 ChromiumOS를 구동하려는 PC는 Intel Q6600, ATI graphic card, Legacy BIOS Mainboard, HDD가 2개 연결되어 있다.

HDD 2개가 연결되어 있어, USB Memory stick으로 구동하기 위해 추가 작업이 필요한데...


chromiumOS 소스는 stabilize.5978.51.B 테그로 받고 빌드를 진행했다.

$ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git -b stabilize.5978.51.B

$ cros_sdk

$ export BOARD=amd64-generic

$ ./setup_board --board=${BOARD}

$ ./build_packages --board=${BOARD} 

$ ./build_image --board=${BOARD} --noenable_rootfs_verification dev

$ cros flash usb:// ${BOARD}/latest


첫 빌드한 이미지를 USB disk에 넣고 부팅한 결과는 mount_root에서 panic. (어느 파티션을 root라고 설정 했길래...-_-;)


기왕 시작한거 디버깅 로그도 봐야 하니, 시리얼 케이블(널모뎀 케이블)을 구매. 메인보드에서 잠자고 있는 시리얼 포트를 깨웠다.

(메인보드 백패널로 시리얼 포트가 더이상 나와 있지 않으니, 이제 슬롯쪽으로 포트를 뽑아야 쓸수 있다.)


Default root partition이 /dev/sdb3 으로 되어 있는 것을 확인

(일반적으로 HDD 1개만 연결하였다면, USB disk를 sdb로 인식해서 mount에 문제없었을 것이다.)


$ ./build_image --board=${BOARD} --noenable_rootfs_verification dev --boot_args="noinitrd console=ttyS0,115200n8" --usb_disk="/dev/sdc3" --enable_serial="console=ttyS0,115200n8"

이제 문제 없겠지 생각했지만 여전히 panic.

/boot/syslinux/usb.A.cfg 에는 root=/dev/sdb3로 남아있다. OTL

label chromeos-usb.A

  menu label chromeos-usb.A

  kernel vmlinuz.A

  append console=tty2 init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console=ttyS0,115200n8 root=/dev/sdb3 i915.modeset=1 cros_legacy cros_debug


결국, 아래 파일에 --usb_disk 옵션을 넘겨주는 부분이 빠진것을 추가하고 난 후에 syslinux 설정이 root=/dev/sdc3로  바뀌었다.

=> mount_root 문제는 해결.

~/trunk/src/scripts/build_library/base_image_util.sh

  ${BUILD_LIBRARY_DIR}/create_legacy_bootloader_templates.sh \

    --arch=${ARCH} \

    --to="${root_fs_dir}"/boot \

    --boot_args="${FLAGS_boot_args}" \

    --usb_disk="${FLAGS_usb_disk}" \

      ${enable_rootfs_verification} \

      ${enable_bootcache}


Developer Console login까지 진입하였다.


ATI graphic card driver 부분에 대한 추가작업이 필요한지, X server는 에러를 토해내고 동작하지 않는다.

퇴근 후, 집에서 짜투리 시간이 있을때 작업을 한거라, 여기까지 진행하는데 거의 한달이 걸렸다. OTL

ChromiumOS 로그인 창을 볼수 있을까?


http://www.theverge.com/2014/9/24/6840697/worse-than-heartbleed-todays-bash-bug-could-be-breaking-security-for

Bash 에 command Injection 보안 이슈가 있다고 공개후 보안 업데이트가 릴리즈되었다.


command injection 보안 이슈에 대한 설명 및 예제 명령인데, 보안 업데이트 후에는 아래 사진처럼 보안 문제가 해결되었다.

https://access.redhat.com/articles/1200223




아래는 유사한 code injection 보안이슈 사례들이다.

http://cwe.mitre.org/data/definitions/78.html

만약 ";rm -rf /" 명령 같은게 injection 된다면... 섬찟 -_-;;;;


2014/09/26 현재까지 Bash shell 추가 패치가 계속 업데이트 되고 있다.

CVE-2014-7169
CVE-2014-7186
CVE-2014-7187


Ubuntu 12.04 버전에서 Nvidia GTX750 등의 최신 그래픽 카드를 드라이버가 지원하지 못하는 문제로 

아래 화면과 같이 IRQ storm이 발생하면서 부팅이 안되는 문제가 있다.


http://forum.siduction.org/index.php?topic=4496.0

위 링크의 해결책은 "nouveau.modeset=0 xmodule=vesa"를 커널 부트 커멘드로 추가하면 부팅 가능.

이후 최신 nvidia driver를 설치하면 된다.


Chrome OS의 빌드는 Gentoo Linux의 패키지 관리 시스템 Portage를 확장하여 사용한다.

관련 명령어 요약 정리 링크 :


wiki 링크 :

http://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet


github 링크 :

https://github.com/jonasstein/gentoo-cheat


gcheat.pdf


dd 명령은 진행 상태를 확인하기 어렵다. 이 경우 pv 명령이 진행 상황을 확인 할수 있는 기능을 제공한다.


install :

sudo apt-get install pv


usage :

dd if=/dev/sdX bs=1M | pv | dd of=/dev/sdY


output:

3.95GB 0:05:02 [4.66MB/s] [ <=>                                                ]


1. Booting into fastboot mode

- Press and hold Volume Down, then press and hold Power


2. Command unlock via fastboot

$fastboot oem unlock

- choose "Yes"


3. Unlock is done.


Link : http://source.android.com/source/building-devices.html


+ Recent posts