On Feb 14, 2012, at 8:44 AM, John Burrell wrote:

> Has anyone written a script or scripts which automate the lfs build using 
> MSB's package user system?

I have a build-system for LFS.

It builds the "whole" thing, chapters 5, 6, 7, 8, and--ha--9.

It does not, however, use the MSB package system.  But, I'm very interested in 
the install-as-package-user system, it would be awesome if someone wanted to 
hack that on.  Having said that, has anyone verified that it doesn't create 
security risks that might be outweighed by installation as root?  I've read the 
paper; I understand it helps alleviate issues with installs; I'd also like to 
know from the people who've tried it if there any vulnerabilities created.

> I've used a hacked version of the package user system for some time now and I 
> like it a lot. It's very easy to control what gets installed and to catch 
> Makefiles which trample all over your system. Just take a look at cups to see 
> what I mean.

I've got a project on github you can play with.  It doesn't require any user 
interaction beyond an initial script that asks for certain answers before the 
build starts.

> I've built lfs a few times and I'm not doing it again manually, so can anyone 
> help me?  If not I'll write it myself, but I don't want to reinvent the wheel.

You're welcome to look at my stuff.  I'd be happy to look at patches, if you 
want to put MSB on top of it.  Shouldn't be too hard with my setup:

        https://github.com/qrux/xlapp

You'll want to note that I make assumptions about your host system:

        * It uses Grub Legacy.

        * /boot is a separate partition from the current root or /mnt/lfs.

        * /mnt/lfs is a separate partition.

        * You want a "vanilla" LFS install, which does not create a ramdisk.

        * Your glibc is fairly current (supports $n$ password hashing).

Also, my build system is geared toward a user who ultimately wants to install 
Xen on the bare-metal, and then run the machine as a virtualized cluster.  
That's what all the additional "stuff" is, most of which you can completely 
ignore if you just want an LFS build.

It has two build "modes"; it can run a "quick build", where it doesn't run most 
of the time-consuming regression checks in chapter 6.  And a "full build", 
where it does run those same tests.  It has a nice feature where you can open 
another window (on host system), and run a script called 'scan' which tells you 
which packages have been built and how much total time has been taken.  The 
original window--the one you build in--doesn't generate any output, (to reduce 
CPU usage, particularly if you're SSH'ed in to the host, as I am), but instead 
writes to a log file.  In fact, scan just scans that log file every once in a 
while for an update.

My system goes on to install a few packages beyond vanilla LFS:

        * bc
        * openssl
        * wget
        * CA-certs
        * tcp_wrappers
        * sysstat
        * openssh

These packages are just enough to allow you to SSH in (bc is needed by openssl, 
and wget is needed by CA-certs--which is needed by ssl/ssh, tcp-wrappers is 
usable by openssh--and had nice scripts to ameliorate brute-force attacks).  
Strictly speaking, sysstat isn't a necessary part of this sequence, and may be 
refactored out in the future.

In addition, the opening configuration script asks for an SSH key to install, 
so you can SSH in as root.  I realize this is outside of vanilla LFS (indeed, I 
installed these packages from the BLFS instructions).  But, I will probably 
never remove these from my core install (aside from probably sysstat).

It also installs these packages:

        * which
        * ntp
        * cpio
        * hdparm
        * net-tools
        * bonnie++
        * xlapp-watchdog

I may refactor these out, since I'm sure some people won't want them.  The last 
one is my own...It reverts /boot/grub/menu.lst to boot the host system in the 
event that no one shuts off the watchdog within 30 seconds (the interval is 
easily changed).  For me, running this build in a dim colo setting means that 
sometimes a boot script gets borked.  It's nice to have a way to reboot the 
system.

TL;DR - Feel free to hack on it.  It's 99.9% shell-scripting, so nothing funky 
like Python, Java, etc.  I'd be quite interested to see if MSB can be grafted 
on, at which point, if it doesn't create vulnerabilities, I'd like to merge 
that in.  It's still a work-in-progress for me, and I'd quite like someone else 
to take a look!

HTH,
        Q

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page

Reply via email to