A workaround to make sure /dev/mtd0 can be created
authorSteven Shiau <steven@stevenshiau.org>
Mon, 17 Jun 2019 15:09:21 +0000 (15:09 +0000)
committerLuca Boccassi <bluca@debian.org>
Mon, 17 Jun 2019 15:09:21 +0000 (15:09 +0000)
A workaround to make sure /dev/mtd0 can be created when memdisk is used.
This is due to sometimes "modprobe phram" can not successfully create /dev/mtd0.
Have to try several times.
Ref: https://gitlab.gnome.org/GNOME/gparted/issues/50#note_523831
     http://gparted-forum.surf4.info/viewtopic.php?pid=32784#p32784

components/9990-main.sh

index ed48be3..530cd3b 100755 (executable)
@@ -57,8 +57,19 @@ Live ()
                                if [ $? -eq 0 ]
                                then
                                        # We found a memdisk, set up phram
-                                       modprobe phram phram=memdisk,${MEMDISK}
-                                       modprobe phram phram=memdisk,${MEMDISK}
+                                       # Sometimes "modprobe phram" can not successfully create /dev/mtd0.
+                                       # Have to try several times.
+                                       max_try=20
+                                       while [ ! -c /dev/mtd0 -a "$max_try" -gt 0 ]; do
+                                         modprobe phram phram=memdisk,${MEMDISK}
+                                         sleep 0.2
+                                         if [ -c /dev/mtd0 ]; then
+                                               break
+                                         else
+                                               rmmod phram
+                                         fi
+                                         max_try=$((max_try - 1))
+                                       done
 
                                        # Load mtdblock, the memdisk will be /dev/mtdblock0
                                        modprobe mtdblock