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 指定資料庫
你可以指定哪個資料庫用來創建鏡像文件,可以包含本地的資料庫:
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