Annotation of /trunk/mkinitrd/patches/mkinitrd-6.3.5-use-util-linux-blkid-to-support-f2fs.patch
Parent Directory | Revision Log
Revision 2673 -
(hide annotations)
(download)
Wed Jul 22 16:02:43 2015 UTC (9 years, 2 months ago) by niro
File size: 3756 byte(s)
Wed Jul 22 16:02:43 2015 UTC (9 years, 2 months ago) by niro
File size: 3756 byte(s)
-f2fs support
1 | niro | 2673 | diff -Naur mkinitrd-6.3.5/Makefile mkinitrd-6.3.5-f2fs/Makefile |
2 | --- mkinitrd-6.3.5/Makefile 2011-01-29 15:23:07.000000000 +0100 | ||
3 | +++ mkinitrd-6.3.5-f2fs/Makefile 2015-07-22 18:03:30.533678279 +0200 | ||
4 | @@ -3,6 +3,8 @@ | ||
5 | ARCH := $(patsubst i%86,i386,$(shell uname -m)) | ||
6 | ARCH := $(patsubst sparc%,sparc,$(ARCH)) | ||
7 | |||
8 | +LIBDIR = /usr/lib | ||
9 | + | ||
10 | SUBDIRS = grubby livecd isolinux | ||
11 | |||
12 | #ifeq ($(ARCH),sparc) | ||
13 | @@ -28,7 +30,7 @@ | ||
14 | chmod +x busybox/scripts/*.sh | ||
15 | make -C busybox defconfig | ||
16 | make -C busybox | ||
17 | - sed 's:%VERSIONTAG%:$(VERSION):' < mkinitrd.in > mkinitrd | ||
18 | + sed -e 's:%VERSIONTAG%:$(VERSION):' -e 's:%LIBDIR%:$(LIBDIR):g' < mkinitrd.in > mkinitrd | ||
19 | |||
20 | test: all | ||
21 | for i in grubby busybox klibc; do make -C $$i test; done | ||
22 | @@ -44,6 +46,8 @@ | ||
23 | install -m755 installkernel $(DESTDIR)/sbin/installkernel | ||
24 | install -m 644 installkernel.8 $(DESTDIR)/$(mandir)/man8/installkernel.8 | ||
25 | chmod 755 $(DESTDIR)/sbin/mkinitrd | ||
26 | + mkdir -p $(DESTDIR)/$(LIBDIR)/mkinitrd | ||
27 | + install -m755 solibcopy $(DESTDIR)/$(LIBDIR)/mkinitrd/solibcopy | ||
28 | install -m644 mkinitrd.8 $(DESTDIR)/$(mandir)/man8/mkinitrd.8 | ||
29 | install -m644 mkinitrd.confd $(DESTDIR)/etc/conf.d/mkinitrd | ||
30 | install -m755 busybox/busybox $(DESTDIR)/usr/sbin/busybox.mkinitrd | ||
31 | diff -Naur mkinitrd-6.3.5/mkinitrd.in mkinitrd-6.3.5-f2fs/mkinitrd.in | ||
32 | --- mkinitrd-6.3.5/mkinitrd.in 2015-07-22 17:37:33.936060115 +0200 | ||
33 | +++ mkinitrd-6.3.5-f2fs/mkinitrd.in 2015-07-22 18:02:34.542311435 +0200 | ||
34 | @@ -35,6 +35,7 @@ | ||
35 | |||
36 | VERSION=%VERSIONTAG% | ||
37 | |||
38 | +SOLIBCOPY="%LIBDIR%/mkinitrd/solibcopy" | ||
39 | PROBE="yes" | ||
40 | MODULES="" | ||
41 | PREMODS="" | ||
42 | @@ -339,7 +340,7 @@ | ||
43 | then | ||
44 | eval "${dev}" | ||
45 | else | ||
46 | - eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //') | ||
47 | + eval $(blkid ${dev} | grep "${dev}:" | sed 's/.*:.*UUID="\(.*\).*TYPE.*/UUID="\1"/') | ||
48 | fi | ||
49 | echo ${UUID} | ||
50 | } | ||
51 | @@ -742,6 +743,12 @@ | ||
52 | fi | ||
53 | fi | ||
54 | |||
55 | +# install blkid | ||
56 | +if type -P blkid &> /dev/null | ||
57 | +then | ||
58 | + DESTROOT="${DEST}" ${SOLIBCOPY} blkid | ||
59 | +fi | ||
60 | + | ||
61 | # create some needed device nodes | ||
62 | mkdir ${DEST}/dev/pts || die | ||
63 | mkdir ${DEST}/dev/shm || die | ||
64 | @@ -903,7 +910,14 @@ | ||
65 | |||
66 | add_initrd 'echo "-- Mounting sysroot ..."' | ||
67 | add_initrd '. /etc/rootdev' | ||
68 | -add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' | ||
69 | +# special handling for f2fs required | ||
70 | +if [[ ${rootfs} = f2fs ]] | ||
71 | +then | ||
72 | + add_initrd 'eval "${device}"' | ||
73 | + add_initrd 'echo "$(blkid -U ${UUID}) /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' | ||
74 | +else | ||
75 | + add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' | ||
76 | +fi | ||
77 | add_initrd 'mount /sysroot || ash' | ||
78 | |||
79 | # unset hotplug event-manager | ||
80 | diff -Naur mkinitrd-6.3.5/solibcopy mkinitrd-6.3.5-f2fs/solibcopy | ||
81 | --- mkinitrd-6.3.5/solibcopy 1970-01-01 01:00:00.000000000 +0100 | ||
82 | +++ mkinitrd-6.3.5-f2fs/solibcopy 2015-07-22 17:38:43.740247197 +0200 | ||
83 | @@ -0,0 +1,40 @@ | ||
84 | +#!/bin/bash | ||
85 | + | ||
86 | +all_binaries="$@" | ||
87 | + | ||
88 | +: ${DESTROOT=/tmp/solibcopy} | ||
89 | + | ||
90 | +for binary in ${all_binaries} | ||
91 | +do | ||
92 | + fullpath="$(type -P ${binary})" | ||
93 | + path="$(dirname ${fullpath})" | ||
94 | + if [ -e ${fullpath} ] | ||
95 | + then | ||
96 | + for solib in $(ldd ${fullpath} | sed "s:.*=>\ \(.*\):\1:;s:\(.*\)\ (.*:\1:") | ||
97 | + do | ||
98 | + if [ -e ${solib} ] | ||
99 | + then | ||
100 | + solibpath="$(dirname ${solib})" | ||
101 | + install -d "${DESTROOT}"/"${solibpath}" | ||
102 | + cp -a "${solib}" ${DESTROOT}/"${solibpath}"/ | ||
103 | + if [ -L ${solib} ] | ||
104 | + then | ||
105 | + soliblink="$(readlink ${solib})" | ||
106 | + if [[ $(basename ${soliblink}) = ${soliblink} ]] | ||
107 | + then | ||
108 | + soliblinkpath="${solibpath}" | ||
109 | + else | ||
110 | + soliblinkpath="$(dirname ${soliblink})" | ||
111 | + fi | ||
112 | + install -d "${DESTROOT}"/"${soliblinkpath}" | ||
113 | + cp -a "${soliblinkpath}"/"${soliblink}" "${DESTROOT}"/"${soliblinkpath}"/ | ||
114 | + fi | ||
115 | + fi | ||
116 | + done | ||
117 | + # copy the binary itself | ||
118 | + install -d "${DESTROOT}"/"${path}" | ||
119 | + cp -a "${fullpath}" "${DESTROOT}"/"${path}"/ | ||
120 | + else | ||
121 | + echo "binary '${binary}' not found!" | ||
122 | + fi | ||
123 | +done |