Дистр на флешку (LiveUSB)

всмысле как? просто поставил, как на хард, в mkinitcpio в хукс добавил юсб.
ааа.. я думал именно лайвфлеш с возможностью установки.
хехе, я тож такую штуку хочу сделать :)
пока теорию изучаю, и есть вопросы.
планируется, что дистрибутив будет уметь загружаться с любого устройства, поэтому есть проблема поиска корня, который сжат в squashfs
в случае с флешками можно организовать сохранение настроек. в принципе как найти корень я знаю, уже скриптик набросал. вот только куда его вставлять. пока что самым рациональным решением мне кажется изменение initrd образа который создаст mkinitcpio, ибо вручную его собирать не охота. читал его init скрипт, получается что в нем надо заменить блок где монтируется корень, на свой, так?
но я в том блоке что-то запутался, можете объяснить что там делается?
зы я раньше со скриптами не сталкивался, непонятны именно конструкции, которые там используются
ззы я бы его полностью выбросил и по своему сделал, но не уверен, что так будет правильно.
как я вижу алгоритм монтирования корня:
ищем корень, в итоге получим имя устройства (например /dev/sda1)
создаем папку (пусть /real_root)
монтируем squashfs в эту папку
накладываем с помощью aufs или unionfs фс для чтения/записи
заходим в real_root (chroot) и запускаем init
дальше как бы все.
у меня вопрос: насколько целесообразно сжимать корень в сквашфс?
как видно на скрине, несжатый / занимает ~1024мб. Сколько будет весить сжатый корень? (мне желательно rw-систему.)
+ещё..можно ли реализовать распаковку сквашфс <куда-то>, как это сделано в инсталлере убунты (там ведь именно так, да?(: ) ?
раз:
http://linuxopen.ru/2008/10/09/primer-i … ashfs.html
два:
unsquashfs --help
SYNTAX: unsquashfs [options] filesystem [directories or files to extract]
        -v[ersion]              print version, licence and copyright information
        -d[est] <pathname>      unsquash to <pathname>, default "squashfs-root"
        -n[o-progress]          don't display the progress bar
        -p[rocessors] <number>  use <number> processors.  By default will use
                                number of processors available
        -i[nfo]                 print files as they are unsquashed
        -li[nfo]                print files as they are unsquashed with file
                                attributes (like ls -l output)
        -l[s]                   list filesystem, but don't unsquash
        -ll[s]                  list filesystem with file attributes (like
                                ls -l output), but don't unsquash
        -f[orce]                if file already exists then overwrite
        -s[tat]                 display filesystem superblock information
        -e[f] <extract file>    list of directories or files to extract.
                                One per line
        -da[ta-queue] <size>    Set data queue to <size> Mbytes.  Default 256
                                Mbytes
        -fr[ag-queue] <size>    Set fagment queue to <size> Mbytes.  Default 256
                                 Mbytes
        -r[egex]                treat extract names as POSIX regular expressions
                                rather than use the default shell wildcard
                                expansion (globbing)
ок, учту (;
осталось попробывать забутять систему со образом..надо пытать :D
[neko@gdetotut ~]$ sudo mksquashfs /media/disk/ ~/root-squashfs
Пароль: 
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on /home/neko/root-squashfs, block size 131072.
[================================================================/] 58367/58367 100%
Exportable Squashfs 4.0 filesystem, data block size 131072
        compressed data, compressed metadata, compressed fragments
        duplicates are removed
Filesystem size 330961.41 Kbytes (323.20 Mbytes)
        39.30% of uncompressed filesystem size (842203.40 Kbytes)
Inode table size 605041 bytes (590.86 Kbytes)
        27.66% of uncompressed inode table size (2187574 bytes)
Directory table size 618879 bytes (604.37 Kbytes)
        39.40% of uncompressed directory table size (1570640 bytes)
Number of duplicate files found 5186
Number of inodes 66322
Number of files 55611
Number of fragments 3447
Number of symbolic links  2311
Number of device nodes 11
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 8389
Number of ids (unique uids + gids) 11
Number of uids 3
        root (0)
        neko (1000)
        dbus (81)
Number of gids 10
        root (0)
        disk (6)
        neko (104)
        ftp (11)
        users (100)
        locate (21)
        mail (12)
        tty (5)
        dbus (81)
        games (50)
[neko@gdetotut ~]$ 
я точно все правильно сделал? О_о

[neko@gdetotut ~]$ du -h root-squashfs 
324M    root-squashfs

мне кажетса что что-то не тоо…
с какого это он записал мой УИД в образ? О_О
почему так быстро?
(меньше 2 минут)
я просто примонтировал sdf2 (mount /dev/sdf2 /media/disk) и сделал mksquashfs /media/disk ~/root-squashfs…
[neko@gdetotut ~]$ sudo mount root-squashfs /media/iso -o loop
[neko@gdetotut ~]$ cd /media/iso
[neko@gdetotut iso]$ ls
bin/   dev/  home/  lost+found/  mnt/  proc/  sbin/  sys/  usr/
boot/  etc/  lib/   media/       opt/  root/  srv/   tmp/  var/
вроде все то..

Алсо, хотелось бы узнать побольше о Arch Installation Framework - если вдруг я захочу сделать инсталляцию Арча на носитель. Смотрим:
[neko@gdetotut ~]$ sudo mount -o loop ~/www/downloads/distros/archlinux-2009.08-core-i686.iso  /media/iso0
[neko@gdetotut ~]$ cat /media/iso0/isomounts 
# archiso isomounts file
# img - location of image/directory to mount relative to addons directory
# arch - architecture of this image
# mount point - absolute location on the post-initrd root
# type - either 'bind' or 'squashfs' for now
# syntax: <img> <arch> <mount point> <type>
# ORDER MATTERS! Files take top-down precedence. Be careful
overlay.sqfs i686 / squashfs
core-pkgs.sqfs i686 /src/core/pkg squashfs
root-image.sqfs i686 / squashfs

Значит пакеты берутса из core-pkgs, не так ли?
[neko@gdetotut ~]$ sudo mount -o loop core-pkgs.sqfs /media/iso
[neko@gdetotut ~]$ ls /media/iso | grep db.tar.gz
core.db.tar.gz
Пакеты берутса из этой базы данных, так?
Т.е. если поступить как с локальным репозитарием - может получитса вполне себе собственный _установочный_ диск с Арчиком? :)
А если еще и подменить root-image, то плюс к этому еще и Live-система? :)

–upd–
посмотрел, как устроена Chakra. Она вообще базируется на скриптах larch..

–upd2–
как примонтировать ФС squashfs для _записи_?
[neko@gdetotut ~]$ sudo mount -t aufs -o dirs=/rw:/ro=ro root-squashfs /mnt
mount: wrong fs type, bad option, bad superblock on /home/neko/root-squashfs,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

Разобрался:
[neko@gdetotut ~]$ sudo mount -t squashfs root-squashfs /mnt/ -o loop
[neko@gdetotut ~]$ mount | grep loop0
/dev/loop0 on /mnt type squashfs (rw)
а нет, rw только написано..
[neko@gdetotut mnt]$ mkdir test
mkdir: невозможно создать каталог «test»: Файловая система доступна только для чтения
Для записи никак не примонтируешь
нужно создать папку куда пишутся изменения и при помощи unionfs или aufs наложить на сквасшфс
а по-подробнее?
и как все это реализовать на live-системе?
 
Зарегистрироваться или войдите чтобы оставить сообщение.