View previous topic :: View next topic |
Author |
Message |
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Sun Oct 05, 2014 5:47 pm Post subject: [Solved] Moving a system to external USB drive |
|
|
Hi!
Trying to move my current system to external USB drive.
System was packed in stage4 recently and now I've extracted it to external hdd.
The system itself is OK, I attached hdd to sata port directly and successfully booted.
The thing is I can't boot it over USB, when hdd sits in enclosure. During startup I'm getting it hanging for about a 9 seconds (at 2.3436) and it completely stops at this screen:
http://i.imgur.com/KFOW79R.jpg
What may cause a stop?
Thanks.
Last edited by creaker on Mon Oct 06, 2014 9:30 pm; edited 1 time in total |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9677 Location: almost Mile High in the USA
|
Posted: Sun Oct 05, 2014 5:55 pm Post subject: |
|
|
Are you using initramfs?
Something similar happens to me when my initramfs didn't allow enough time to detect the USB disks which takes a while to enumerate, the mount fails, and it then drops to the emergency shell (so if you press enter you get the busybox prompt in initramfs).
I also have a similar external case that's eSATA+USB, the USB requires the root wait delay where the eSATA does not. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Sun Oct 05, 2014 6:09 pm Post subject: |
|
|
Thanks for reply.
I do not use initramfs. Regarding a delay for root I'm aware of it. Grub menu has an rootwait option to wait for getting device ready:
Code: | menuentry 'Gentoo Linux-3.14.14-Live' {
load_video
insmod gzio
set root='hd0,msdos1'
linux /boot/kernel-3.14.14-gentoo-1 rootwait root=PARTUUID=4273a309-01 ro net.ifnames=0 vga=791
} |
May be I have to activate some USB-related modules in kernel? |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Sun Oct 05, 2014 8:15 pm Post subject: |
|
|
creaker,
You will need all the USB support for your USB hubs built in along with USB storage.
Its also in the initrd but that doesn't help as USB is not nornally started until after root is mounted. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Sun Oct 05, 2014 9:09 pm Post subject: |
|
|
NeddySeagoon
OK, I'm going to build kernel with genkernel. Anyway this installation tends to be liveUSB, so it maybe a good reason to run genkernel. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Sun Oct 05, 2014 10:37 pm Post subject: |
|
|
Yes it helped, genkernel built kernel with tons of modules, on of them seems was missed. System boots with some minor issues: kernel refuses to mount root partition by UUID (though I have initramfs built as well) and invites me to type correct root device. Hitting "Enter" causes autodetection and mounting "real_root=/dev/sdc1". The rest of boot process going smoothly. I checked UUID twice.
How do I force mounting by UUID? |
|
Back to top |
|
|
DONAHUE Watchman
Joined: 09 Dec 2006 Posts: 7651 Location: Goose Creek SC
|
Posted: Mon Oct 06, 2014 2:39 am Post subject: |
|
|
try adding rootdelay=30 to the kernel commandline. 30 should be excessive, if it works you can reduce it, if it doesn't .....
the usb drive may need some time to "settle" before root can mount _________________ Defund the FCC. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Mon Oct 06, 2014 7:10 am Post subject: |
|
|
Tried it, doesn't help. Replacing boot parameter to real_root doesn't help as well.
Seemes it's some kind of eudev issue. When boot stopped I went to shell to check /dev. ls doesn't show /dev/disk there. I think it should be there at that moment. |
|
Back to top |
|
|
DONAHUE Watchman
Joined: 09 Dec 2006 Posts: 7651 Location: Goose Creek SC
|
Posted: Mon Oct 06, 2014 7:17 am Post subject: |
|
|
maybe config_mount_devtmpfs in kernel? _________________ Defund the FCC. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Mon Oct 06, 2014 8:00 am Post subject: |
|
|
How do I set CONFIG_DEVTMPFS_MOUNT? I tried to set it to "y", but genkernel just drops .config and starts with template that hasn't this option set.
In addition tried rootfstype boot option, tried to switch to real_root=/dev/sdc1, to real_root=LABEL=USB, but still no luck.
Have to try to build kernel with make. |
|
Back to top |
|
|
Roman_Gruber Advocate
Joined: 03 Oct 2006 Posts: 3846 Location: Austro Bavaria
|
Posted: Mon Oct 06, 2014 8:04 am Post subject: |
|
|
creaker wrote: | How do I set CONFIG_DEVTMPFS_MOUNT? I tried to set it to "y", but genkernel just drops .config and starts with template that hasn't this option set.
In addition tried rootfstype boot option, tried to switch to real_root=/dev/sdc1, to real_root=LABEL=USB, but still no luck.
Have to try to build kernel with make. |
well you can create a kenrel config and pass it on to genkernel. I think those settings are hidden in the gentoo needed features introduced in gentoo-sources. WE have a new kernel setting near the top of the gentoo-sources which should set those. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Mon Oct 06, 2014 8:20 am Post subject: |
|
|
Built it with make.
Code: | localhost ~ # zcat /proc/config.gz | grep DEVTMPFS
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y |
Doesn't help much. DEVTMPFS isn't a causer.
When boot stops should /dev /dev/disk /dev/disk/by-label be presented already? |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Mon Oct 06, 2014 4:56 pm Post subject: |
|
|
creaker,
Mounting by UUID works only if the kernel can see the HDD. None of /dev /dev/disk /dev/disk/by-label are required.
Think about it. /dev is on root so it cannot be accessed until after root is mounted.
I have a static /, so /dev/disk /dev/disk/by-label and so on never exist but mounting by UUID still works.
The USB HCD options and USB starage must be built in an root is normally mounted before USB is started.
Thats an issue for root on USB. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Mon Oct 06, 2014 9:19 pm Post subject: |
|
|
NeddySeagoon
thanks for hint, it was really hcd issue, selected them both (ehci_hcd & xhci_hcd) as built-in, it solved a problem. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Tue Oct 07, 2014 2:36 am Post subject: |
|
|
Next step is getting it bootable on other machines.
Two questions:
1. Is it enough to remove -march=native option from make.conf (and rebuild system) to get code with generic instructions set only? In order to get it working with other CPUs (preventing "illegal instructions" error).
2. Is it enough to specify few video drivers (e.g. VIDEO_CARDS="nouveau radeon vesa via") on system rebuild? Will appropriate module being loaded/used depending on current video card? Or should it be selected/switched by script? |
|
Back to top |
|
|
Roman_Gruber Advocate
Joined: 03 Oct 2006 Posts: 3846 Location: Austro Bavaria
|
Posted: Tue Oct 07, 2014 5:20 pm Post subject: |
|
|
creaker wrote: | Next step is getting it bootable on other machines.
Two questions:
1. Is it enough to remove -march=native option from make.conf (and rebuild system) to get code with generic instructions set only? In order to get it working with other CPUs (preventing "illegal instructions" error).
2. Is it enough to specify few video drivers (e.g. VIDEO_CARDS="nouveau radeon vesa via") on system rebuild? Will appropriate module being loaded/used depending on current video card? Or should it be selected/switched by script? |
i think there was an article on the gentoo wiki about the make.conf.
well if you build it for i686 it is generally for everything but I think thats for 32 bit.
core2 I think is for penryn and upwards but only for intel. you better check the gentoo wiki or there was a section in the handbook about it.
2) well i think you need to specify which video-cards in the make.conf. i never tried this but you may look on how the gentoo live-cd is build, this is a general load everywhere disk. you may find your answer there. sysrescuecd is also gentoo based. you maybe find a tutorial how to do that in particular than. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Tue Oct 07, 2014 5:45 pm Post subject: |
|
|
creaker,
Use -mtune=generic and leave -march unset for 64bit.
Don't forget to rebuild the kernel too.
32 bit is a bit more difficult and it depends how far back you want to go anu if you need the toolchian to work on the old hardware.
eg. a K6-2 is i586, so to get back there on a i686 install, you need -march=pentium.
However your CHOST, which is used to build the toolchain will still be i686, so it won't run on anything less.
You can change the CHOST on a 32 bit install but thun you are doing a stage1.
Again, don't forget the kernel _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Tue Oct 07, 2014 6:43 pm Post subject: |
|
|
Well, I've booted Gentoo LiveDVD, CFLAGS and CXXFLAGS are set to "-O2 -pipe" there. Seemingly it will be correct to have
Code: | CFLAGS="-mtune=generic -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu" |
I do not plan to use it at old machines, almost all of them at least has basic 64bit instructions set.
However I didn't see how do I instruct genkernel to use these options. I see only --makeopts available as command line parameters for genkernel. Will genkernel pick CFLAGS e.t.c. from make.conf when building kernel or have I to specify these flags separately? If so how do I do it? I just do not see any options in genkernel help message. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Tue Oct 07, 2014 7:21 pm Post subject: |
|
|
creaker,
Look in make menuconf. I think genkernel always uses generic in the CPU selection.
--menuconf is a genkernel command line option so you can look before the build starts.
There may only be a single - there. Try genkernel --help _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Tue Oct 07, 2014 7:53 pm Post subject: |
|
|
make menuconfig upon .config that was created by genkernel shows "Generic-x86-64" for "Processor type and family" option:
Code: | CONFIG_GENERIC_CPU:
Generic x86-64 CPU.
Run equally well on all x86-64 CPUs.
Symbol: GENERIC_CPU [=y]
Type : boolean
Prompt: Generic-x86-64 |
|
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Tue Oct 07, 2014 8:26 pm Post subject: |
|
|
creaker,
The kernel is already generic then. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Tue Oct 07, 2014 8:33 pm Post subject: |
|
|
Yes, I can boot with it till login, but failed to log in due to illegal instructions error. Have to rebuild entire the system (excluding kernel), but emerge refuses to do it.
Code: | emerge --pretend --update --deep --with-bdeps=y --newuse @world
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild U ] sys-libs/timezone-data-2014f [2014d] USE="-right_timezone%"
[ebuild U ] dev-perl/Text-CharWidth-0.40.0-r1 [0.40.0]
[ebuild U ] dev-perl/Text-WrapI18N-0.60.0-r1 [0.60.0]
[ebuild U ] app-portage/genlop-0.30.9-r1 [0.30.8-r2]
[ebuild U ] app-shells/bash-4.2_p52 [4.2_p45]
[ebuild U ] sys-apps/less-458 [457]
[ebuild R ] app-emulation/emul-linux-x86-qtlibs-20140508-r1 USE="(-mng%)"
[ebuild U ] app-office/libreoffice-l10n-4.2.6.3-r1 [4.2.5.2]
[ebuild R ~] games-strategy/0ad-0.0.16_alpha-r2 USE="-sound*"
[ebuild U ] sys-devel/make-4.0-r1 [3.82-r4] USE="-guile%"
[ebuild U ] dev-libs/libgpg-error-1.13 [1.12] ABI_X86="(64%*) (-32) (-x32)"
[ebuild U ] dev-perl/Locale-gettext-1.50.0-r1 [1.50.0]
[ebuild U ] sys-boot/grub-2.02_beta2-r2 [2.02_beta2] GRUB_PLATFORMS="-loongson%"
[ebuild U ] app-text/po4a-0.45 [0.42]
[ebuild U ] sys-apps/dbus-1.8.8 [1.8.6]
[ebuild U ] sys-fs/eudev-1.10-r2 [1.9-r2]
[ebuild U ] net-print/cups-1.7.5 [1.7.3]
[ebuild U ] app-crypt/gnupg-2.0.26 [2.0.25]
[ebuild U ] dev-vcs/git-2.0.4 [1.8.5.5]
[ebuild U ] app-office/libreoffice-bin-4.2.6.3 [4.2.5.2]
[ebuild U ] www-plugins/adobe-flash-11.2.202.406 [11.2.202.400]
[ebuild N ] kde-base/kactivities-4.12.5 USE="(-aqua) -semantic-desktop" |
Only 22 packages to rebuild though I made a CFLAGS changes. It's pretty wrong that only these 22 uses extended CPU instructions. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54220 Location: 56N 3W
|
Posted: Tue Oct 07, 2014 9:01 pm Post subject: |
|
|
creaker,
You need to do the build on a system that understands the illegal instructions.
You can't move the HDD to another system, then do the build. Well, it might work, it might not. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Tue Oct 07, 2014 9:58 pm Post subject: |
|
|
NeddySeagoon wrote: | creaker,
You need to do the build on a system that understands the illegal instructions.
You can't move the HDD to another system, then do the build. Well, it might work, it might not. |
Yes, I tried to rebuild a USB-HDD system at the parent-box that was used as a donor of the system (through chroot).
I think I have to build it from scratch with new make.conf.
I can't rebuild system on other machine even if I've wanted to do it - it's impossible because I even can't to log in there. |
|
Back to top |
|
|
creaker l33t
Joined: 14 Jul 2012 Posts: 651
|
Posted: Sun Oct 12, 2014 5:02 am Post subject: |
|
|
Well, I rebuilt a system wth generic CPU options and tested it for a few day at different machines (core i3 3210, core i3 2120, core i5 650, core 2 duo E8500, amd Phenom FX 9650, Athlon 64 X2 4200). All seems good.
Right now I have this setup at usb HDD. But I'd like to be able to put it to any occasional usb pen drive. In fact system works at any pen drive, but the speed is extremely low. Starting firefox takes half of minute, dolphin starts in 15 secs and so on. It isn't a pen drive issue, I tried few stick with read performance at range 17-20 Mb/sec. One of these sticks hosted remastered Debain in past that was amazingly fast. So I decided to put /usr into RAM disk, but failed - ran out of memory. I stripped /usr as much as I can (down to 1,9Gb), but still can't fit it to 4Gb of RAM. The last attempt I did was a putting only /usr/lib into RAM. I can fit into 4Gb, but can't understand why 1,0Gb of /usr/lib occupies 3Gb of RAM?
Code: | UsbGen cr # free
total used free shared buffers cached
Mem: 4045136 508896 3536240 8680 53448 224392
-/+ buffers/cache: 231056 3814080
Swap: 0 0 0
UsbGen cr # mount none -t tmpfs /mnt/ramdisk/
UsbGen cr # cp -a /usr/lib/* /mnt/ramdisk/
UsbGen cr # mount -o bind /mnt/ramdisk/ /usr/lib/
UsbGen cr # free
total used free shared buffers cached
Mem: 4045136 3520528 524608 1154576 402680 2765996
-/+ buffers/cache: 351852 3693284
Swap: 0 0 0 |
Moving /usr/lib to RAM makes a system WOW fast, all the apps including firefox starts in less then 1 sec, however I can't to run this system at boxes with RAM less of 4Gb.
I remember that remastered Debian stick was happy with 2Gb of RAM though.
Any thought on how to reduce a RAM usage?
P.S.
I have /usr, /home, /lib32, /lib64 squashed and mounting them at boot stage, if this info is a matters.
Code: | UsbGen cr # df -h
Filesystem Size Used Free Used% Mounted
/dev/sdb1 4,7G 2,4G 2,1G 54% /
udev 10M 4,0K 10M 1% /dev
tmpfs 396M 440K 395M 1% /run
shm 2,0G 22M 2,0G 2% /dev/shm
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
/dev/loop0 2,0G 22M 2,0G 2% /lib32
lib32Aufs 2,0G 22M 2,0G 2% /lib32
/dev/loop1 2,0G 22M 2,0G 2% /lib64
lib64Aufs 2,0G 22M 2,0G 2% /lib64
/dev/loop2 2,0G 22M 2,0G 2% /usr
usrAufs 2,0G 22M 2,0G 2% /usr
/dev/loop3 2,0G 22M 2,0G 2% /home
homeAufs 2,0G 22M 2,0G 2% /home
/mnt/ramdisk 2,0G 1,1G 857M 57% /usr/lib64
|
|
|
Back to top |
|
|
|