MIC Image Creator使用說明

1 概述

Mic工具是用來給tizen製作鏡像文件的工具。通過此工具,我們可以製作各位類型的鏡像文件,如live CD鏡像,live USB鏡像,針對KVM的raw鏡像,針對IVI平臺的loop鏡像,及chroot的fs鏡像。也可以通過MIC的增加指令chroot指令,chroot into到鏡像文件中。

除此之外,MIC工具還可以將上述各種鏡像文件之間進行格式轉換, 這是非常有用的工具。


2 安裝MIC工具

使用如下指令即可安裝MIC工具:

$ sudo apt-get install mic

查看MIC工具的當前版本:

$ mic --version
mic 0.19.1 (Ubuntu 12.04 precise)

3 MIC工具的使用方法

MIC工具主要提供三種功能:

  • 創建不同格式的鏡像文件
  • 將鏡像文件從一種格式轉換到另一種格式
  • chroot into 到一個鏡像文件中

3.1 獲取MIC的幫助信息

你可以使用$ mic --help指令或$ mic <subcmd> --help指令來獲取MIC工具的幫助信息。

以下是幾種獲取MIC幫助信息的方法:

  • $ man mic
  • mic --help
  • mic create --help
  • mic help create
  • mic create loop --help
  • mic create help loop

3.2 MIC支持的幾種鏡像文件格式

3.2.1 Loop

1> 第一個Loop對應着的一個分區

2> 一個Loop鏡像文件內包含着一個文件系統.

3> 在一個kickstartfile文件中可描述多個分區,針對這種情況,mic工具將會生成多個Loop鏡像文件。

4> 多個Loop鏡像文件可以打包成一個archive文件。


3.2.2 Raw

1> Raw有點像硬盤數據。

2> 包含分區表和所有分區。

3> 可以直接啓動此類型鏡像。


3.2.3 Livecd/liveusb

主要用於ia32,可以將其燒錄到CD或U盤


3.2.4 fs

1> fs即文件系統。

2> MIC工具可以安裝所有的tizen文件到一指定目錄,此目錄可直接用作chroot目錄。


4 製作鏡像文件

4.1 基本使用

4.1.1 創建鏡像文件的指令

如下:

mic create(cr) SUBCOMMAND <ksfile> [OPTION]

4.1.2 指定鏡像文件格式類型子命令

 help(?)            give detailed help on a specific sub-command
 fs                 create fs image, which is also a chroot directory
 livecd             create live CD image, used for CD booting
 liveusb            create live USB image, used for USB booting
 loop               create loop image, including multi-partitions
 raw                create raw image, containing multi-partitions

4.1.3 ksfile

kickstart爲一簡單的文本文件,它包含鏡像分區, 設置, Bootloader, 安裝包等,每類型都有對應的關鍵字。

tizen在發佈時,通常會同時發佈其對應的ksfile,如:http://download.tizen.org/releases/daily/2.0alpha/ivi-wayland/tizen-2.0alpha_20130522.2/images/ivi-wayland-release/ivi-wayland-release.ks

4.1.4 mic選項

   -h, --help          Show this help message and exit
   --logfile=LOGFILE   Path of logfile
   -c CONFIG, --config=CONFIG
                       Specify config file for MIC
   -k CACHEDIR, --cachedir=CACHEDIR
                       Cache directory to store downloaded files
   -o OUTDIR, --outdir=OUTDIR
                       Output directory
   -A ARCH, --arch=ARCH
                       Specify repo architecture
   --release=RID       Generate a release of RID with all necessary files.
                       When @BUILD_ID@ is contained in kickstart file, it
                       will be replaced by RID.
   --record-pkgs=RECORD_PKGS
                       Record the info of installed packages. Multiple values
                       can be specified which joined by ",", valid values:
                       "name", "content", "license", "vcs".
   --pkgmgr=PKGMGR     Specify backend package manager
   --local-pkgs-path=LOCAL_PKGS_PATH
                       Path for local pkgs(rpms) to be installed
   --pack-to=PACK_TO   Pack the images together into the specified achive,
                       extension supported: .zip, .tar, .tar.gz, .tar.bz2,
                       etc. by default, .tar will be used
   --copy-kernel       Copy kernel files from image /boot directory to the
                       image output directory.
   --install-pkgs=INSTALL_PKGS
                        Specify what type of packages to be installed, valid:
                        source, debuginfo, debugsource

4.1.5 其它選項

   --runtime=RUNTIME_MODE
                       Sets runtime mode, the default is bootstrap mode, valid
                       values: "native", "bootstrap". "native" means mic uses
                       localhost environment to create image, while "bootstrap"
                       means mic uses one tizen chroot environment to create image.
    --compress-image=COMPRESS_IMAGE (for loop & raw)
                       Sets the disk image compression. Note: The available
                       values might depend on the used filesystem type.
   --compress-disk-image=COMPRESS_IMAGE
                       Same with --compress-image
   --shrink (for loop)
                       Whether to shrink loop images to minimal size
   --generate-bmap (for raw)
                       Generate the block map file
   --fstab-entry=FSTAB_ENTRY (for raw)
                        Set fstab entry, 'name' means using device names,
                        'uuid' means using filesystem uuid

4.1.6 示例

創建一個loop鏡像文件:

$ mic cr loop tizen.ks

4.2 如何創建一個鏡像文件

4.2.1 準備kickstart文件

在使用MIC工具創建鏡像鏡像文件之前,你需要準備一個kickstart文件,這裏是一個簡單的kickstart文件內容:

# filename: tizen-min.ks
lang en_US.UTF-8
keyboard us
timezone --utc America/Los_Angeles

part / --size 1824 --ondisk sda --fstype=ext3

rootpw tizen
bootloader  --timeout=0  --append="rootdelay=5"

desktop --autologinuser=tizen
user --name tizen  --groups audio,video --password 'tizen'

repo --name=Tizen-base --baseurl=http://download.tizen.org/snapshots/trunk/common/latest/repos/base/ia32/packages/
repo --name=Tizen-main --baseurl=http://download.tizen.org/snapshots/trunk/common/latest/repos/main/ia32/packages/

%packages --ignoremissing
@tizen-bootstrap
%end

%post
rm -rf /var/lib/rpm/__db*
rpm --rebuilddb
%end

%post --nochroot
%end

上述的ks文件可以用來創建一個最小的tizen鏡像,至於其它資料庫,你可以使用網上精確的資料庫地址來替換它。

例如:

repo --name=REPO-NAME --baseurl=https://username:[email protected]/ia32/packages/ --save  --ssl_verify=no

4.2.2 創建Loop鏡像

在終端運行如下指令可創建一個loop鏡像:

$ sudo mic create loop tizen-min.ks

4.3 使用本地RPM包創建鏡像

也許你會問:如何安裝我自己的RPM包到鏡像中?以此方便我測試這些包是否正常。

在這種情況下,你可以使用本地路徑。例如,你如你的hello.rpm包在本地目錄localpath下,那麼運行如下指令:

$ sudo mic create loop test.ks --local-pkgs-path=localpath

從輸出信息中可以看到,MIC工具會告訴你hello.rpm已經被標誌爲已安裝,它即將安裝到鏡像中。你必須得確保你的RPM包沒在包ks文件中包含或是rpm包的版本不低於repo相相對應包的版本。

4.4 指定創建Achive的格式

MIC工具可以指定即將創建的鏡像文件的achive格式,如 .zip, .tar, .tar.gz, .tar.bz2等,默認情況下爲.tar格式。

$ sudo mic create loop test.ks --pack-to=@[email protected]

4.5 chroot

此指令用來chroot into到鏡像文件中,在Linux系統下,它是一個非常有用的加強指令。

4.5.1 使用

mic chroot(ch) <imgfile>

4.5.2 選項

   -h, --help          Show this help message and exit
   -s SAVETO, --saveto=SAVETO
                       Save the unpacked image to a specified dir

4.5.3 示例

   mic ch loop.img
   mic ch tizen.iso
   mic ch -s tizenfs tizen.usbimg

4.6 轉換

此指令用來將鏡像文件從一種格式轉換成另一個格式.

4.6.1 使用

  mic convert(cv) <imagefile> <destformat>

4.6.2 選項

   -h, --help   Show this help message and exit
   -S, --shell  Launch shell before packaging the converted image

4.6.3 示例

   mic cv tizen.iso liveusb
   mic cv tizen.usbimg livecd
   mic cv --shell tizen.iso liveusb

5 如何自定義鏡像文件

這一章將介紹如何通過修改ks文件來訂製你自己的鏡像文件。你可下載kickstart文件,然後修改它,如;http://download.tizen.org/releases/daily/trunk/ivi/latest/images/ivi-min-pc/ivi-min-pc-tizen_20120926.2.ks

5.1 指定資料庫

你可以指定哪個資料庫用來創建鏡像文件,可以包含本地的資料庫:

例如:http://download.tizen.org/releases/daily/trunk/ivi/latest/images/ivi-min-pc/ivi-min-pc-tizen_20120926.2.ks

repo --name=Tizen-main --baseurl=https://download.tizen.org/snapshots/trunk/common/@BUILD_ID@/repos/main/armv7l/packages/ --save  --ssl_verify=no

repo --name=Tizen-base --baseurl=https://download.tizen.org/snapshots/trunk/common/@BUILD_ID@/repos/base/armv7l/packages/ --save  --ssl_verify=no

repo --name=mylocal--baseurl=/loca/repo/path/

5.2 指定訪問repo的用戶名和密碼

如果遠程的repo資料庫需要用戶名和密碼,那麼你得在kickstart文件中指明你的用戶名和密碼,如:

repo --name=REPO-NAME --baseurl=https://username:[email protected]/ia32/packages/ --save  --ssl_verify=no

5.3 如何增加/移除包

你可以在ks文件中的'%packages'處指明你要安裝哪些包,你可以單個指出它們,也可以以組的方式指出。

關於組的定義你可以參考下載服務器中的repodata/*comps.xml 或 repodata/pattern.xml 文件,如:

http://download.tizen.org/snapshots/trunk/common/latest/repos/base/ia32/packages/repodata/

%packages必須以%end結束,也可以同時指出多個%packages,此外,單個包可能以globs方式指出,如:

 %packages
 ...
 @Tizen Core            # add a group named Tizen Core, and all the packages in this group would be added
 e17-*                  # add all the packages with name starting with "e17-"
 kernel                 # add kernel package
 nss-server.armv7hl     # add nss-server with arch armv7hl
 -passwd                # remove the package passwd
 ...
 %end

5.4 製作完鏡像後自動運行腳本

在創建完鏡像文件後,你也可以指出自動運行腳本,如:

%post
rpm -rebuilddb
%end

更多有關kickstart文件的信息請參考:http://fedoraproject.org/wiki/Anaconda/Kickstart





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章