-
Notifications
You must be signed in to change notification settings - Fork 2
1. Install [Making a QEMU disk image bootable with GRUB]
poo1130 edited this page Aug 23, 2015
·
1 revision
-
운영환경 : ubuntu 14.04
-
Ubuntu 설치후 터미널 실행
# sudo apt-get-update
# sudo apt-get-upgrade
- Vim 편집기 / Github : clone를 목적으로 사용
# sudo apt-get-install vim
# sudo apt-get-install git
- 소스 컴파일을 위한 기본 라이브러리 및 툴 설치 및 컴파일러 설치
# sudo apt-get-install autoconf automake libtool flex bison tree
# sudo apt-get-install g++ gcc
-
컴파일리와 링커 최신버전 컴파일 설치를 위한 라이브러리 설치
(기본적으로 위에서 update, upgrade 실시되었다면 최신버전이 이미 설치되어있다고 나옵니다. 만약 없다면 다음과 같은 명령어를 입력하여 설치 하시면 됩니다.)
# sudo apt-get-install patchutils texinfo
- ./usr/bin을 최우선 순위로 PATH 변수 설정(매우중요) g++ / gcc 컴파일 오류시 해결방법
# Export PATH="/usr/bin:$PATH"
-
Install binutils 설치 하기
binutils 다운로드 : http://ftp.gnu.org/gnu/binutils
압축 해제 -> 왼쪽 사이드 매뉴 에서 파일 클릭하고 거기에 압축해제된 파일 집어넣기
터미널 실행
# cd binutils-2.25 디렉토리로 이동
# ./configure --enable-64bit-bfd --disable-shared --disable-nls
# Make configure-host
# Make all
# Sudo make install
- Objconv 설치
# git clone https://github.com/vertis/objconv
# cd objconv
# g++ -o objconv -O2 src/*.cpp (숫자 0 아닙니다 영문 대문자 O입니다 !!)
# sudo cp objconv /usr/bin/objconvtc
- 파티션 툴 설치
# sudo apt-get install kpartx
# sudo apt-get install bxImage
- 사용가능한 파티션들의 장치 매퍼 리스트에 장치를 생성
가상 머신 QEMU 설치
# sudo apt-get install qemu
- Grub install
Clone Grub
# git clone https://github.com/kbu1564/SecurityBootloader.git
Grub 소스 컴파일
# cd SecurityBootloader/grub/
# ./linguas.sh
# ./autogen.sh
# ./configure --prefix=/home/사용자계정이름/g2/usr
# Make
# Make install
- 가상 머신 테스트 하기 위한 가상 이미지 파일 시스템 생성
# cd ~
# qemu-img create -f raw brdisk-img.raw 4G
# sudo mkfs.ext2 brdisk-img.raw
# fdisk brdisk-img.raw
fdisk brdisk-img.raw 셋팅 값 ( 주의 사항 : 천천히 보고 할것)
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xc65f2bd8.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content wont be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): x
Expert command (m for help): c
Number of cylinders (1-1048576, default 261): 406
Expert command (m for help): h
Number of heads (1-256, default 255): 16
Expert command (m for help): s
Number of sectors (1-63, default 63): 63
Expert command (m for help): r
Command (m for help): p
Disk brdisk-img.raw: 2147 MB, 2147483648 bytes
1 heads, 16 sectors/track, 262144 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc65f2bd8
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 2000000
Command (m for help): p
Disk brdisk-img.raw: 2147 MB, 2147483648 bytes
1 heads, 16 sectors/track, 262144 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc65f2bd8
Device Boot Start End Blocks Id System
brdisk-img.raw1 2048 4194303 !@#!!@+ 83 Linux
Command (m for help): w
The partition table has been altered!
Syncing disks.
- 생성한 파티션 실제 폴더에 mount 우선 해당 가상 드라이브 이미지 파일에 대한 장치드라이브 생성
# cd ~
# sudo losetup /dev/loop0 brdisk-img.raw
- 생성된 장치에 대한 boot mount 실행
# cd~
# mkdir boot
# sudo mount /dev/loop0 boot
# sudo ./g2/usr/sbin/grub-install --force --no-floppy --boot-directory=/home/사용자계정명/boot /dev/loop0
# sudo ./g2/usr/sbin/grub-mkconfig ~/boot/grub/grub.cfg
- grub 비디오 부분 값 수정
# cd ~
# sudo vim ~/boot/grub/grub.cfg
수정 내용
set default="0"
set timout="3"
menuentry "Buildroot" {
Insmod gzio
lnsmod part_msdos
lnsmod ext2
}
- Qemu 실행
# cd ~
# qemu-system-i386 brdisk-img.raw -serial stdio