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

а ядро-то рамдиск поддерживает? пересобрать его возможно придется. или же в инитрд в модули добавить нужный.
помоему проще в инитрд скрипты изменить, в грабе ничего не придется добавлять. изменить /lib/initcpio/init а потом просто mkinitcpio сделать
а что примерно в скриптах отредачить надо?
собрал своё ядро, в ядро жёстко вкомпилил поддержку ext2, ramdisk тож, но история почти таже. Так кто мне поможет? уже 2 с лишним недели лайф усб не получается
давай я тебе свой скрипт дам, ты глянешь как я сделал, и попробуешь еще раз?
у меня ищется на всех носителях root.squashfs и если находится, монтируется.
find_root находится в init_functions:
find_root(){
echo "Search root filesystem..."
path=
type=
stat_path=0
stat_type=0
stat=0
mkdir /mnt
for i in `blkid /dev/[hs][dr]* /dev/mmc*`
do
	if [ "${i:0:5}" = "/dev/" ]
	then
		path="$i"
		echo "Find $path"
		stat_path=1
	fi
	if [ "${i:0:4}" = "TYPE" ]
	then
		type="$i"
		echo "Find fs $type"
		stat_type=1
	fi
	if [[ $stat_path -eq 1 ]]
	then
		if [[ $stat_type -eq 1 ]]
		then
			echo "Parsing strings"
			path="$(echo "$path" | cut -d '=' -f2 | sed -e 's/://g')"
type="$(echo "$type" | cut -d '=' -f2 | sed -e 's/://g' | sed -e 's/"//g')"
			stat_path=0
			stat_type=0
			echo "Mounting $path with $type"
			mount -t "$type" "$path" /mnt 
			if [ -e "/mnt/root.squashfs" ]
			then
				echo "Root found in $path"
				stat=1
				break
			fi
			umount /mnt
		fi
	fi
 
done
umount /mnt 
if [[ $stat -ne 1 ]]
then
	echo "Root not found!"
	exit 0
fi
mount -t "$type" "$path" /mnt
echo "Booting from $path"
mkdir /overlay
mount -t tmpfs none /overlay
mount -t squashfs "/mnt/root.squashfs" "$1" -o loop
mount -t aufs -o dirs=/overlay=rw:"$1"=ro none "$1"
}
а в init изменена одна строка а другая закомментирована:
#mount_handler="default_mount_handler"
mount_handler="find_root"
зы за скрипты не ругайте, я по ходу их написания учил этот язык :-D
так сделал так. взял свой инитрд скинул в пустой каталог, перешёл в него, далее запустил команду gunzip initrd.gz , потом sudo bsdtar -x -f initrd, содержимое распаковалось, взял твой init_functions , в файле init подправил как ты и сказал, потом sudo bsdtar -c –format cpio -z -f ~/initrd * , архив создался, скинул на флешку в каталог /boot , в корне флешки сквашфс образ переименовал в root-image.squashfs , в /boot/grub/menu.lst оставил только kernel /boot/vmlinuz vga=795
initrd=/boot/initrd-arch
ну вот и всё. попытался бутнуться с флешки, кернел паник махом произошёл
у меня тоже паника была когда я так паковал образ, поэтому я менял /lib/initcpio/init и /lib/initcpio/init_functions а потом просто mkinitcpio
сделал, но тоже вот ( см.скрин )
что-то не то, я не вижу выводов своего скрипта. ты же mkinitcpio -g <name> делал?
mkinitcpio -k 2.6.32.2-ArchLinux -g /boot/initrd-arch
ты в init_functions добавил функцию? или заменил файл своим? в конфиге mkinitcpio убери autodetect он подгоняет образ под твою систему, в модулес воткни aufs и loop.
если все правильно сделал, то мой скрипт как минимум напишет где пытается искать корень. пока что я не вижу его выводов.
 
Зарегистрироваться или войдите чтобы оставить сообщение.