Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hashstyling &Prelinks


Published on

This is a presentation based tutorial to activate prelinks and compile a hashstyled system on gentoo.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Hashstyling &Prelinks

  1. 1. Hashstyling &Prelinks Horsepower your Linux system
  2. 2. What “distro” do you use?  Ubuntu  Slackware  Debian  Fedora  BSD!!  Gentoo!!!!!
  3. 3. Is your box sleepy!!  If you have to wait for a program to start then you better be using windows……..  How much time does KDE or Firefox take to load??  Let’s give some power pills to your box I look sick!!! Nah
  4. 4. Here are the pills……  Hastyling • you got to compile to hash style, preferably Gentoo or BSD  Prelinks  Will work on any distro, but 64bit will be voila…
  5. 5. What are Prelinks???  Well there are libraries to be loaded at startup of a program…  Most of them are shared with other programs  Thus a lot of symbolic references needs to be resolved while startup.  This is fast for smaller programs, but  For programs like open office and Firefox- Pain  My open office writer takes 20sec to load before prelinking and 11 after….  Firefox takes <3 in place of 9  Not to mention KDE loading at all( you time that)
  6. 6. Prelinks drawbacks  You need to re-prelink every time you update your libraries or anything.  Size of executables increases( just penalty on space though)  It’s static. Libraries are bonded to the executables, It doesn’t work with dynamically loaded libraries  So, the improvement in programs like open office is far lesser…  Don’t worry…… Just keep following
  7. 7. Doing it with style: Hashstlye  The new improvement in binutils and glibc called direct linking or –Bdirect is the next improvement in the field of faster computing.  Careful… It’s still under development and not officially adopted.  With Hashstyling people(l33t ones!!) have seen 50% improvements in dynamic linking , as in load times  All of this is owing to new improvements in the new DT_GNU_HASH or gnu.hash. The older version was .hash.
  8. 8. How to prelink?  It’s basically same in all distros  Emerge or apt-get or yast or yum anything you use  Just install “prelink”  Run this command  #prelink –amfRv  a = all packages  m = Conserve the virtual memory space  f = force linking  R = Random – randomize the address ordering, this enhances security against buffer overflows.  v = I won’t tell that( no price for guessing either!)
  9. 9. Enhance KDE  What you did on the last page was good enough to see the power, but some more tweaking is no harm  Set KDE_IS_PRELINKED=quot;truequot; in /etc/env.d/*kdepaths* to inform KDE about the prelinking.  Prelink cronjob: Set it up as a cron job, if you keep updating your libraries  Generally not required for quarterly updaters
  10. 10. Just in case : if you don’t like it  To remove prelinks:  Remove the prelink cronjob  Run $prelink –au  Just uninstall it as you do for any other software  Gentooers $ emerge –aC prelink  And there are gentoo forums and irc channels to discuss any meshups( and there will be!!) you encounter
  11. 11. Hashstyling: Gentoo only  Get THE latest version of binutils , glibc and gcc(4.2+) .( edit package.keywords)  Follow the steps in order:  1) emerge binutils  $ binutils-config -l  $ binutils-config # (Replace # with the corresponding number to binutils-  $ emerge glibc
  12. 12. Edit make.conf  Open /etc/make.conf and make this entry exactly with NO SPACES what so ever.  LDFLAGS=quot;-Wl,--hash-style=both“  If you already use some LD flags, change them and input these.  Now we will rebuild the system with these new flags.  $emerge –e world  $emerge prelink  $prelink –amfRv
  13. 13. Crosscheck  Just run this on the executable you want to check  $ readelf -a /usr/bin/nano | grep GNU_HASH [ 4] .gnu.hash GNU_HASH 00000000004009a0 000009a0 0x000000006ffffef5 (GNU_HASH) 0x4009a0 More information on  Please ensure you are emerging binutils >=  That’s it guys: You have a very fast system now, but don’t go and mess with a “l33t” guy yet. There are other ways of improving performance.
  14. 14. Upgrade from patch to newer version  In case you have an old hashstyled system which was based on patches then follow exactly, or good luck restarting the whole process again  Remove -Wl,--hash-style from LDFLAGS  Get the latest overlay from the svn  Run  $ LD_X=1 emerge -1 coreutils binutils glibc  Add -Wl,--hash-style=both to LDFLAGS again  Run:  $ LD_X=1 emerge -e world
  15. 15. Continued  Emerge prelink  Prelink –amfRv  Do not turn off power during the whole process  That’s it  In case…..System crashed!! Rebuild or go dig Gentoo forums  I haven’t tested it, but a gentoo veteran have:
  16. 16. Gentoo hashstlye thread   You may find the solutions to all your problems here,  If you don’t post one….
  17. 17. Some glichy packages  X11-drm  Maadwifi-ng  While compiling these packages just comment LDFLAGS in make.conf
  18. 18. The next level……  Hope you have your CHOST and CFLAGS and USE flags right  Don’t you dare use anything below i686  Add “ –O2 –march=<your-cpu> -fomit-frame-pointer”  MAKEOPTS =“-j?” Google for your processor  If you arte having more than one system give a look to distcc  And ya ccache  Above two will save a lot of compile time.
  19. 19. Wanna ask something…..  I know you have lot of question, just throw them, answer is NOT guaranteed 
  20. 20. If you have time go Gentoo… Thanks!!!