2

I've been building my own Linux distro, and I've stripped the binaries, etc. The system won't use GCC or development tools, as it will be a Chrome kiosk, so it would greatly help if I could strip down the system...

I was wondering, is there a way that I can delete all of the unused system files (like binaries, etc.) by watching what files/libraries are used during runtime? Maybe another method is preferred, but is there a way to accomplish something like this?

Francisco Tapia
  • 2,614
  • 4
  • 24
  • 43
Blender
  • 646
  • 1
  • 6
  • 20

5 Answers5

3

These are some things I would do:

  • Build my own kernel with no loadable modules. (Build in all the required modules.) Eliminates /lib/modules ..
  • Review the init scripts and drop any programs that are not required.
  • Use ldd on the programs that are run to identify the libaries that are required.
  • Identify which commands can be replaced by busybox, and build a custom busybox to supply only those commands.
  • Identify the programs required for support and add them in.

Consider looking at what is included in a distribution like OpenWRT to see what is required for a relatively base installation. Remove what your don't need, and add what your do. OpenWRT now has builder package which makes it easier to investigate the distribution.

BillThor
  • 10,899
  • 2
  • 25
  • 24
  • Wow, thanks! I'll have to rethink the kernel, as my OS will have to run a bunch of different setups, but I'll definitely try `ldd` and BusyBox. Thanks! – Blender Dec 09 '10 at 18:46
  • It it needs to run on a bunch of setups you may want to build modules, but likely a limited set. In that case consider locking the module set during startup. – BillThor Dec 10 '10 at 05:25
2

debootstrap is the tool you want. http://www.debian-administration.org/articles/426 . It's much better to build up rather than strip down.

  • Hmm, I'm building HLFS, so no Debian chroot jails for me! If I'm not mistaken, isn't this just a way to run a Debian install inside of a folder via `chroot`? – Blender Dec 09 '10 at 16:16
1

start from something like damn small Linux and build up from that. dsL image is at most 50 mb

bbaja42
  • 3,021
  • 1
  • 27
  • 30
  • Thanks, but I've already got a working HLFS system. All I need to do is remove all of the unused binaries and libraries, as they take up a lot of space (which I am trying to save)... – Blender Dec 09 '10 at 16:32
0

For building your own Linux filesystem try Buildroot. There are a lot of tutorials on the Internet.

redbeam_
  • 537
  • 5
  • 16
-1

Why bother? Is it security you're worried about, or space/memory? I would recommend: if in doubt, don't spend the time on it.

  • Simplicity => Security. If I have no servers, no applications, nothing that can be targeted, I'm pretty safe. Also, I am keeping the security libraries, so don't worry. – Blender Dec 09 '10 at 16:14
  • As for space, it feels bloated; 700MB for just Chrome and XOrg? That is the size of Ubuntu's disk, and *that* has a ton more packages. – Blender Dec 09 '10 at 16:14
  • 1
    That's likely compressed, though. – ceejayoz Dec 09 '10 at 16:17
  • A basic install of Ubuntu is ~ 1 GB, and I've seen Linux systems that are under 10 MB. It is compressed pretty well, though. – Blender Dec 09 '10 at 16:22
  • Note LFS is a learning tool. If you build everything as an individual, there's a chance of missing updates for [system software bugs](http://security.stackexchange.com/questions/68877/shellshock-dhcp-exploitation). LFS doesn't provide security support (the book points you to general sources like US CERT) or even use packages for clean updates (e.g. if files are removed)? ...ubuntu+apparmor isn't perfect but personally I've found tools around apt/dpkg quite useful for keeping a stripped-down system. 700MB doesn't sound wholly insane... I struggled to keep going on an EeePC 4GB. – sourcejedi May 26 '15 at 19:56