[ solved ] Howto install it in HDD?

Home › Forums › GeeXboX for PC › [ solved ] Howto install it in HDD?

This topic contains 40 replies, has 8 voices, and was last updated by  tomlohave 4 years, 9 months ago.

  • Author
    Posts
  • #1482

    DOSSTONED
    Participant

    Originally, I have tested the method stated in the Documentation area, that works. I added the casper-rw file and add args in the GRUB. But I cannot save my configurations(say, change the font).

    I found out that the file rootfs can be mounted in Fedora, it actually the whole system. After copying those files into geexbox partition with -pr option, and remove rootfs, the vmlinuz said he cannot file the root…

    I just wanna save changes and hope to modify them in another OS(in case the system is down.) Any suggestions?

    btw, how to compile the source? Under Fedora 15

  • #1483

    tomlohave
    Keymaster

    x64 or i386 ?
    if i386, replace your initrd by this one : http://download.geexbox.org/releases/extra/initrd
    Now it should work

    compile the source ? the entire geexbox distribution ? see openbricks.org for that.

  • #1494

    DOSSTONED
    Participant

    arch = i386
    nope…

    it is still not working. Error indicates current root is not in splashfs format.

  • #1495

    tomlohave
    Keymaster

    try this latest iso :http://download.geexbox.org/releases/extra/i386/latest-iso-devel.iso
    No time to build an x86_64 one

  • #1711

    zzzz88
    Member

    I met the same problems and therefore I make a patch for init file in initrd.

    1. put all geexbox files into /GEEXBOX directory including rootfs
    2. add grub menu
    title GEEXBOX
    root (hd0,1)
    kernel /GEEXBOX/vmlinuz vga=789 persistent loglevel=3 live-path=GEEXBOX root=/dev/sda2
    initrd /GEEXBOX/initrd.xz

    “live-path” is my new parameter in init file.

    3. patch init in initrd

    diff -uN mnt2/init mnt/init
    — mnt2/init 2011-09-16 01:32:12.000000000 +0800
    +++ mnt/init 2011-11-23 15:27:34.954000159 +0800
    @@ -31,6 +31,9 @@
    data=*)
    DATA=”${arg#data=}”
    ;;
    + live-path=*)
    + LIVE_PATH=”${arg#live-path=}”
    + ;;
    init=*)
    INIT=”${arg#init=}”
    ;;
    @@ -50,8 +53,8 @@
    # try to mount the rootfs specified in cmdline…
    if [ -n “$ROOT” ]; then
    dbg_echo -n “Trying root=$ROOT as requested…”
    - if mount -o ro $ROOT /mnt >/dev/null 2>&1; then
    - if mount -t squashfs /mnt/rootfs /squashfs >/dev/null 2>&1; then
    + if mount -o rw $ROOT /mnt >/dev/null 2>&1; then
    + if mount -t squashfs /mnt/$LIVE_PATH/rootfs /squashfs >/dev/null 2>&1; then
    dbg_echo “found.”
    else
    dbg_echo “failed, cannot mount squashfs.”
    @@ -86,7 +89,7 @@
    continue
    fi
    fi
    - if mount -t squashfs /mnt/rootfs /squashfs >/dev/null 2>&1; then
    + if mount -t squashfs /mnt/$LIVE_PATH/rootfs /squashfs >/dev/null 2>&1; then
    dbg_echo “found.”
    FOUND_ROOTFS=yes
    break
    @@ -110,7 +113,7 @@

    # setup aufs
    if [ “$PERSISTENT” = yes ]; then
    - DATA=/mnt/casper-rw
    + DATA=/mnt/$LIVE_PATH/casper-rw
    PERSISTENT_OPT=”-o loop -t ext2″
    [ ! -f “$DATA” ] && unset DATA && unset PERSISTENT_OPT
    fi

  • #1717

    tomlohave
    Keymaster

    you can test this one : http://download.geexbox.org/releases/extra/i386/latest-iso-devel.iso
    just add root=your_disk persistent=/directory_to_casper_rw/casper-rw

  • #1983

    ridgeline
    Member

    Hello,
    I’ve the same/similar problem: I can start GEEXBOX from HDD without any error, but I can’t store any changes.
    File system: ext4
    Grub2 bootloader
    rootfs in / (sda1)
    casper-rw in / (sda1)
    initrd (558,1kb-version) & vmlinuz in /GEEXBOX/

    menuentry ‘Gee 2.0a'{
    set root=(hd0,1)
    linux /GEEXBOX/vmlinuz root=/dev/sda1 quiet splash
    initrd /GEEXBOX/initrd
    }

    I’ve tied the parameter persistent-/casper-rw, but I get error messages like this:
    linux /GEEXBOX/vmlinuz root=/dev/sda1 persistent=/casper-rw quiet splash
    Error message
    aufs test_br: 179 ….
    mount /newroot failed

    The file casper-rw: owner root rw; group root readonly; others readonly

    Thanks for help

    Eduard

  • #1984

    tomlohave
    Keymaster

    regular i386-iso ?
    initrd from http://download.geexbox.org/releases/extra/initrd ?
    If you really want to install it to hdd (not with rootfs etc) try this iso : http://download.geexbox.org/releases/extra/i386/latest-iso-devel.iso

  • #1992

    ridgeline
    Member

    its regular I386-iso (Ubuntu 11.04) 32-bit system in parallel ; HDD = TS32GSSD25S-M:
    I’ve installed the “latest-iso-devel.iso” and initrd
    I’ve copied the “rootfs” file into /

    menuentry ‘Gee 2.0c'{
    set root=(hd0,1)
    linux /GEEXBOX/vmlinuz root=/dev/sda1 quiet splash
    initrd /GEEXBOX/initrd
    }
    without persistent parameter I get following messages during startup:
    could not open framebuffer: No such file or directory
    - EXT3-fs (sda1): error: couldn’t mount because of unsupported optional features (240)
    - EXT2-fs (sda1): error: couldn’t mount because of unsupported optional features (240)
    XBOX starts, but no change permanent

    menuentry ‘Gee 2.0d persistent'{
    set root=(hd0,1)
    linux /GEEXBOX/vmlinuz root=/dev/sda1 persistent=/GEEXBOX/casper-rw quiet splash
    initrd /GEEXBOX/initrd
    }
    with persistent I get following:
    - could not open framebuffer: No such file or directory
    - EXT3-fs (sda1): error: couldn’t mount because of unsupported optional features (240)
    - EXT2-fs (sda1): error: couldn’t mount because of unsupported optional features (240)
    - aufs test_br:173:mount write permission …
    - mount: mounting none on /newroot failed: invalid argument …
    - Cannot mount aufs, dropping to shell
    - BusyBox v1.19.2

  • #1993

    tomlohave
    Keymaster

    fstype for your disk ?
    under ubuntu, what says
    cat /proc/mounts

  • #1994

    ridgeline
    Member

    cat /proc/mounts
    Result:
    rootfs / rootfs rw 0 0
    none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
    none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
    none /dev devtmpfs rw,relatime,size=893524k,nr_inodes=215433,mode=755 0 0
    none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
    fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
    /dev/disk/by-uuid/a4488ca6-aa7d-44e8-92c8-96a3e5fe8610 / ext4 rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
    none /sys/kernel/debug debugfs rw,relatime 0 0
    none /sys/kernel/security securityfs rw,relatime 0 0
    none /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
    none /var/run tmpfs rw,nosuid,relatime,mode=755 0 0
    none /var/lock tmpfs rw,nosuid,nodev,noexec,relatime 0 0
    binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
    gvfs-fuse-daemon /home/loewe/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0

    Thanks for the help

  • #1995

    tomlohave
    Keymaster

    i didn’t carefully read your post, geexbox boot without persistent so add “rw” should work
    all my files are in /geexbox : rootfs, initrd, vmlinuz and casper-rw

    my grub.cfg :

    menuentry “Geexbox” {
    set root=(hd0,1)
    linux /geexbox/vmlinuz root=/dev/sda1 rootfs=/geexbox/rootfs persistent=/geexbox/casper-rw rw
    initrd /geexbox/initrd
    }

  • #2018

    ridgeline
    Member

    Thanks @tomlohave,
    you were right; the rw was missing, now it’s working.

    Eduard

  • #2300

    akostadinov
    Participant

    @tomlohave, thanks much for the information. It was super easy to get geexbox 2 devel running next to geexbox 1 on an existing NTFS partition. I already had geexbox 1 with grub4dos installed through windows installer. So I:
    * created a GEEXBOX2 directry
    * put initrd, vmlinuz, rootfs, casper-rw in c:\GEEXBOX2
    * added an entry in the existing c:\GEEXBOX\boot\menu.lst :
    title Start Geexbox 2
    kernel=/GEEXBOX2/vmlinuz root=/dev/sda1 rootfs=/GEEXBOX2/rootfs persistent=/GEEXBOX2/casper-rw rw boot=
    initrd=/GEEXBOX2/initrd

    It started just fine and casper-rw is used. After one reboot I see settings are kept. But on shutdown and reboots I see umount errors that go too fast to read them. On the next reboot settings are lost, I assume casper-rw becomes corrupted. Any idea how to fix the shutdown process?

  • #2301

    craigus
    Participant

    Confirmed here also. After more than one reboot, ext2_lookup: deleted inode referenced errors occur and drops to shell and then dies.

  • #2308

    tomlohave
    Keymaster

    ok, i will test the shutdown script.

  • #2310

    tomlohave
    Keymaster

    should be solved with commit r13683 http://hg.openbricks.org/openbricks/rev/aa01dcf37358

  • #2321

    akostadinov
    Participant

    @tomlohave: thanks for looking into that problem. Is there a place with snapshot with your changes? Latest thing I can see on the download server is before this commit.

    Unfortunately I couldn’t test the changes applying manually. The initrd I’m creating doesn’t work for some reason. I get an error root cannot be mounted. No idea if I’m doing something wrong editing the initrd image. I use these commands to extract/create:
    unxz -c /mnt/tmp/initrd | cpio -i # extract initrd
    find | cpio -H newc -o | xz > ../initrd # create initrd

    btw other linux distros always sync before actually shutting down/rebooting the machine just to be sure everything is done to preserve user data. Another suggestion I have is to have e2fsck before mounting casper-rw. I think it would make the whole sthing much more reliable.

    Regards and Merry Christmas!

  • #2323

    craigus
    Participant

    As far as I can tell, http://download.openbricks.org/geexbox-devel-20111224-r13686-i386.iso has the fix built in.

  • #2343

    akostadinov
    Participant

    Thank you for download link. But I don’t see any difference with this build. I tried to debug the problem. I entered emergency mode with “systemctl emergency”. I could “mount -o remount,rw /” but I cannot “mount -o remount,rw /.data”. It says it’s in use. I can’t see anything using it with fuser. Perhaps some weird behavior because of aufs?

    When shutting down I see error messages that loop0 and loop1 are busy and cannot be umounted. Also lots of failed to write sector ### on ext2 filesystem. But I know filesystem is ok. It’s a newly created one and I have run a badblock test on the HDD so I know there are no physical disk issues. Any ideas how to fix or debug further?

  • #2347

    tomlohave
    Keymaster

    interesting i have testing this 10x with a ntfs paartition containing rootfs and casper-rw file and it was ok. No error
    i will test with sync … No other idea for now.

  • #2351

    tomlohave
    Keymaster

    can you post the result of command line (if you can boot) dmesg ?
    Thanks
    retrying today and i’m unable to break my casper-rw file under a ntfs partition

  • #2356

    akostadinov
    Participant

    @tomlohave, by saying you cannot corrupt your casper-rw do you just mean that it works or is it cleanly umounted? When I copy my casper-rw to a linux machine and run e2fsck, it tells that it was not cleanly umounted. I guess it is very environment and usage specific after how many unsuccessful umounts a filesystem breaks but it is inevitable to break at some point.

    I can copy the output to a flash drive and send it later today. What is an appropriate place to put the output, pastebin?

    just FYI after some more observations I could see some errors at the beginning of shutdown process:
    systemd[1]: .root.mount mount process exited, code=exited status=1
    systemd[1]: .data.mount mount process exited, code=exited status=1
    systemd[1]: .squashfs.mount mount process exited, code=exited status=1

    Then at some interval kernel prints IO error messages about loop1 [1]. Could it be that systemd screws the .root mount where casper-rw resides and it is impossible later to perform a clean umount?

    Unfortunately messages move too fast after this point in time and I can’t use scroll lock to stop them hence can’t see a big part pf the log :/

    Regards.

    [1] I’m inserting “sh” lines into /run/initramfs/shutdown to have stop points where I can inspect what’s going on. When I’m staying on such shell called by /shutdown I see the kernel IO error messages about loop1.

  • #2357

    tomlohave
    Keymaster

    forgot my request, problem is gone …
    i was able to reproduce it so now i can work on it

  • #2548

    akostadinov
    Participant

    @tomlohave, any hope this can be fixed? Is this a problem only for NTFS?

  • #2572

    rubiki
    Member

    e2fsck ? good. learned a new command. fixed many errors.

  • #2700

    akostadinov
    Participant

    @rubiki, what are you trying to say? Did you read the thread?

  • #2865

    krestian
    Participant

    I am having the same issue (ext2_lookup: deleted inode referenced and then stall on boot) on an HDD install using unetbootin… here’s my specs:
    - CPU is an AMD Duron 800
    - RAM is 256 MB
    - Graphics Card is Nvidia GeForce 2 MX400
    - HDD is SATA connected to a PCI SATA card based on VIA VT6421 / also tried on an HDD directly connected to PATA (regular IDE) on-board controller with same results.
    - persistent is set to 512 MB, or 256 MB, with same results.

    My journey began when GeexBox didn’t like my video card so I need to install the old xf86-video-nvidia-old_96.43.20-1_i686.opk driver first. What I have noticed after countless attempts is that GeexBox gives me the same deleted inode referenced errors even without rebooting…. after installing the old driver and hitting Ctrl-D I get the same. I have never been able to fully boot it in this machine.

    BTW… If i don’t “opkg remove xf86-video-nvidia” first, installing the old driver does not complain about dependency clash, and does indeed seem to load upon Ctrl-D. The other way around, I have to force-overwrite, but either way I get stuck on the deleted inode referenced scenario.

  • #2866

    krestian
    Participant

    Sorry forgot one spec… both drives formatted to NTFS. Casper file also copied to root (C:\). I can confirm Casper is being written to, or at least updated, because Windows shows a newer last-modified timestamp for the file at C:\

  • #2867

    tomlohave
    Keymaster

    @krestian : please test devel iso : http://download.openbricks.org/
    (take the latest). You shouldn’t need anymore xf86-video-nvidia-old
    but (yes there is a but …)
    read on NTFS partitions is well supported, write not very good ….

  • #2870

    akostadinov
    Participant

    @tomlohave, any chance casper-rw mount parameters to become configurable? I’m thinking about creating a disk partition for that purpose and -o loop is not an appropriate option in this case.
    I was also wondering if device mapper can be used such that casper-rw is mapped to a device and using that device [1]. Perhaps this will make mounting/umounting more reliable and independent of the filesystem state?

    [1] http://sources.redhat.com/lvm2/wiki/DMLoop

  • #2884

    krestian
    Participant

    tomlohave… you are the man.
    Thank you for the tip. I was skeptical at first because I would get the deleted inode errors booting right off the Live CD from the link you provided. But somehow got it to work (first time ever on this particular machine) by doing the following:

    -Install to HDD using unetbootin following the guide.
    ***BEFORE REBOOTING:***
    -Copy C:\casper-rw from C:\unetbtin to C:\
    -Copy vmlinuz, rootfs and initrd from the CD to C:\
    …and then reboot.

    …and it booted from the HDD invoking the unetbootin boot menu entry! I’m a happy camper now. I would spend all night thanking you but I have to go test it 😀

  • #3001

    tomlohave
    Keymaster

    @ akostadinov :
    can you test the last devel iso : http://download.openbricks.org/geexbox-devel-20120219-r13973-i386.iso
    add this parameter when booting :
    persistent=casper-rw root=/dev/sda1 rw external-persistent

    I have no more problem with ntfs partition and casper-rw
    (change sda1 by the disk containing both rootfs and casper-rw files at the root of your disk)

  • #3051

    akostadinov
    Participant

    @tomlohave, the good news is that casper-rw is no longer corrupt on restart, the bad news is that my configuration is not persisted. On restart everything is on defaults. I think casper is mounted on /persistent but why does it not actually persist I can’t tell :/

    I couldn’t actually understand the changes to packages/busybox-init/scripts/linuxrc (http://hg.openbricks.org/openbricks/rev/fdb2a6b49d37)

    btw I think e2fsck is highly needed before mounting casper no matter how good shutdown script is, because there are many ways a FS can become corrupted.

  • #3056

    tomlohave
    Keymaster

    will recheck it … if you change your regional settings for example, it does not persist ?
    e2fsck is on real “root” . Maybe change a little /etc/fstab ?

  • #3057

    akostadinov
    Participant

    @tomlohave, yes, I change regional settings and others and it is not persisted.

    as for e2fsck, I think at the time e2fsck from root runs, casper-rw is already mounted rw so can’t be fscked. I might be wrong but this is how I read the code. And I’ve no idea how to check what actually happens. But I think that just before casper-rw is mounted, rootfs is already mounted and e2fsck can be run from there.

  • #3060

    tomlohave
    Keymaster

    try this one : http://download.openbricks.org/geexbox-devel-20120221-r13974-i386.iso
    i tested it and personnal settings are restored
    with external pesristent, i mount casper-rw to restore all directory (except /root : can be to heavy), umount it,
    and after pivot root, remount data disk under /data, remount casper-rw under /persistent/, symlink /root to /persistent/root
    Maybe we can check data disk on remount. No time to look how to package e2fsck in initrd. But it’s useless for ntfs partition …

  • #3188

    akostadinov
    Participant

    tomlohave, it finally works!
    I managed to install it yesterday night. It now saves configuration and also filesystem is fsck clean after shutdown. Hope it behaves stable in the long term 🙂

    For those interested in installing on windows, here I put a short howto:
    1. use the geexbox 1.2.x latest windows installer to install latest geexbox 1.2.x
    2. create a geexbox2 directory somewhere on the same disk geexbox 1.2.x is installed
    3. extract the following files from geexbox2 ISO (use the one from the above post or newer) file into geexbox2 directory - rootfs, initrd and vmlinuz
    4. create a casper-rw file in the geexbox2 directory and format as ext2 (I use a 200M file)
    5. edit menu.lst (should be in c:\geexbox\boot) and add an entry similar to the following:

    title Start Geexbox 2 ...
    kernel=/GEEXBOX2/vmlinuz root=/dev/sda1 boot=UUID=EA2198EB2098C04D rootfs=/GEEXBOX2/rootfs persistent=/GEEXBOX2/casper-rw external-persistent
    initrd=/GEEXBOX2/initrd

    You would need to change especially these option: root=/dev/sda1 boot=UUID=EA2198EB2098C04D where you need to see the correct values in the entries already present for geexbox 1.2.x. Hopefully somebody can create an installer for geexbox2 but for the time being the above instructions are the easiest way I see.

    Many thanks to the geexbox team. Don’t forget to support them!

  • #3190

    tomlohave
    Keymaster

    good to hear 🙂

    No need of option “rw” in line kernel=… ?

  • #3191

    akostadinov
    Participant

    no need for rw. Pasted my actual configuration. Init assumes it automatically when you have persistent=…

  • #3192

    tomlohave
    Keymaster

    yes, re-read linuxrc, and you’re right 😉

You must be logged in to reply to this topic.