Skip to content

Commit 23ca772

Browse files
paulzholbradfitz
authored andcommitted
env/freebsd-amd64: run buildlet daemonized
Use deamon(8) to run /buildlet: set the workdir to /, redirect std{in,out,err} to /dev/null and restart it if it exits. Move most configuration files out of make.bash into their own files. Drop drill/dig DNS lookup check, the resolve is performed by curl anyways. set -m 1G parameter (RAM size) for qemu-system-x86_64, the default 128M might be too low. Fixes golang/go#22895 Change-Id: I98ef48c865c9ff56547de1ac37565512f2211b5b Reviewed-on: https://go-review.googlesource.com/82896 Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 0c1c3ca commit 23ca772

File tree

4 files changed

+65
-61
lines changed

4 files changed

+65
-61
lines changed

env/freebsd-amd64/buildlet

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/sh
2+
# PROVIDE: buildlet
3+
# REQUIRE: NETWORKING DAEMON
4+
# BEFORE: LOGIN
5+
6+
. /etc/rc.subr
7+
8+
name=buildlet
9+
rcvar=buildlet_enable
10+
11+
procname=/buildlet
12+
pidfile="/var/run/${name}.pid"
13+
command=/usr/sbin/daemon
14+
command_args="-r -fc -p ${pidfile}"
15+
command_args="${command_args} ${procname}"
16+
start_precmd="${name}_prestart"
17+
stop_cmd=":"
18+
19+
load_rc_config $name
20+
: ${buildlet_enable:="NO"}
21+
22+
buildlet_prestart()
23+
{
24+
local buildlet_url
25+
local retval
26+
27+
info $(netstat -rn)
28+
info $(cat /etc/resolv.conf)
29+
30+
buildlet_url=$(/usr/local/bin/curl -s -H "Metadata-Flavor: Google" \
31+
http://metadata.google.internal/computeMetadata/v1/instance/attributes/buildlet-binary-url)
32+
33+
/usr/local/bin/curl -s -o /buildlet "${buildlet_url}" >/dev/null 2>&1
34+
retval=$?
35+
if [ $retval -ne 0 ]; then
36+
warn "failed to download buildlet from ${buildlet_url}"
37+
poweroff
38+
return 1
39+
fi
40+
41+
chmod a+x /buildlet
42+
}
43+
44+
run_rc_command "$1"

env/freebsd-amd64/loader.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
autoboot_delay="-1"
2+
beastie_disable="YES"
3+
loader_logo="none"
4+
hw.memtest.tests="0"
5+
console="comconsole,vidconsole"
6+
hw.vtnet.csum_disable=1
7+
hw.vtnet.mq_disable=1
8+
kern.timecounter.hardware=ACPI-safe
9+
aesni_load="YES"
10+
nvme_load="YES"

env/freebsd-amd64/make.bash

Lines changed: 5 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,22 @@ case $1 in
2525
9.3)
2626
readonly VERSION=9.3
2727
readonly VERSION_TRAILER="-20140711-r268512"
28-
readonly DNS_LOOKUP=dig
2928
readonly SHA256=4737218995ae056207c68f3105c0fbe655c32e8b76d2160ebfb1bba56dd5196f
3029
;;
3130

3231
10.3)
3332
readonly VERSION=10.3
3433
readonly VERSION_TRAILER=
35-
# BIND replaced by unbound on FreeBSD 10, so drill(1) is the new dig(1)
36-
readonly DNS_LOOKUP=drill
3734
readonly SHA256=1d710ba643bf6a8ce5bff5a9d69b1657ccff83dd1f2df711d9b4e02f9aab7d06
3835
;;
3936
11.0)
4037
readonly VERSION=11.0
4138
readonly VERSION_TRAILER=
42-
readonly DNS_LOOKUP=drill
4339
readonly SHA256=f9f7fcac1acfe210979a72e0642a70fcf9c9381cc1884e966eac8381c724158c
4440
;;
4541
11.1)
4642
readonly VERSION=11.1
4743
readonly VERSION_TRAILER=
48-
readonly DNS_LOOKUP=drill
4944
readonly SHA256=233c6b269a29c1ce38bb4eb861251d1c74643846c1de937b8e31cc0316632bc0
5045
;;
5146
*)
@@ -68,63 +63,12 @@ fi
6863
cp FreeBSD-${VERSION:?}-RELEASE-amd64${VERSION_TRAILER}.raw disk.raw
6964

7065
mkdir -p iso/boot iso/etc iso/usr/local/etc/rc.d
66+
cp loader.conf iso/boot
67+
cp rc.conf iso/etc
68+
cp buildlet iso/usr/local/etc/rc.d
7169

72-
cat >iso/boot/loader.conf <<EOF
73-
autoboot_delay="-1"
74-
beastie_disable="YES"
75-
loader_logo="none"
76-
hw.memtest.tests="0"
77-
console="comconsole,vidconsole"
78-
hw.vtnet.csum_disable=1
79-
hw.vtnet.mq_disable=1
80-
kern.timecounter.hardware=ACPI-safe
81-
aesni_load="YES"
82-
nvme_load="YES"
83-
EOF
84-
85-
cat >iso/etc/rc.conf <<EOF
86-
hostname="buildlet"
87-
ifconfig_vtnet0="SYNCDHCP mtu 1460"
88-
sshd_enable="YES"
89-
buildlet_enable="YES"
90-
EOF
91-
92-
cat >iso/usr/local/etc/rc.d/buildlet <<EOF
70+
cat >iso/install.sh <<'EOF'
9371
#!/bin/sh
94-
95-
# PROVIDE: buildlet
96-
# REQUIRE: sshd
97-
# BEFORE: securelevel
98-
99-
. /etc/rc.subr
100-
101-
name="buildlet"
102-
start_cmd="\${name}_start"
103-
stop_cmd=""
104-
105-
buildlet_start()
106-
{
107-
PATH=/bin:/sbin:/usr/bin:/usr/local/bin; export PATH
108-
echo "starting buildlet script"
109-
netstat -rn
110-
cat /etc/resolv.conf
111-
${DNS_LOOKUP:?} metadata.google.internal
112-
(
113-
set -e
114-
export PATH="\$PATH:/usr/local/bin"
115-
/usr/local/bin/curl -o /buildlet \$(/usr/local/bin/curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/buildlet-binary-url)
116-
chmod +x /buildlet
117-
exec /buildlet
118-
echo "giving up"
119-
sleep 10
120-
)
121-
poweroff
122-
}
123-
load_rc_config \$name
124-
run_rc_command "\$1"
125-
EOF
126-
127-
cat >iso/install.sh <<EOF
12872
set -x
12973
13074
mkdir -p /usr/local/etc/rc.d/
@@ -148,7 +92,7 @@ sleep 2
14892
# TODO(wathiede): set serial output so we can track boot on GCE.
14993
expect <<EOF
15094
set timeout 600
151-
spawn qemu-system-x86_64 -display curses -smp 2 -drive if=virtio,file=disk.raw,cache=none -cdrom config.iso -net nic,model=virtio -net user
95+
spawn qemu-system-x86_64 -display curses -smp 2 -m 1G -drive if=virtio,file=disk.raw,cache=none -cdrom config.iso -net nic,model=virtio -net user
15296
15397
# Speed-up boot by going in to single user mode.
15498
expect "Welcome to FreeBSD"

env/freebsd-amd64/rc.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
hostname="buildlet"
2+
rc_info="YES"
3+
rc_startmsgs="YES"
4+
ifconfig_vtnet0="SYNCDHCP mtu 1460"
5+
sshd_enable="YES"
6+
buildlet_enable="YES"

0 commit comments

Comments
 (0)