4 -------------------------------------
5 image creator for Linux distributions
6 -------------------------------------
12 The tool `mic` is used to create and manipulate images for Linux distributions.
13 It's composed of three subcommand: create, convert, chroot. Subcommand `create`
14 is used to create images with different types, including fs image, loop image,
15 live CD image, live USB image, raw image, etc. For each image type, there is a
16 corresponding subcommand. (Details in the following sections)
18 It supports native running in many mainstream Linux distributions, including:
20 * Fedora (14 and above)
21 * openSUSE (11.3 and above)
22 * Ubuntu (10.04 and above)
23 * Debian (5.0 and above)
31 So far we support `mic` binary rpms/debs for many popular Linux distributions,
32 please see the following list. And you can get the corresponding repository on
34 `<http://download.meego.com/live/devel:/tools:/building>`_
36 If there is no the distribution you want in the list, please install it from
56 1. Add devel:tools:building repo:
59 $ sudo cat <<REPO > /etc/yum.repos.d/devel-tools-building.repo
60 > [devel-tools-building]
61 > name=Tools for Fedora
62 > baseurl=http://download.meego.com/live/devel:/tools:/building/Fedora_<VERSION>
67 Also you can take the repo file on devel:tools:building as example. For example,
69 `<http://download.meego.com/live/devel:/tools:/building/Fedora_13/devel:tools:building.repo>`_.
79 $ sudo yum install mic
83 1. Add devel:tools:building repo:
86 $ sudo zypper addrepo http:/download.meego.com/live/devel:/tools:/building/openSUSE_<VERSION>/ devel-tools-building
96 $ sudo zypper update libzypp
101 $ sudo zypper install mic
103 Ubuntu/Debian Installation
104 ~~~~~~~~~~~~~~~~~~~~~~~~~~
105 1. Append repo source:
108 $ sudo cat <<REPO >> /etc/apt-sources.list
109 > deb http://download.meego.com/live/devel:/tools:/building/<Ubuntu/Debian>_<VERSION>/ /
112 *Tips*: for Ubuntu 10.10, you need to use xUbuntu_10.10 to replace
113 <Ubuntu/Debian>_<VERSIN>.
118 $ sudo apt-get update
123 $ sudo apt-get install mic
127 First, get the source of mic (`<TBD>`_). Then unpack the tar ball, and use make
128 to process the installation.
133 $ tar xzvf mic.tar.gz
149 The configure file for mic can be provided as `/etc/mic/mic.conf`, where you
150 can specify the global settings.
151 The blow is the content of one sample file: ::
157 ; settings for create subcommand
159 cachedir= /var/tmp/mic/cache
163 ; proxy = http://proxy.yourcompany.com:8080/
164 ; no_proxy = localhost,127.0.0.0/8,.yourcompany.com
168 ; settings for convert subcommand
171 ; settings for chroot subcommand
173 In this configuration file, there are four sections: [common] is for general
174 setting, and [create] [convert] [chroot] sections are for the options of
175 corresponding mic subcommands: create, convert, and chroot.
177 In the [create] section, the following values can be specified:
180 Temporary directory used in the image creation
183 Directory to store cached repos and downloaded rpm files
189 Default backend package manager: yum or zypp
193 It's recommended to use `--help` or `help <subcmd>` to get the help message, for
194 the tool is more or less self-documented.
198 Subcommand *create* is used for creating images. To create an image, you should
199 give the sub-sub commands which presents the image type you want, and also you
200 should provide an argument which presents the kickstart file for using, such
203 $ sudo mic create fs test.ks
205 The supported image types can be listed using `mic create --help` ::
208 livecd create livecd image
209 liveusb create liveusb image
210 loop create loop image
213 For each image type, you can get their own options by `--help` option, like
214 `mic cr fs --help`. Meanwhile, there are some common options that can be used
215 by all image types, as the following ::
217 -h, --help show this help message and exit
218 --logfile=LOGFILE Path of logfile
219 -c CONFIG, --config=CONFIG
220 Specify config file for mic
221 -k CACHEDIR, --cachedir=CACHEDIR
222 Cache directory to store the downloaded
223 -o OUTDIR, --outdir=OUTDIR
226 Specify repo architecture
227 --release=RID Generate a release of RID with all necessary
228 files,when @BUILD_ID@ is contained in kickstart file,
229 it will be replaced by RID
230 --record-pkgs=RECORD_PKGS
231 Record the info of installed packages, multiple values
232 can be specified which joined by ",", valid values:
233 "name", "content", "license"
234 --pkgmgr=PKGMGR Specify backend package manager
235 --local-pkgs-path=LOCAL_PKGS_PATH
236 Path for local pkgs(rpms) to be installed
238 *Tips*: the common options can be normally put before sub-sub command, but also
239 can be after them, such as: ::
241 $ sudo mic cr --outdir output fs test.ks
245 $ sudo mic cr fs test.ks --outdir output
247 *Tips*: if you failed to create armv7* image, the reason may be: qemu/qemu-arm
248 on your host is lower than required, please upgrade qemu/qemu-arm higher than
253 Subcommand *chroot* is used to chroot an image file. Given an image file, you
254 can use `mic chroot` to chroot inside the image, and then you can do some
255 modification to the image. After you logout, the image file will keep your
256 changes. It's a convenient way to hack your image file.
260 $ sudo mic chroot test.img
262 Running 'mic convert'
263 ---------------------
264 Subcommand *convert* is used for converting an image to another one with
265 different image type. Using `convert`, you can get your needed image type
266 comfortably. So far converting livecd to liveusb and liveusb to livecd is
271 $ sudo mic convert test.iso liveusb
275 When you encounter some errors, and you want to know more about it, please use
276 debug/verbose output to get more details in the process by adding `-d/-v`. And
277 it's recommended to add `-d/--debug` or `-v/--verbose` like: ::
279 $ sudo mic -d cr fs test.ks
286 proxy setting in mic.conf is not enabled, but you can set proxy in repo section
287 of ks file, example as follows: ::
289 repo --name=1.2-oss --baseurl=http://repo.meego.com/MeeGo/releases/1.2.0/repos/oss/ia32/packages/ --proxy=http://host:port --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego
291 Multiple running instances support
292 ----------------------------------
293 mic support running multi-instance, but cache dir can't be shared between
294 instances, so you should specify different cachedir for different instance
295 using `--cachedir`. Also outdir should be specified to a different directory
296 for each instance using `--outdir`, example as follows: ::
298 mic cr fs netbook1.ks --cachedir=/var/tmp/cache/mic1 --outdir=out1
299 mic cr fs netbook2.ks --cachedir=/var/tmp/cache/mic2 --outdir=out2
304 Bug of latest "syslinux" package
305 --------------------------------
306 In some new Linux distributions, the "syslinux" package in their official
307 software repositories is the version 4.04. It will cause segment fault for
308 a fatal bug, and mic will failed with syslinux installation errors.
310 The solution is to install the patched "syslinux" package in MeeGo or Tizen's
311 tools repos, until the official released one being fixed.