Go to file
Gerardo Exequiel Pozzi db1dde541c Fix how mkarchiso makes usb image
The current implementation in how partition is created for ext2 img
it looks a bit bad.

This patch makes the partition in more standarized way, respecting
cylinder alignement:
* The size of resulting image will be in cylinder multiple ~8MB.
* Use fdisk instead of sfdisk (sfdisk write some bad information)
* Make the result image in one pass, instead of concatenating.

Also the advantage is that with this can add another partitions
without any issues in the usb-flash-drive with this .img.

For example of current situation:

qemu-system-x86_64 -hda archlinux-avr.toolchain.img -serial stdio
---------------------------------------------------------------------
[root@avr ~]# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 223 MB, 223974400 bytes
59 heads, 41 sectors/track, 180 cylinders
Units = cylinders of 2419 * 512 = 1238528 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         181      218693+  83  Linux
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 1, 1) logical=(0, 1, 23)
Partition 1 has different physical/logical endings:
     phys=(27, 58, 41) logical=(180, 49, 21)

Command (m for help): v
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 1, 1) logical=(0, 1, 23)
Partition 1 has different physical/logical endings:
     phys=(27, 58, 41) logical=(180, 49, 21)
Partition 1: previous sectors 437449 disagrees with total 67731
62 unallocated 512-byte sectors

Command (m for help):
---------------------------------------------------------------------

qemu-system-x86_64 -hda archlinux-avr.toolchain-fix.img -serial stdio
---------------------------------------------------------------------
[root@avr ~]# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 230 MB, 230307840 bytes
255 heads, 63 sectors/track, 28 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x5c94ca4f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          28      224878+  83  Linux

Command (m for help): v
62 unallocated 512-byte sectors
---------------------------------------------------------------------

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
2009-10-21 00:46:39 -03:00
archiso Fix how mkarchiso makes usb image 2009-10-21 00:46:39 -03:00
configs Add aufs2 package to list of packages to install. 2009-10-20 01:05:42 -03:00
README Add aufs2 package to list of packages to install. 2009-10-20 01:05:42 -03:00
TODO Updated deps, Makefile, TODO 2009-06-08 14:32:06 -07:00

Archiso For Dummies Like Me and You
-------------------------------------


- What the hell is Archiso?

Archiso is a small set of bash scripts that is capable of building fully
functional Arch Linux based live CDs. It is a very generic tool, so it
could potentially be used to generate anything from rescue systems,
to install disks, to special interest live CD systems, and who knows what
else. Simply put, if it involves Arch on a shiny coaster, it can do it.


- Alright, so how does one install it?

First off, Archiso has some dependencies:
    - mkinitcpio
    - cdrkit
    - squashfs-tools
	- aufs2
    - aufs2-util
    - mkarchroot from the devtools package
    - pwgen

Archiso itself can be installed with the handy dandy included Makefile,
and the incantation 'make install'.


- Great, so how do you use this thing?

The heart and soul of Archiso is mkarchiso. All of its options are
documented in its usage output, so we won't go into detail here.
Instead, let's go over the general process.

The first thing you should probably do is create a directory to work
in, and cd to it. This'll help keep things organized. Next, you'll want
to create a mkinitcpio config file that suits your needs. Typically this
means modifying whatever hooks you want. A typical set of hooks for
archiso looks something like this:

HOOKS="base udev boot-cd archiso ide scsi sata usb fw filesystems"

If you're creating an image for a bootable usb device, you'll want to
use boot-usb instead of boot-cd. It's probably worth mentioning that
hardware autodetection and things of that nature do not belong here.
Only what's necessary to get the system on its feet, and out of the
initcpio really belong here, fancier stuff can be done on the booted
system anyway.

You'll also want to create a list of packages you want installed on your
live CD system. A file full of package names, one-per-line, is the format
for this. Typically you'll want BASE and a kernel as a bare minimum, but
you're free to install whatever else you want. This is *great* for
special interest live CDs, just specify packages you want and gogogo.

The last item of importance is what are called addons. Basically this
means any other crap you might want to include on your live CD, including
binary package repos, special configurations, random files, we don't
know, be creative. mkarchiso expects them all to be put in a single
directory, with an fstab-like config file. Currently two types of addons
are supported, squashfs images that get layered onto the root union, and
plain directories which can be bind mounted anywhere under the root.

If you want to add a squashfs union layer:
- Set up whatever you want to include in a separate directory someplace,
  as if that directory was / . Then run mksquahfs on it, and copy the
  created image to your addons directory.
- Add an entry to your addons config file (which must be named 'config',
  by the way). Typical squashfs entries look like this:
  live_overlay.sqfs       /                   squashfs
  Where the first component is the path to the image relative to your
  addons directory, the second is the mountpoint (irrelevant for
  squashfs, they will all get layered at /) and of course the third
  component is the type.
- Be aware that the order of entries on the config matters! Entries will
  be layered on top of one another, later entries are mounted _UNDER_
  earlier entries (an unfortunate counterintuitive result of the way we
  have to mount the unions).

If you want to add plain directories to bind mount:
- Set up your directory somewhere, and copy it to your addon directory.
- Add an entry to your addons config file, example entry:
  core                    /packages           bind
  where the first component is the path to the directory relative to
  your addons directory, the second component is where you'd like it
  bind-mounted relative to the live CD's root filesystem, and the last
  component is the type.

vim: textwidth=72