forked from sabotage-linux/sabotage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
161 lines (108 loc) · 5.14 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
This is sabotage, an experimental distribution based on musl libc and busybox.
Currently sabotage supports i386 and x86_64, MIPS, PowerPC32 and ARM(v4t+).
For simplicity reasons, sabotage does *not* support cross-compilation.
In order to build for your desired platform, you need an existing native
environment (for example pre-built aboriginal linux qemu images).
Requirements:
- ~4G free disk space
- root access
- usual GCC 4 toolchain
- git
- a bootloader of your choice (extlinux is favored)
- lots of time and a fair bit of Linux knowledge
This system has been built on Debian 6.0 and 7.0, Ubuntu 13.04,
Suse 11.4, and aboriginal 1.1, 1.2 systems.
You can bootstrap your own build from the scripts at
https://github.com/rofl0r/sabotage
or use a ready-to-boot disk image either for qemu, vbox or to extract the rootfs,
to be found at:
http://mirror.wzff.de/sabotage/
or
http://foss.aueb.gr/mirrors/linux/sabotage/
You also can netboot the install kernel directly (use pxelinux from
somewhere).
READ THE COOKBOOK FIRST.
Build instructions: Caveat emptor, this is all pre-alpha!
DO NOT RUN SCRIPTS YOU HAVE NOT READ.
% cp KEEP/config.stage0 config
% vi config
# set SABOTAGE_BUILDDIR, A, and MAKE_THREADS variables.
# the other values can be left as-is usually.
% . ./config # required!
% ./build-stage 0 # build toolchain (~2min on an AMD FX 8core, 75min on ARM Cortex A8 800Mhz)
% ./enter-chroot # enter $R chrooted, needs root password
% cd /src
% vi config # set your MAKE_THREADS, etc
% . config
% butch install stage1
# and after that, feel free to install optional packages:
# you can look at what's available using 'ls /src/pkg'
# if you want the default kernel (otherwise you have to build it yourself)
% butch install kernel
% butch install xorg # install everything needed to get xfbdev
% butch install pkg # installs useful things, such as file, git, gdb ...
% butch install world #installs almost everything
Run "butch" and look at the usage information it outputs for further options.
butch uses build templates, please take a look at KEEP/butch_template_configure_cached.txt
to see how it works.
when you're done, exit the chroot and use utils/write-hd-image.sh to create an image file.
this can be directly booted in qemu, to use it in vbox use VBoxManage convertfromraw.
or you can simply copy the rootfs in $R to your medium of choice.
*** RUNNING SABOTAGE FOR THE FIRST TIME ***
The default root password is "sabotage".
as usual,
% source /src/config
so that butch has its environment variables set.
you may want to generate some sshd-keys for sshd to use; use
% butch install sshd-keys
the sshd itself can be started using /sbin/sshd
if you need dhcp, run
% butch install ndhcp-init
this will create users and chroot for ndchp to use, afterwards you use
% /etc/rc.dhcp start
to run it.
an alternate dhcp client is uclibc's udhcpc,
which can be launched using /bin/dhclient.
otherwise use ifconfig, route and /etc/resolve.conf to configure your static ip.
you can of course put it into a script, and launch it automatically using
/etc/rc.local
for example
% echo nameserver 8.8.8.8 > /etc/resolv.conf
% ifconfig eth0 192.168.1.2 netmask 255.255.255.0
% route add default gw 192.168.0.1
NOTE TO CONTRIBUTORS
if you want to add packages, start from KEEP/package.template .
please do not use HTTPS or FTP mirrors.
HTTPS is unsupported by busybox wget, and FTP is a broken protocol from the 70ies
which needs a second data connection (i.e. open port on the client).
this prevents FTP from working when behind a NAT router or socks proxy.
Downloads from git or other source repositories is an absolute no-go.
please use unified diff format (diff -u) for patches, as this usually allows
to use the same patches on newer versions as well.
since sabotage ships all tarballs when an ISO or HD image is distributed (to
fulfill the GPL), space considerations are a top issue.
so if available, ALWAYS USE a TAR.XZ (preferred) or TAR.BZ2 download URL.
in the former case, xz has to be added to the [deps] section.
it is recommend that you create a git branches for your work:
this allows me to checkout your changes and rebase as i see fit,
and you can easily pull back into your master without getting merge conflicts.
CONTACT
There is a mailinglist [email protected], mail
[email protected] and follow instructions to get
on it. Archives are at http://openwall.com/lists/sabotage/
You can also /join #sabotage or #musl on irc.freenode.net for realtime help.
*** SABOTAGE IN USERSPACE or "Co-Musl" ***
this is another mode that lets you use sabotage packages in a custom prefix.
IT IS HIGHLY EXPERIMENTAL at this point. so expect some packages failing to build.
(for usage parallel to an existing system, without chroot.)
this mode is not heavily optimized or tested, and builds some stuff that is not really
necessary. however its quite handy to use sw on an existing system without having to
use a chroot.
cp KEEP/config.local .
nano config.local # edit paths
. ./config.local
./build-stage u
# after finished, you can
cd $R
export PATH="$R/bin:$PATH"
butch install ncurses nano etc etc