ALT Linux Team development discussions
 help / color / mirror / Atom feed
* Re: [devel] [sisyphus] initrd для поднятия EVMS (path на mkinitrd)
  @ 2006-09-04 11:48         ` Aleksey Avdeev
  2006-09-04 15:00           ` Aleksey Avdeev
  0 siblings, 1 reply; 2+ messages in thread
From: Aleksey Avdeev @ 2006-09-04 11:48 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussion list; +Cc: ALT Devel discussion list


[-- Attachment #1.1: Type: text/plain, Size: 1355 bytes --]

Aleksey Avdeev пишет:
> Aleksey Avdeev пишет:
> 
>>Aleksey Avdeev пишет:
>>
>>
>>>Michael Shigorin пишет:
>>>
>>>
>>>
>>>>Для корня год-два тому надо было несколько перековырянный initrd
>>>>делать и есть весьма сильное мнение, что для обычных случаев это 
>>>>неоправданно (лучше сделать его на RAID1).
>>>
>>>
>>> Есть ли ссылки на информацию об этом (интересуют доработки
>>>Сизифовского initrd)?
>>
>>
>>  На данный момент -- нашёл
>><http://lists.altlinux.org/pipermail/devel-kernel/2005-October/005819.html>
> 
> 
>   То что у меня получилось -- описал здесь:
> <http://wiki.sisyphus.ru/admin/evms/initrd>

  Сделал небольшой patch на mkinitrd (VERSION=2.9.9), добавляющий данную
функциональность.

  В mkinitrd добавлен параметр --with-evms. Если его не указывать --
генерация initrd совпадает со стандартной. Если указать, то произойдёт
следующие:

1. В initrd будет добавлена /sbin/evms_activate (со всеми требуемыми
библиотеками);

2. Также, будут добавлены evms плогины из списка: aix, bbr, bsd, disk,
dos, drivelink, gpt, lvm*, md, os2, s390 и/или snapshot (точнее -- те из
них, которые присутствуют в системе);

3. Скопирован системный /etc/evms.conf;

4. Добавлен модуль dm_mod;

5. В linuxrc добавлен код для активации EVMS.

PS: Думаю повесить на mkinitrd FR.

-- 

С уважением. Алексей.

[-- Attachment #1.2: mkinitrd.evms.patch --]
[-- Type: text/x-patch, Size: 3851 bytes --]

--- mkinitrd.orig	2006-06-12 21:32:06 +0400
+++ mkinitrd	2006-09-04 15:16:46 +0400
@@ -139,6 +139,7 @@
 MODULES_DIR=
 MODULES_CONF=
 HAVE_RAID=
+HAVE_EVMS=
 FOUND_NON_PCI_IDE=
 
 LSPCI=/usr/bin/lspci
@@ -154,6 +155,11 @@
 IGNORE_MODNAMES=" $IGNORE_MODNAMES ppa imm ide_scsi usb_storage"
 LOADED_MODNAMES=
 
+PRE_EVMS_MODNAMES="dm_mod"
+EVMS_ACTIVATE="/sbin/evms_activate"
+EVMS_CONFIG="/etc/evms.conf"
+EVMS_PLUGINS_REG="/(aix)|(bbr)|(bsd)|(disk)|(dos)|(drivelink)|(gpt)|(lvm)|(md)|(os2)|(s390)|(snapshot)[^[:space:]]*\.so"
+
 loopDev=
 loopFs=
 loopFile=
@@ -183,6 +189,59 @@
 	fi
 }
 
+LIBS_REG="/lib\(\|64\)/[^[:space:]]*\.so\(\.[^[:space:]]*\|\)"
+AddLibs()
+{
+	local list="$@" i
+	(
+		ldd $list | \
+			grep -s "${LIBS_REG}[[:space:]]" | \
+			sed -e "s@^.*[[:space:]]\(${LIBS_REG}\)[[:space:]].*@\1@"
+		for i in $list; do
+			echo "$i"
+		done
+	) | sort | uniq
+}
+
+AddLibsAll()
+{
+	local list="$@" newlist
+	newlist=`AddLibs "$list"`
+	while [ "x$list" != "x$newlist" ] ; do
+		list="$newlist"
+		newlist=`AddLibs "$list"`
+	done
+	echo $list
+}
+
+LinksAndFiles()
+{
+	local list="$@" i
+	for i in $list ; do
+		echo "$i"
+		readlink -f "$i"
+	done | sort | uniq
+}
+
+EvmsLibdir()
+{
+	local list="$@" i
+	for i in $list ; do
+		echo "$i"
+	done | sed -n '\@/lib\(\|64\)/libevms@s@.*\(/lib\(\|64\)\)/libevms.*@\1@p' | head -n1
+}
+
+EVMS_FILES_ALL=
+ListEvmsFilesAll()
+{
+	local list libdir list_plug list_all
+	list=`AddLibs $EVMS_ACTIVATE`
+	libdir=`EvmsLibdir $list`
+	list_plug=`find $libdir/evms -name '*.so' | egrep -s "$EVMS_PLUGINS_REG"`
+	list=`AddLibsAll $list_plug $list`
+	EVMS_FILES_ALL=`LinksAndFiles $list $EVMS_CONFIG`
+}
+
 InList()
 {
 	local value="$1" list="$2" i
@@ -927,6 +986,24 @@
 	echo $(( ($2 & 0xff) | ($1 << 8) | (($2 & ~0xff) << 12) ))
 }
 /bin/mount -t proc proc /proc
+EOF
+
+	if [ -n "$HAVE_EVMS" ]; then
+		Mkdir -p "$MNTDIR/dev/evms/"
+		Mkdir -p "$MNTDIR/var/lock/"
+		ListEvmsFilesAll
+		Cp --parents -d $EVMS_FILES_ALL "$MNTDIR/"
+
+		cat >>"$RCFILE" <<'EOF'
+echo mounting /dev/evms
+/bin/mount -t tmpfs -o size=16k evms /dev/evms
+echo mounting /var/lock
+/bin/mount -t tmpfs -o size=16k tmpfs /var/lock
+echo Starting EVMS
+/sbin/evms_activate
+EOF
+	fi
+	cat >>"$RCFILE" <<'EOF'
 read cmdline </proc/cmdline
 cmdline=" $cmdline "
 if test -z "${cmdline##*[	 ]root=*}" ; then
@@ -968,6 +1045,16 @@
 
 	fi
 fi
+EOF
+
+	if [ -n "$HAVE_EVMS" ]; then
+		cat >>"$RCFILE" <<'EOF'
+/bin/umount /var/lock
+/bin/umount /dev/evms
+EOF
+	fi
+
+	cat >>"$RCFILE" <<'EOF'
 /bin/umount /proc
 EOF
 
@@ -1080,6 +1167,7 @@
 --preload MODULENAME            load MODULENAME before all found automatically.
 --with MODULENAME               load MODULENAME after all found automatically.
 --with-raid                     enable software RAID (md) support.
+--with-evms                     enable EVMS (/dev/evms) support.
 --omit-scsi-modules             do not load any SCSI modules.
 --omit-ide-modules              do not load any IDE modules.
 --omit-raid-modules             do not load any raid modules.
@@ -1101,7 +1189,7 @@
 	[ -n "$1" ] && Exit "$1" || Exit
 }
 
-TEMP=`getopt -n "$PROG" -o fhvd -l help,version,verbose,debug,force,ifneeded,omit-scsi-modules,omit-ide-modules,omit-raid-modules,with-raid,pause,image-version,nocompress,nobootsplash,strict,fstab:,before:,preload:,with:,after: -- "$@"` || Usage 1
+TEMP=`getopt -n "$PROG" -o fhvd -l help,version,verbose,debug,force,ifneeded,omit-scsi-modules,omit-ide-modules,omit-raid-modules,with-raid,with-evms,pause,image-version,nocompress,nobootsplash,strict,fstab:,before:,preload:,with:,after: -- "$@"` || Usage 1
 eval set -- "$TEMP"
 
 img_vers=
@@ -1155,6 +1243,11 @@
 			HAVE_RAID=1
 			shift
 			;;
+		--with-evms)
+			HAVE_EVMS=1
+			POSTLOAD_MODNAMES="$POSTLOAD_MODNAMES $PRE_EVMS_MODNAMES"
+			shift
+			;;
 		--pause)
 			pause=1
 			shift

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 550 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [devel] [sisyphus] initrd для поднятия EVMS (path на mkinitrd)
  2006-09-04 11:48         ` [devel] [sisyphus] initrd для поднятия EVMS (path на mkinitrd) Aleksey Avdeev
@ 2006-09-04 15:00           ` Aleksey Avdeev
  0 siblings, 0 replies; 2+ messages in thread
From: Aleksey Avdeev @ 2006-09-04 15:00 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussion list; +Cc: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 907 bytes --]

Aleksey Avdeev пишет:
> Aleksey Avdeev пишет:
> 
>>Aleksey Avdeev пишет:
>>
>>
>>>Aleksey Avdeev пишет:
>>>
>>>
>>>
>>>>Michael Shigorin пишет:
>>>>
>>>>
>>>>
>>>>
>>>>>Для корня год-два тому надо было несколько перековырянный initrd
>>>>>делать и есть весьма сильное мнение, что для обычных случаев это 
>>>>>неоправданно (лучше сделать его на RAID1).
>>>>
>>>>
>>>>Есть ли ссылки на информацию об этом (интересуют доработки
>>>>Сизифовского initrd)?
>>>
>>>
>>> На данный момент -- нашёл
>>><http://lists.altlinux.org/pipermail/devel-kernel/2005-October/005819.html>
>>
>>
>>  То что у меня получилось -- описал здесь:
>><http://wiki.sisyphus.ru/admin/evms/initrd>
> 
> 
>   Сделал небольшой patch на mkinitrd (VERSION=2.9.9), добавляющий данную
> функциональность.
> 
...
> 
> PS: Думаю повесить на mkinitrd FR.

  Повесил: #9958

-- 

С уважением. Алексей.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 550 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-09-04 15:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-04 11:48         ` [devel] [sisyphus] initrd для поднятия EVMS (path на mkinitrd) Aleksey Avdeev
2006-09-04 15:00           ` Aleksey Avdeev

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git