[devel] propagator - diet vs glibc

Nick S. Grechukh =?iso-8859-1?q?gns_=CE=C1_altlinux=2Eru?=
Вс Фев 4 12:56:17 MSK 2007


2007/2/2, Mikhail Yakshin <greycat на altlinux.org>:
> Nick S. Grechukh пишет:
> Они примерно так:
> Выборочные + запакованные ~ 2.5 мега
> Выборочные + незапакованные ~ 9-10 мегов
> Все + запакованные ~ 10-11 мегов
> Все + незапакованные ~ 35-50-55 мегов
понятно. mar чем хорош, из него вытягивается без распаковки.

> Отсюда и решать, сколько не жалко требовать с пользователя.
> Кстати, относительно pivot'а в propagator - он делается так:
>
>          /* overmount image under new root if needed */
>          if ( statfs(IMAGE_LOCATION, &sfs) )
>                  fatal_error("statfs "IMAGE_LOCATION);
>          /* if something is mounted under IMAGE_LOCATION ? */
>          if ( sfs.f_type != RAMFS_MAGIC && sfs.f_type != TMPFS_MAGIC ) {
>                  if ( mount(IMAGE_LOCATION, "." IMAGE_LOCATION, NULL,
> MS_MOVE, NULL) )
>                          fatal_error("overmounting image location");
>                  /* test for nested mount: disk or nfs with iso image */
>                  if ( statfs(IMAGE_LOCATION, &sfs) )
>                          fatal_error("nested statfs "IMAGE_LOCATION);
>                  if ( sfs.f_type != RAMFS_MAGIC && sfs.f_type !=
> TMPFS_MAGIC )
>                          if ( mount(IMAGE_LOCATION, "." IMAGE_LOCATION
> "/isolinux", NULL, MS_MOVE, NULL) )
>                                  fatal_error("overmounting nested image
> location");
>          }
>
>          umount("/sys");
>          umount("/proc/bus/usb");
>          umount("/proc");
>
>          /* Delete rootfs contents */
>          if ( nuke_dir("/") )
>                  fatal_error("nuking initramfs contents");
>
>          /* Overmount the root */
>          if ( mount(".", "/", NULL, MS_MOVE, NULL) )
>                  fatal_error("overmounting root");
>
>          /* chroot, chdir */
>          if (chroot(".") || chdir("/"))
>                  fatal_error("chroot");
>
> Судя по вот этому вызову nuke_dir - если он действительно отрабатывает и
> у нас ramfs/tmpfs - то все должно быть хорошо. Просто мы поднимаем
> планку минимального количества памяти, на которой запустится наш новый
> propagator.

это написано в filesystems/ramfs-rootfs-initramfs.txt
  - When switching another root device, initrd would pivot_root and then
    umount the ramdisk.  But initramfs is rootfs: you can neither pivot_root
    rootfs, nor unmount it.  Instead delete everything out of rootfs to
    free up the space (find -xdev / -exec rm '{}' ';'), overmount rootfs
    with the new root (cd /newmount; mount --move . /; chroot .), attach
    stdin/stdout/stderr to the new /dev/console, and exec the new init.

а пропагатор именно initramfs.


Подробная информация о списке рассылки Devel