Archlinux wil vanaf verkeerde schijf booten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Beste tweakers,

Na aanleiding van een vorige post: Archlinux op usb drive sda, na reboot ineens sdb?
heb ik e.e.a. voor elkaar gekregen d.m.v. UIDs. Het betreft een pogoplug waar Archlinux op een flash drive is geinstalleerd. Er zit ook een 1TB WD schijf aan vast.

Afbeeldingslocatie: https://dl.dropbox.com/u/38865803/got/2013-01-26%2015.23.09.jpg

Werkt als een tierelier, echter nu heb ik het volgende probleem.
Als er ineens een reboot is (bijv stroomstoring) dan zijn beide drives actief geweest en wil de pogoplug niet booten. Waarschijnlijk wordt ineens de WD schijf als eerste schijf gezien en daarvan kan niet geboot worden. Enige remedie is dan, loskoppelen, nog eens opstarten en vervolgens kabeltje erin stoppen.

Omdat ik deze machine later bij mijn schoonouders ga zetten, is dit gedrag niet zo handig (probeer die handelingen maar eens aan je schoonmoeder uit te leggen).
Is het mogelijk om op de 1TB externe schijf iets te zetten waardoor hij naar de andere flash disc gaat? Ik weet niet goed in welke richting ik het moet zoeken, een soort bootloader die ik moet instellen?

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:52

Hero of Time

Moderator LNX

There is only one Legend

Ja, je moet een bootloader installeren. Het is niets meer dan grub-install uitvoeren met je WD als argument. Het zou genoeg moeten zijn om het volgende uit te voeren, maar check Google even voor de zekerheid:
grup-install /dev/sdb


Hiermee installeer je een verwijzing in je MBR naar /boot.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Hero Of Time schreef op zaterdag 09 februari 2013 @ 22:43:
Ja, je moet een bootloader installeren. Het is niets meer dan grub-install uitvoeren met je WD als argument. Het zou genoeg moeten zijn om het volgende uit te voeren, maar check Google even voor de zekerheid:
grup-install /dev/sdb


Hiermee installeer je een verwijzing in je MBR naar /boot.
Bedankt voor je reply, ik heb nog even flink gegoogled. Ik vind eigenlijk geen goede hits met grub-install en mijn probleem. Het probleem is trouwens bekend als cold/warm reboot problem voor pogoplugs (bijv hier)

Sommige tips die gegeven worden:

- usb bootdelay aanpassen (werkt vooral als je waarschijnlijk maar 1 USB device hebt)
- boot USB zo dicht mogelijk bij netwerkpoort. werkt hier niet
- verschillende USB flash devices proberen.

Ik ga eerst de andere poort maar eens proberen.

[edit] booten met usb stick zo dicht mogelijk bij USB heeft hier geen effect.

[ Voor 5% gewijzigd door Red devil op 10-02-2013 12:55 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:52

Hero of Time

Moderator LNX

There is only one Legend

De grub-install is toch de oplossing volgens mij. Alleen weet ik niet precies hoe je 't uit moet voeren, maar het zal wel gaan werken, zo kan je namelijk prima Linux op een HDD installeren terwijl je een SSD hebt als boot disk. Mocht je de SSD eruit halen, kan je opstarten vanaf de HDD als je grub in de MBR hebt gezet.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • brambo123
  • Registratie: December 2006
  • Nu online
Wat geeft dit:
fdisk -l

(doet niets, gaat om de output)

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Hero Of Time schreef op zondag 10 februari 2013 @ 13:20:
De grub-install is toch de oplossing volgens mij. Alleen weet ik niet precies hoe je 't uit moet voeren, maar het zal wel gaan werken, zo kan je namelijk prima Linux op een HDD installeren terwijl je een SSD hebt als boot disk. Mocht je de SSD eruit halen, kan je opstarten vanaf de HDD als je grub in de MBR hebt gezet.
Ja ik snap je redenering maar ik heb het subforum van archlinux doorgespit m.b.t. deze pogoplug (het betreft een v3 versie, toch wel weer anders dan een v2).

Hier bijv een voorbeeld van gelijke vraag.

Sommige mensen met een v2 (ik heb dus nu de v3 actief) dingen opgelost met fw_printenv en fw_setenv maar niemand heeft dat gedaan voor een v3. Het schijnt dat die fw_setenv ook niet zonder risico is.
brambo123 schreef op zondag 10 februari 2013 @ 13:27:
Wat geeft dit:
fdisk -l

(doet niets, gaat om de output)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Disk /dev/sda: 4048 MB, 4048551936 bytes, 7907328 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              62     7904999     3952469   83  Linux

Disk /dev/sdb: 1000.2 GB, 1000202043392 bytes, 1953519616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002846e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1953503999   976750976   83  Linux


en de fstab
code:
1
2
3
4
5
#
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
UUID=a2ac9724-443e-45a0-838b-0cb81cb98952    /mnt/external    ext4    noauto    0    0

Ik heb eerst ingesteld dat hij niet automatisch gemount hoefde te worden, anders heb je zonder de USB 1TB die problemen weer.

[ Voor 8% gewijzigd door Red devil op 10-02-2013 13:38 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:52

Hero of Time

Moderator LNX

There is only one Legend

Waar is je / file system? Je laat alleen je externe schijf zien in je fstab.

Enne, het principe van Grub installeren is niet alleen voor je Pogoplug. Het komt ook bij PCs voor. Heb je het al geprobeerd? Want het doet niets met de functie van je HDD, blijft ook gewoon werken als je 'm aan een andere PC hangt. Niet geschoten is altijd mis, en voor hetzelfde geld zit je nu uren/dagen te kloten en zoeken, terwijl 't met grub-install is opgelost.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • MaximusTG
  • Registratie: April 2003
  • Niet online
(overleden)
Het probleem is toch gewoon dat je pogoplug na een reboot de usbstick niet meer als primary drive heeft, waardoor ie probeert te booten van de harde schijf, wat niet lukt?
Nou kan je proberen dat op te lossen, maar Hero Of Time zn oplossing is veel simpeler. Als je de bootloader op beide drives zet maakt het niet uit vanaf welke je boot. Hij start dan altijd je gewenste OS op.

Zin in pizza? Probeer 'mijn' pizzarecept eens! Laatste versie pizzarecept Blog:KookKompas


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Ik denk niet dat een bootloader op de schijf hier iets oplost, aangzien een pogoplug zijn bootloader in flash heeft. U-boot waarschijnlijk.

@TS: Hoe heb je Arch erop gezet?

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Hero Of Time schreef op zondag 10 februari 2013 @ 15:06:
Waar is je / file system? Je laat alleen je externe schijf zien in je fstab.

Enne, het principe van Grub installeren is niet alleen voor je Pogoplug. Het komt ook bij PCs voor. Heb je het al geprobeerd? Want het doet niets met de functie van je HDD, blijft ook gewoon werken als je 'm aan een andere PC hangt. Niet geschoten is altijd mis, en voor hetzelfde geld zit je nu uren/dagen te kloten en zoeken, terwijl 't met grub-install is opgelost.
Ik heb domweg deze guide gebruikt.
Dit staat er:
Unlike it's Marvell based brethren, a modern U-Boot has not been created for the OXNAS line as of this time. As such, our available method is the use of /dev/sda1. The selection of a particular usb drive as sda is not perfect, and thus can sometimes come up in the wrong order based on drive response times at boot. (e.g. first to respond gets sda). As a result, you may need to test for yourself to see the pattern in which your drives "spin up". USB flash drives tend to come up faster than spinning hard drives in many cases. There is a special exception to this rule, because the OXNAS kernel initializes the SATA code first, so this problem never exists on systems with a SATA boot drive.
Ik ben nog beetje in dubio over die grubinstaller. Als het echt zo voor de hand ligt, dan zegt mijn boerenverstand dat ik het eerder had moeten ontdekken.....en het wordt nergens als een oplossing gerept.
MaximusTG schreef op zondag 10 februari 2013 @ 15:08:
Het probleem is toch gewoon dat je pogoplug na een reboot de usbstick niet meer als primary drive heeft, waardoor ie probeert te booten van de harde schijf, wat niet lukt?
Nou kan je proberen dat op te lossen, maar Hero Of Time zn oplossing is veel simpeler. Als je de bootloader op beide drives zet maakt het niet uit vanaf welke je boot. Hij start dan altijd je gewenste OS op.
Zie bovenstaande :)
Mijzelf schreef op zondag 10 februari 2013 @ 15:12:
Ik denk niet dat een bootloader op de schijf hier iets oplost, aangzien een pogoplug zijn bootloader in flash heeft. U-boot waarschijnlijk.

@TS: Hoe heb je Arch erop gezet?
M.b.v. deze guide, het lijkt op een U-boot systeem..

Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Juist. Dus u-boot laadt de kernel uit flash, en boot hem met de command line:
root=/dev/sda1 ubi.mtd=2,512 rootfstype=ext3 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x30,0xe0,0x00,0x00,0x01 mem=128M poweroutage=yes rootdelay=15
Oftewel, linux zoekt zijn rootfs altijd op sda1, en de exacte volgorde van vinden van USB devices wordt erg belangrijk. Je zou natuurlijk de command line kunnen aanpassen dat hij altijd van sdb1 boot. Maar ja, dat heeft ook voorspelbare nadelen.

Je kunt een heel simpel (busybox based) Linux systeempje op sda1 zetten, met als enige functie: Even wachten, sdb1 mounten, en met switch_root het rootfs veranderen, verder booten.

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Mijzelf schreef op zondag 10 februari 2013 @ 16:01:
Juist. Dus u-boot laadt de kernel uit flash, en boot hem met de command line:
root=/dev/sda1 ubi.mtd=2,512 rootfstype=ext3 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x30,0xe0,0x00,0x00,0x01 mem=128M poweroutage=yes rootdelay=15
Oftewel, linux zoekt zijn rootfs altijd op sda1, en de exacte volgorde van vinden van USB devices wordt erg belangrijk. Je zou natuurlijk de command line kunnen aanpassen dat hij altijd van sdb1 boot. Maar ja, dat heeft ook voorspelbare nadelen.

Je kunt een heel simpel (busybox based) Linux systeempje op sda1 zetten, met als enige functie: Even wachten, sdb1 mounten, en met switch_root het rootfs veranderen, verder booten.
Klinkt lastig, maar misschien moet het zo maar. Ik heb eerst maar even gepost in het archlinux forum voor pogoplug v3. Wellicht dat er nog andere bezwaren (of juist niet) zijn mbt deze approach.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:52

Hero of Time

Moderator LNX

There is only one Legend

Kan je niet /dev/sda1 vervangen voor UUID=langeuuuid, zoals dat bij Grub config ook kan?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Nee. Voor de bootloader is het slechts een statische waarde, het moet worden 'uitgevoerd' door de kernel. De Pogoplug V3 draait een PLX 7820 SoC, en hiervoor is slechts 1 kernel beschikbaar: 2.6.31.

De mogelijkheid om een rootfs te zoeken op basis van UUID is pas in kernel 2.6.37 toegevoegd.
http://kernelnewbies.org/...8fac1b23c097e15c3b49ff793

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Ik denk dat ik het m.b.t. usb flash discs maar opgeef. Heb nog een laatste idee geopperd m.b.t. het gebruik van SATA schijf.

[ Voor 21% gewijzigd door Red devil op 11-02-2013 14:51 ]


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Werkte de pivot_root script niet?

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Mijzelf schreef op maandag 11 februari 2013 @ 15:37:
Werkte de pivot_root script niet?
Ik kom het niet in het forum tegen als een oplossing en het probleem is er al sinds 2011..... ik wil best wat dingen testen maar ben meer van het type dat bestaande implementaties overneemt ipv iets nieuws gaat bedenken (met name op gebieden die ik niet beheers...).

Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Ok, iets testen:

Je kunt hier busybox (statically linked, Arm EABI) downloaden:
http://www.mediafire.com/?djzcjjbt5ea45dg

Test hem op je pogo:
$ ./busybox
BusyBox v1.10.4 (2012-02-15 18:45:56 UTC) multi-call binary
Copyright (C) 1998-2007 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, ash, basename, cat, chmod, cp, cut, dd, dirname,
        echo, egrep, expr, false, fdisk, fgrep, grep, halt, head,
        hwclock, ifconfig, kill, ln, ls, mdev, mkdir, mknod, mount,
        mv, pivot_root, poweroff, printf, pwd, readlink, realpath,
        reboot, rm, rmdir, sed, seq, sh, sleep, sort, split, switch_root,
        sync, test, touch, tr, true, umount, uname, uniq, wc,
        yes


Maak op de schijf een directory /sbin met daarin busybox, een device node sdb1, een directory mountpoint, en een script init
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/sbin/busybox sh

# Wacht ff
/sbin/busybox sleep 10
# Mount 'de andere' schijf
if ! /sbin/busybox mount /sbin/sdb1 /sbin/mountpoint
then
    ERROR=$?
    /sbin/busybox echo "Panic! Kan sdb1 niet mounten: ${ERROR}"
    exit ${ERROR}
fi

cd /sbin/mountpoint
/sbin/busybox mkdir -p /mnt/external

# De eigenlijke switch. sda1 komt terecht op /mnt/external, waar je hem uiteindelijk ook wilt hebben
/sbin/busybox pivot_root . /mnt/external
# En run /sbin/init van sdb1
exec /sbin/init

/sbin/busybox echo "Panic! Er ging iets mis. Zou hier niet moeten zijn"


Dat zou het moeten doen. Typo's daargelaten. busybox en init moeten het execute bit hebben staan.

De kernel mount sda1, en execute /sbin/init. Deze mount sdb1, switched de root, en exec'ed /sbin/init op sdb1

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Mijzelf schreef op maandag 11 februari 2013 @ 16:12:
Ok, iets testen:

Je kunt hier busybox (statically linked, Arm EABI) downloaden:
http://www.mediafire.com/?djzcjjbt5ea45dg

Test hem op je pogo:
$ ./busybox
BusyBox v1.10.4 (2012-02-15 18:45:56 UTC) multi-call binary
Copyright (C) 1998-2007 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, ash, basename, cat, chmod, cp, cut, dd, dirname,
        echo, egrep, expr, false, fdisk, fgrep, grep, halt, head,
        hwclock, ifconfig, kill, ln, ls, mdev, mkdir, mknod, mount,
        mv, pivot_root, poweroff, printf, pwd, readlink, realpath,
        reboot, rm, rmdir, sed, seq, sh, sleep, sort, split, switch_root,
        sync, test, touch, tr, true, umount, uname, uniq, wc,
        yes


Maak op de schijf een directory /sbin met daarin busybox, een device node sdb1, een directory mountpoint, en een script init
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/sbin/busybox sh

# Wacht ff
/sbin/busybox sleep 10
# Mount 'de andere' schijf
if ! /sbin/busybox mount /sbin/sdb1 /sbin/mountpoint
then
    ERROR=$?
    /sbin/busybox echo "Panic! Kan sdb1 niet mounten: ${ERROR}"
    exit ${ERROR}
fi

cd /sbin/mountpoint
/sbin/busybox mkdir -p /mnt/external

# De eigenlijke switch. sda1 komt terecht op /mnt/external, waar je hem uiteindelijk ook wilt hebben
/sbin/busybox pivot_root . /mnt/external
# En run /sbin/init van sdb1
exec /sbin/init

/sbin/busybox echo "Panic! Er ging iets mis. Zou hier niet moeten zijn"


Dat zou het moeten doen. Typo's daargelaten. busybox en init moeten het execute bit hebben staan.

De kernel mount sda1, en execute /sbin/init. Deze mount sdb1, switched de root, en exec'ed /sbin/init op sdb1
Ok bedankt voor het uitvogelen. Busybox gedownload en die werkt.

wat info:
code:
1
2
3
4
5
6
7
8
9
[root@alarm sbin]# pwd
/mnt/external/sbin
[root@alarm sbin]# ls -al
total 856
drwxr-xr-x 3 root root   4096 Feb 11 17:21 .
drwxr-xr-x 5 root root   4096 Feb 11 17:21 ..
-rwxr-xr-x 1 root root 859548 Feb 11 17:08 busybox
-rwxr-xr-x 1 root root    555 Feb 11 17:21 init
drwxr-xr-x 2 root root   4096 Feb 11 17:12 mountpoint


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@alarm sbin]# more init
#!/sbin/busybox sh

# Wacht ff
/sbin/busybox sleep 10
# Mount 'de andere' schijf
if ! /sbin/busybox mount /sbin/sdb1 /sbin/mountpoint
then
    ERROR=$?
    /sbin/busybox echo "Panic! Kan sdb1 niet mounten: ${ERROR}"
    exit ${ERROR}
fi

cd /sbin/mountpoint
/sbin/busybox mkdir -p /mnt/external

# De eigenlijke switch. sda1 komt terecht op /mnt/external, waar je hem uiteindelijk ook wilt hebben
/sbin/busybox pivot_root . /mnt/external
# En run /sbin/init van sdb1
exec /sbin/init

/sbin/busybox echo "Panic! Er ging iets mis. Zou hier niet moeten zijn"


ik ga nu rebooten :)

Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Twee dingen: Ik mis je /sbin/sdb1, en ik zie een typo:
/sbin/busybox mkdir -p /mnt/external

/sbin/busybox pivot_root . /mnt/external
moet zijn
/sbin/busybox mkdir -p mnt/external

/sbin/busybox pivot_root . mnt/external

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Nu online
Het werkt!!!!

2x warm reboot en 1x helemaal uit gedaan!!!

Dat die arch linux mannetjes @ forum daar niet op zijn gekomen! Dit is al jaren een probleem daar!
Mijzelf, wil je dat ik het post als oplossing? (met acknowledgement naar de post @ GOT) of wil je zelf accountje aanmaken en jezelf onsterfelijk maken?

Nogmaals bedankt! Ik had al bijna mijn NSLU2 uit de kast gehaald!

Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Post maar rustig in dat forum. Bij deze geef ik het 'geniale' script vrij onder GPL.
Pagina: 1