Contents of /trunk/mkinitrd/patches/mkinitrd-6.3.5-fix-dev-handling.patch
Parent Directory | Revision Log
Revision 1727 -
(show annotations)
(download)
Tue Apr 3 14:09:35 2012 UTC (12 years, 5 months ago) by niro
File size: 5807 byte(s)
Tue Apr 3 14:09:35 2012 UTC (12 years, 5 months ago) by niro
File size: 5807 byte(s)
-backport dev handling from upstream
1 | --- ../tags/mkinitrd-6_3_5/mkinitrd.in 2011-11-24 01:38:55.000000000 +0100 |
2 | +++ mkinitrd-magellan/mkinitrd.in 2012-04-02 14:36:38.727982523 +0200 |
3 | @@ -754,7 +754,16 @@ |
4 | |
5 | add_initrd 'mount -t proc proc /proc' |
6 | add_initrd 'mount -t sysfs sysfs /sys' |
7 | -add_initrd 'mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024' |
8 | +add_initrd "if [[ -z \$(grep '[[:space:]]/dev[[:space:]]' /proc/mounts | cut -d ' ' -f2) ]]" |
9 | +add_initrd 'then' |
10 | +add_initrd ' # many video drivers needed exec access' |
11 | +add_initrd ' fstype=ramfs' |
12 | +add_initrd ' # tmpfs was suggested by Greg Kroah-Hartman' |
13 | +add_initrd " [[ \$(grep '[[:space:]]tmpfs' /proc/filesystems | cut -d \$'\\t' -f2) = tmpfs ]] && fstype=tmpfs" |
14 | +add_initrd ' # mount devtmpfs if supported' |
15 | +add_initrd " [[ \$(grep '[[:space:]]devtmpfs' /proc/filesystems | cut -d \$'\\t' -f2) = devtmpfs ]] && fstype=devtmpfs" |
16 | +add_initrd ' mount -t ${fstype} dev /dev -o exec,nosuid,mode=0755,size=10M' |
17 | +add_initrd 'fi' |
18 | |
19 | [[ ${IMAGE_TYPE} = loopback ]] && add_initrd 'mount -t ramfs -o remount,rw /dev/ram /' |
20 | |
21 | @@ -861,9 +870,6 @@ |
22 | add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
23 | add_initrd 'mount /sysroot || ash' |
24 | |
25 | -# use devtmpfs if supported |
26 | -add_initrd "if [ \"\$(grep devtmpfs /proc/filesystems | cut -d$'\t' -f2)\" = \"devtmpfs\" ]; then mount -t devtmpfs dev /sysroot/dev;fi" |
27 | - |
28 | # unset hotplug event-manager |
29 | add_initrd 'echo > /proc/sys/kernel/hotplug' |
30 | |
31 | @@ -875,9 +881,9 @@ |
32 | add_initrd 'if [ "${BREAK_ENABLED}" = "yes" ]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi' |
33 | |
34 | add_initrd 'echo "-- Switching to real sysroot ..."' |
35 | -add_initrd 'umount /dev' |
36 | -add_initrd 'umount /sys' |
37 | -add_initrd 'umount /proc' |
38 | +add_initrd 'mount --move /dev /sysroot/dev' |
39 | +add_initrd 'mount --move /sys /sysroot/sys' |
40 | +add_initrd 'mount --move /proc /sysroot/proc' |
41 | |
42 | [[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console' |
43 | if [[ ${IMAGE_TYPE} = loopback ]] |
44 | --- ../tags/mkinitrd-6_3_5/livecd/linuxrc.sh 2011-11-24 01:38:55.000000000 +0100 |
45 | +++ mkinitrd-magellan/livecd/linuxrc.sh 2012-04-02 14:36:28.495982524 +0200 |
46 | @@ -61,13 +61,25 @@ |
47 | FORCED_ROOTFS="" |
48 | INITEXEC="/sbin/init" |
49 | BREAK_ENABLED=no |
50 | +UNIONFS=no |
51 | +UNIONFS_FILE="" |
52 | +CLOOPMOUNTDIR="/sysroot/mnt/cloop" |
53 | |
54 | ## starts here ## |
55 | |
56 | # mount essential filesystems |
57 | mount -t proc proc /proc |
58 | mount -t sysfs sysfs /sys |
59 | -mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024 |
60 | +if [[ -z $(grep '[[:space:]]/dev[[:space:]]' /proc/mounts | cut -d ' ' -f2) ]] |
61 | +then |
62 | + # many video drivers needed exec access |
63 | + fstype=ramfs |
64 | + # tmpfs was suggested by Greg Kroah-Hartman |
65 | + [[ $(grep '[[:space:]]tmpfs' /proc/filesystems | cut -d $'\t' -f2) = tmpfs ]] && fstype=tmpfs |
66 | + # mount devtmpfs if supported |
67 | + [[ $(grep '[[:space:]]devtmpfs' /proc/filesystems | cut -d $'\t' -f2) = devtmpfs ]] && fstype=devtmpfs |
68 | + mount -t ${fstype} dev /dev -o exec,nosuid,mode=0755,size=10M |
69 | +fi |
70 | |
71 | # install all busybox applets |
72 | busybox --install -s |
73 | @@ -92,6 +104,8 @@ |
74 | rootfs=*) FORCED_ROOTFS="${i#*=}";; |
75 | init=*) INITEXEC="${i#*=}";; |
76 | break) BREAK_ENABLED=yes ;; |
77 | + unionfs) UNIONFS=yes;; |
78 | + unionfs_file=*) UNIONFS_FILE="${i#*=}";; |
79 | rootdelay=*) ROOTDELAY="${i#*=}";; |
80 | esac |
81 | done |
82 | @@ -178,31 +192,42 @@ |
83 | echo -e "Mounting squashfs system image ..." |
84 | echo |
85 | [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0 |
86 | - mount -o loop,ro -t squashfs /sysroot/mnt/cdrom/livecdrootfs.sqsh /sysroot/mnt/cloop |
87 | + mount -o loop,ro -t squashfs /sysroot/mnt/cdrom/livecdrootfs.sqsh "${CLOOPMOUNTDIR}" |
88 | + |
89 | + # mount unionfs if enabled |
90 | + if [[ ${UNIONFS} = yes ]] |
91 | + then |
92 | + echo -e "Mounting writeable cdbuffer (unionfs) ..." |
93 | + |
94 | + # default setting |
95 | + CLOOPMOUNTDIR="/sysroot/mnt/unionfs" |
96 | + [[ -z ${UNIONFS_FILE} ]] && UNIONFS_FILE="/sysroot/mnt/cdrom/unionfs" |
97 | + |
98 | + [[ ! -d /sysroot/mnt/unionfs ]] && install -d /sysroot/mnt/unionfs |
99 | + mount -t unionfs dirs=${UNIONFS_FILE}=rw:/sysroot/mnt/cloop=ro ${CLOOPMOUNTDIR} |
100 | + fi |
101 | |
102 | # symlinking cloop rootfs to /mnt as newroot |
103 | cd /sysroot |
104 | |
105 | for x in bin sbin lib lib64 boot usr opt |
106 | do |
107 | - [ -d mnt/cloop/${x} ] && ln -s mnt/cloop/${x} ${x} |
108 | + [ -d ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ] && ln -s ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ${x} |
109 | done |
110 | mkdir -p initrd proc tmp sys var/tmp dev media |
111 | |
112 | - # use devtmpfs if supported |
113 | - if [ "$(grep devtmpfs /proc/filesystems | cut -d$'\t' -f2)" = "devtmpfs" ] |
114 | - then |
115 | - mount -t devtmpfs dev /sysroot/dev |
116 | - else |
117 | - # make /sysroot/dev/console & /mnt/dev/null |
118 | - [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 |
119 | - [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 |
120 | - # only to be safe and to have a log channel |
121 | - [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 |
122 | - # busybox needs this one |
123 | - [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 |
124 | - fi |
125 | - (cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot) |
126 | + # make /sysroot/dev/console & /mnt/dev/null |
127 | + [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 |
128 | + [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 |
129 | + # only to be safe and to have a log channel |
130 | + [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 |
131 | + # busybox needs this one |
132 | + [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 |
133 | + |
134 | + (cd ${CLOOPMOUNTDIR}; cp -a etc root home var /sysroot) |
135 | + |
136 | + # ensure that /sysroot/linurc exists |
137 | + [ ! -e /sysroot/linuxrc ] && ln -snf ${INITEXEC} /sysroot/linuxrc |
138 | |
139 | # ensure the right permissions |
140 | chmod 1777 /sysroot/tmp |
141 | @@ -224,8 +249,8 @@ |
142 | fi |
143 | |
144 | echo "-- Switching to real sysroot ..." |
145 | -umount /dev |
146 | -umount /sys |
147 | -umount /proc |
148 | +mount --move /dev /sysroot/dev |
149 | +mount --move /sys /sysroot/sys |
150 | +mount --move /proc /sysroot/proc |
151 | |
152 | exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console |