* 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