Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: xmms 24. 12. 2010, 18:21:02
-
U live cd PC LINUX OS se mi líbí možnost copy to ram, která napřed načte celé CD do paměti a zavede z toho systém. Pak je možné CD vytáhnout a pracovat bez něho. Chtěl bych si takhle udělat LIVE CD suse a dát ho na flešku. Po nabootování flešku vytáhnout. Bohužel moc nerozumím těm mechanismům, jak to tam je udělané. Na CD je nějaký image 600 MB.
Na cd je prázdný adresář /boot/grub
a nějaké help soubory v /isolinux
a pak soubor livecd.sqfs
který nevím jak namountovat
Nějaký návod, jak to vyrobit?
# ls -alh
celkem 681M
drwxr-xr-x 4 root root 2,0K 30. čen 2009 .
drwxr-xr-x 26 root root 4,0K 24. pro 17.05 ..
drwxr-xr-x 3 root root 2,0K 30. čen 2009 boot
drwxr-xr-x 2 root root 6,0K 30. čen 2009 isolinux
-rw-r--r-- 1 root root 681M 30. čen 2009 livecd.sqfs
# find .
.
./boot
./boot/grub
./isolinux
./isolinux/back.jpg
./isolinux/bg.hlp
./isolinux/bluecaress.xcf
./isolinux/boot.cat
./isolinux/bootlogo
./isolinux/cs.hlp
./isolinux/da.hlp
./isolinux/de.hlp
./isolinux/el.hlp
./isolinux/en.hlp
./isolinux/es.hlp
./isolinux/fi.hlp
./isolinux/fr.hlp
./isolinux/gfxboot.com
./isolinux/hu.hlp
./isolinux/initrd.gz
./isolinux/isolinux.bin
./isolinux/isolinux.cfg
./isolinux/it.hlp
./isolinux/ja.hlp
./isolinux/lang
./isolinux/langs
./isolinux/mediacheck
./isolinux/memtest
./isolinux/nb.hlp
./isolinux/nl.hlp
./isolinux/pl.hlp
./isolinux/pt.hlp
./isolinux/pt_BR.hlp
./isolinux/ru.hlp
./isolinux/sl.hlp
./isolinux/star.dat
./isolinux/sv.hlp
./isolinux/timer_a.jpg
./isolinux/uk.hlp
./isolinux/vmlinuz
./isolinux/welcome.jpg
./isolinux/zh_CN.hlp
./isolinux/zh_TW.hlp
./livecd.sqfs
isolinux.cfg obsahuje mimo jiné:
default livecd
prompt 1
timeout 150
UI gfxboot bootlogo
label LiveCD
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto noscsi
label Copy_to_ram
kernel vmlinuz
append livecd=livecd copy2ram initrd=initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto splash=verbose
label Media_Check
kernel vmlinuz
append livecd=livecd md5sum initrd=initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto splash=verbose
-
...
a pak soubor livecd.sqfs
který nevím jak namountovat
...
livecd.sqfs súbor je predpokladám squashfs, zatiaľ som ho nikdy neskúšal namontovať ale nevidel by som v tom žiadny problém - vyskúšam.
Predpokladám že tento súbor by mal obsahovať obsah CD disku ktorý by sa mal celý nakopírovať do disku vytvoreného v RAM.
---
K samotnému riešeniu, ja by som navrhoval aby ste sa pozorne pozrel na súbor initrd. Ten obsahuje príkazy a aj zoznam modulov ktoré sa majú vykonať pri zavedení systému z CD. Tam by sa mu dalo prikázať aby sa vytvoril ramdisk o veľkosti obsahu CD, skopíroval doňho obsah a neskôr ho nahradil namiesto CD mechaniky. V balíčku by mal byť skript "init" ktorý by vás mal zaujímať.
-
Tohle bude větší problém, než se dalo čekat. PClinux a suse jsou dělané jinak a ani po několika dnech zkoumání syslinuxu se v tom nevyznám.
# mount livecd.sqfs /sss -o loop
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
SQUASHFS error: Can't find a SQUASHFS superblock on loop2
# file livecd.sqfs
livecd.sqfs: data
# blkid livecd.sqfs
livecd.sqfs: TYPE="squashfs"
# mount -o loop openSUSE-kde-11.2-livecd-kde-read-only.i686-2.8.0 /sss
mount: you must specify the filesystem type
# mount -o loop -t squashfs openSUSE-kde-11.2-livecd-kde-read-only.i686-2.8.0 /sss
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Opensuse tam má soubor openSUSE-kde-11.2-livecd-kde-read-only.i686-2.8.0
jehož typ je neznámý. Vyrobit takové cédéčko asi nebude v mých silách.
Jak to namountuju?
Navíc jsem prohledal soubory na cédéčku a žádný neobsahuje odkaz na název toho squash souboru. Jak tedy loader pozná, že má z tohoto souboru načíst systém?
-
Opensuse tam má soubor openSUSE-kde-11.2-livecd-kde-read-only.i686-2.8.0
jehož typ je neznámý.
Myslím že na CD-ROM se používá ISO-9660 fs...
-
-- pripojil som si iso cd disku, mam mandrivu nechcelo sa mi robit reboot
mkdir -p /opensuse/cdrom
mount -o loop /home/ladislav/Stiahnuté/openSUSE-11.3-KDE4-LiveCD-i686.iso /opensuse/cdrom
-- vytvoril som si priecinok, v ktorom som rozbalil initrd subor aby som sa pozrel ako livecd bootuje, zaujimal ma subor /opensuse/initrd/init, jeho preskumanim som prisiel nato ako sa system z livecd zavadza do pamate
mkdir -p /opensuse/initrd
cd /opensuse/initrd
gunzip < /opensuse/cdrom/boot/i386/loader/initrd | cpio -i --make-directories
less init
-- nasledne som dosiel k zisteniu ze vyuziva clicfs suborovy system ktory ale ja v mandrive nemam :-)
-- ak sa mi zajtra bude chciet, ja to opensuse nabootujem a dam podrobnejsie instrukcie ako ten suborovy system pripojit a modifikovat
-- Trochu som googlil, tu je akysi navod ako modifikovat livecd s clicfs.
http://www.linuxforums.org/forum/821383-post4.html
-
Další problém je v tom, jak vyrobit tohle live cd, aby to bootovalo z flešky. Na to existuje program SUSE Studio Imagewriter. Imagewriter umí udělat flešku jen z originálních suse live CD. Když si udělám live CD pomocí isolinux s použitím původního obsahu, CD sice funguje a bootuje, ale Imagewriter z něho flešku odmítne udělat s hlášením Sorry, I can't write this ISO. Při pokusech udělat to ručně přes syslinux pomocí návodu na stránkách http://www.debian.org/releases/stable/amd64/ch04s03.html.cs mi to nikdy nefungovalo.
Je nějaký snadný způsob, jak přinutit zavaděč, aby natáhnul libovolné bootovací ISO, ať už je na něm cokoliv? Hodilo by se mi mít na flešce hromadu ISO - windows, linux, dos nebo cokoliv jiného a jen si vybrat.
-
V Ubuntu existuje usb-creator-gtk, tam si pokiaľ viem vyberám ľubovoľné iso, alebo skúste urobiť .img a zapísať ho klasicky dd (z takto urobeného kľúča inštalujem PC-BSD)
-
To už jsem všechno zkoušel, výsledkem bylo obvykle operating system not found.
Snažil jsem se vyrobit bootovací flešku ručně. Udělal jsem fat32 fdiskem, označil jako boot, mkfs.vfat /dev/sdb1
to jsem namountoval a překopíroval tam obsah z live CD a vrazil tam syslinux /dev/sdb1.
Po restartu to hlásilo, že nemůže najít gfxboot. To znamená, že syslinux se spustil, ale nemohl najít ten gfxboot. Nevím proč. Nefunguje to ani jako fat16 a mkdosfs.
-
cl1d3: díky za nakopnutí. Ten initrd se mi nedařilo rozbalit, zkoušel jsem to gunzipem a hlásilo to chyby. Nevěděl jsem o cpio. Koukal jsem na linuxrc u pclinux, který umí načíst CD do paměti a dělá to takhle:
RAMDIR="/initrd/livecd.ram"
mkdir -p $RAMDIR
# make sure we have enough room for the image
IMAGESIZE=`ls -l $MNTCDROM/livecd.sqfs | awk '{print $5+1000000}'`
mount -t tmpfs -o "size=$IMAGESIZE" tmpfs $RAMDIR
if [ "$?" -eq 0 ]; then
# copy the livecd.sqfs image to a tmpfs directory to be used as the new MNTCDROM
echo -n
echo -n " Copying to memory, please stand by..."
cp -R $MNTCDROM/livecd.sqfs $RAMDIR
if [ "$?" -eq 0 ]; then
printok
# free the boot device
umount $MNTLIVECD
umount $MNTCDROM
# and use our new directory as the new MNTLIVECD
`losetup -d $DEVLOOP 2>&1 >/dev/null`
losetup $DEVLOOP $RAMDIR/livecd.sqfs
mount -r -t squashfs $DEVLOOP $MNTLIVECD
rm -rf /initrd/sbin/halt.local
else
`umount $RAMDIR 2>&1 >/dev/null`
echo -n "copy 2 ram was unsuccesfull"
printfail
fi
else
`umount $RAMDIR 2>&1 >/dev/null`
echo -n "the iso is larger than the available ram"
printfail
fi
fi
Možná by to šlo vrazit do opensuse a udělat to podobně.