MeshBSD (under construction)
Well, I am entertained!!1!
http://www.kroah.com/log/linux/stable_api_nonsense.html
Am I just really entertained? IMHO this view on operating system design does
not reflect a so called adorable way to build a set of core components still
necessary for creating or implemnting operating systems and it is IMHO a bad
idea to implement an operating system kernel without a designed infrastructure
for its core components like device drivers or something else it is necessary
for this purpose, e. g. stable Kernel Programmer Interfaces [KPIs], stable
Device Driver Developement Kits, etc.
Yet, I've decided to create a generating set of components for building
operating systems for embedded systems and non stationary systems based on the
FreeBSD operating system and components adopted and ported from OpenBSD and
NetBSD operating system. Thus, it sounds like a provocation, but hold on, think
twice and ask yourself:
Does a monoculture of a particular operating
system kernel actually promise real freedom
on implementing free software?
This project is at an early stage!
Supported architechtures are MIPS and RISC-V.
This operation is divided into three major stages:
#1 Buildup of code-base as free generating set for base operating system.
#2 Divide set of given Makefiles and transition into a set of modularized
components acting as toolkit for generating an operating system targeting
embedded systems and mobile stations.
#3 Generate an developement environment for building aplications as
subset on e. g. X.org based GUI.
Well, there are some pending operational tasks
#1 Integration of OpenSMTPd(8) as replacement for
sendmail(8), but I'll not integrate the portable
version, because of some dependencies (!) like:
* autoconf (http://www.gnu.org/software/autoconf/)
* automake (http://www.gnu.org/software/automake/)
* bison (http://www.gnu.org/software/bison/)
or byacc (http://invisible-island.net/byacc/byacc.html)
* libtool (http://www.gnu.org/software/libtool/)
* openssl (http://www.openssl.org/)
* ...
are still increasing the complexity.
#2 Porting if_pppoe(4) from NetBSD for kernel ppp(4).
#3 Porting and refactoring i4b(4) on IEEE802.3 link-layer.
* implementaion of AF_ISDN protocol family
* implementaion of FRMR derived protocol performing SVC
* implementaion of LMI derived protocol on LME
Btw, only bearer services for audio / video intercom.
Additional information about contacting
If someone wants to contact me by electronic mail, use encryption!
Otherwise, any connection attempt will be discarded.
This is a necessary security measure, because I want to know exactly who is contacting me. This world is full of individuals whose are operating on one's own merits. :)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
mQENBFYMezIBCACo8X47yor6hI3Rwd2vYr+R2f35ZJw1Zq6qzQXYhWhn2CNf4gYJ
5+hEBi5LJcSFhSvujo/xy3OZzL8a4YN/vFWGTZhuyk20MOx96yjzLLbXD9lxHd+a
AoSPuPe78QSTAw7azv7PtUSTnH0KzLCC2Rh1yODYmU4bBw5Aeso/mmWNebh6hd7r
Azp3ruLji1YorWTUHWWDbq+EsB3bSvNq6hmGiOnTsWlhhdOre4ny0OD0Tig6OgFR
S3fkzofnroJN21MdAgofksaeClzdEgSDor1Yk/tcdCHRu4/kHEdEljD6YdpzWbKx
f6BsqMFLHKrksEF8H7oH+Cq3izXOeziy9TsVABEBAAG0Okhlbm5pbmcgTWF0eXNj
aG9rIDxoZW5uaW5nLm1hdHlzY2hva0BzdHVkLmZoLWZsZW5zYnVyZy5kZT6JATcE
EwEIACEFAlYMezICGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQzcSBpLKQ
n3Xocgf8Dcp8MoACABJbUDMHGzFOScLhSugj6zcWZVJ96Uyj1B4yrshk1GiSOid5
OkY+g0BLZDsZ6L/ikY55jh4FMRw6Ox6sh2NX1rT4TVVkJJwiG6KLTwvLpqknaRXX
SoSKRt+U2JYhVLX8UY5TGlqtz5jtUm6jB8i2W64EFXYGl161rELEYmpienHvrFH7
rDMIHdBNlc4bJRiJU/qN5/28+BPjnFmG2/xVv7NlnH01GTPIXx2WfmkcgqNnleZS
d74iTejqFtB3jMws9zSCgLK5G684YeFJbN0mYdnZ+JonwaGti4oV91Ey/1NN0dHH
dgiA/njv+Sf17fwDxHLcj7RMesjZ7bkBDQRWDHsyAQgAyZyyysgBBysI0UqYL/27
1mNWABM3Ok6MinkrCy/oeqvp0zj4xocfzvjqpNEC9R2tzIxCtni+c1T2a4eoLSvu
G2TRrncPxHSxvGCClwQxlkS5INp4Y2NCEq4s+Fo0OyTawXGTTTgNEPK8yviK+0nh
jcpEcCNhGMArkNR6G0W6M2k6v3k0A2fMJ0ARFFj85kpbPv1IMGLs8HbWUe2D/1KQ
rJsCGU5tjiOXYL1/KfXDBhfw+fwC5AM+Ndxlhpla3Z+0RaxCjvQT7Z501U311aMh
kbfmS+Llvq3cZNDleNkWkHsWYgYL4wZqnrVQDfeqzL+moFjBHtLn+ZZbLn6OYc1f
qQARAQABiQEfBBgBCAAJBQJWDHsyAhsMAAoJEM3EgaSykJ91zKoH/jzxQSy7pUZx
Pe4ktFRJwil8g6CGUncVaV+Sxe0A+52dlk85W/4F+wMROvg5tc98uZeLH8Ye0BSI
EDwJD5Iel9qI+qQegqzvGkjuJzZx86XhFWBa8dmIzRgqeAZrblmpv9k5V1cyMSUO
2v/GaJOu3P9Jb9RPR0YVsiZTs3+R1Z6V05pBdbMG5bUVHvjEIFahmHKc+cvxwjPV
wY7U3JsZk7bYZG05pUstLIuNJ//UMVjC/dM6ofKTyLknbKDYKvJvcmPBSSeC7VXg
u5E2GRq1FgrjmjTS8r+/zZfV31iFkIdc5gC9ipwBsA7H6Bx8lPP5M0l1MXS/wAWU
8GZ4NRztiBU=
=lsmx
-----END PGP PUBLIC KEY BLOCK-----
Please feel free to support me anytime.
TL-WR1043NDv2 (experimental)
Now, there exists an experimental firmware image
MeshBSD.tl-wr1043ndv2.201601291719.factory.bin
in releases directory (only) for demonstration purposes. Intentionally, this software is not released for use as production system or in context of production systems, because this software is not error-free.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Basic requirements for installation of (experimental) firmware image are:
* Soldered header on-board, which is used for serial
access through interconnected usb cable.
+-----+-----+-----+-----+
| VCC | GND | RX | TX |
+-----+-----+-----+-----+
3.3V
* Configured tftpd(8) daemon.
* Either in-kernel compiled or by kldload(8) attached uplcom(4) driver.
* At least cu(1) -- Call Unix.
On host running FreeBSD, access to serial console might be performed e. g. through use of priveleged terminal:
# cu -l /dev/ttyU0 -s 115200
Then, appliance (or router board) shall be switched on.
U-Boot 1.1.4 (Jun 13 2014 - 15:14:01)
ap135 - Scorpion 1.0DRAM:
sri
Scorpion 1.0
ath_ddr_initial_config(178): (16bit) ddr2 init
tap = 0x00000003
Tap (low, high) = (0x0, 0x1c)
Tap values = (0xe, 0xe, 0xe, 0xe)
64 MB
Flash Manuf Id 0xef, DeviceId0 0x40, DeviceId1 0x17
flash size 8MB, sector count = 128
Flash: 8 MB
Using default environment
*** Warning *** : PCIe WLAN Module not found !!!
*** Warning *** : PCIe WLAN Module not found !!!
In: serial
Out: serial
Err: serial
Net: ath_gmac_enet_initialize...
athrs_sgmii_res_cal: cal value = 0x6
No valid address in Flash. Using fixed address
No valid address in Flash. Using fixed address
ath_gmac_enet_initialize: reset mask:c02200
Scorpion ----> S17 PHY *
athrs17_reg_init: complete
: cfg1 0x80000000 cfg2 0x7114
eth0: ba:be:fa:ce:08:41
eth0 up
athrs17_reg_init_wan done
SGMII in forced mode
athr_gmac_sgmii_setup SGMII done
: cfg1 0x800c0000 cfg2 0x7214
eth1: ba:be:fa:ce:08:41
eth1 up
eth0, eth1
Setting 0x18116290 to 0x58b1a14f
Autobooting in 1 seconds
The booting procedure may interrupted by entering
tpl
within time intervall, shown as above. Then
ap135>
occours as prompt on screen, awaiting input.
ap135> printenv
shows environment for bootstrapping an operating system.
bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),6336k(rootfs),1408k(uImage),64k(mib0),64k(ART)
bootcmd=bootm 0x9f020000
bootdelay=1
baudrate=115200
ethaddr=0xba:0xbe:0xfa:0xce:0x08:0x41
ipaddr=192.168.1.111
serverip=192.168.1.100
dir=
lu=tftp 0x80060000 ${dir}u-boot.bin&&erase 0x9f000000 +$filesize&&cp.b $fileaddr 0x9f000000 $filesize
lf=tftp 0x80060000 ${dir}ap135${bc}-jffs2&&erase 0x9f050000 +0x630000&&cp.b $fileaddr 0x9f050000 $filesize
lk=tftp 0x80060000 ${dir}vmlinux${bc}.lzma.uImage&&erase 0x9f680000 +$filesize&&cp.b $fileaddr 0x9f680000 $filesize
stdin=serial
stdout=serial
stderr=serial
ethact=eth0
Environment size: 686/65532 bytes
It is obvious that host might be configured by
# ifconfig re0 inet 192.168.1.100/24 up
# route add -4 192.168.1.111 192.168.1.100
add host 192.168.1.111: gateway 192.168.1.100
in conjuction with
# cat >> /etc/inetd.conf << EOF
> tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
> EOF
then
# service inetd {one}{re}start
initializes tftpd(8) daemon manually.
ap135> tftpboot 0x80060000 MeshBSD.tl-wr1043ndv2.201601291719.factory.bin
loads
dup 1 speed 1000
Using eth1 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.111
Filename 'MeshBSD.tl-wr1043ndv2.201601291719.factory.bin'.
Load address: 0x80060000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#########
done
Bytes transferred = 6368768 (612e00 hex)
the (experimental) firmware image into random access memory starting at address 0x80060000 on (this) ap135 (router) board.
ap135> erase 0x9f020000 +0x7c0000
Erasing flash...
erases contents of flash memory at 0x9f020000 through 0x7c0000 bytes offset:
First 0x2 last 0x7d sector size 0x10000
125
Erased 124 sectors
The flash memory is now ready for copying in the firmware
ap135> cp.b 0x80060000 0x9f020000 0x7c0000
Copy to Flash... write addr: 9f020000
done
then
ap135> bootm 0x9f020000
starts bootstrapping.
## Booting image at 9f020000 ...
Uncompressing Kernel Image ... OK
Starting kernel ...
When operating system kernel and init(8) process are running, then
FreeBSD/mips (styx.testenv.local) (ttyu0)
login:
shall occour as login prompt on serial console. After logging in
login: root
by use of an empty password. It will be changed by
# passwd root
Changing local password for user
New Password:
Retype New Password:
then
# ifconfig
provides a listing
arge0: flags=8843 metric 0 mtu 1500
options=8
ether c4:6e:1f:b9:19:e1
media: Ethernet 1000baseT
status: active
arge1: flags=8843 metric 0 mtu 1492
options=8
ether c4:6e:1f:b9:19:e2
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet 1000baseT
status: active
lo0: flags=8049 metric 0 mtu 16384
options=600003
inet 127.0.0.1 netmask 0xff000000
groups: lo
about configured network interfaces on link-layer. Any persistent configuration on network interfaces shall described by
/etc/hostname.if
configuration file. Its contents provides either by dhclient(8) or ifconfig(8) accepted argument-vector for processing during execution of /etc/rc2, if and only if interface category was enlisted by
network_interface_types="arge"
variable in
/etc/rc.conf
configuration file. Implecitely,
# cat >> /etc/hostname.wlan0 << EOF
> create wlandev ath0 wlanmode adhoc
> inet 192.168.2.1 netmask 255.255.255.0 ssid tiamat
> mtu 1492
> up
> EOF
in conjunction with
network_interface_types="arge wlan"
creates an instance of wlan(4) device automatically. Therefore
# cfg_save
stores any in
/etc/cfg/manifest
enlisted and e. g. by
# cat >> /etc/cfg/manifest << EOF
> etc/hostname.wlan0
> EOF
additionally promoted
*** Storing configuration files from /etc/cfg/manifest -> /dev/map/cfg..
etc/cfg/manifest
etc/ppp/ppp.conf
etc/dhcpd.conf
etc/group
etc/hostapd.conf
etc/hostname.arge0
etc/hostname.arge1
etc/ipsec.conf
etc/login.conf
etc/master.passwd
etc/myname
etc/nsswitch.conf
etc/ntp.conf
etc/passwd
etc/pf.conf
etc/rc.conf
etc/services
etc/ttys
etc/wpa_supplicant.conf
etc/hostname.wlan0
36 blocks
0+1 records in
1+0 records out
65536 bytes transferred in 0.497583 secs (131709 bytes/sec)
*** Completed.
configuration file as compressed image into NVRAM. When
# reboot
takes place then
# ifconfig
shows
arge0: flags=8843 metric 0 mtu 1500
options=8
ether c4:6e:1f:b9:19:e1
media: Ethernet 1000baseT
status: active
arge1: flags=8843 metric 0 mtu 1492
options=8
ether c4:6e:1f:b9:19:e2
inet 192.168.1.1 netmask 0xffffff00 broadcast 255.255.255.0
media: Ethernet 1000baseT
status: active
lo0: flags=8049 metric 0 mtu 16384
options=600003
inet 127.0.0.1 netmask 0xff000000
groups: lo
wlan0: flags=8843 metric 0 mtu 1492
ether c4:6e:1f:b9:19:e0
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
media: IEEE 802.11 Wireless Ethernet autoselect mode 11ng
status: running
ssid tiamat channel 10 (2457 MHz 11g ht/40-) bssid 86:18:5a:e0:41:d5
country US ecm authmode OPEN privacy OFF txpower 27 scanvalid 60
protmode CTS ampdulimit 8k ampdudensity 8 shortgi wme burst ff
groups: wlan
enabled wlan(4) device. If e. g.
arge0
may configured by DHCP, then
# cat > /etc/hostname.arge0 << EOF
> dhcp
> EOF
overwrites contents of interface-specific configuration file and enables DHCP.
Some additional information:
* Easy editor ee(1) is useable for editing ascii encoded files.
* It is possible to perform NAT by pf(4) in conjunction with ppp(8).
* Handling of incoming PPPoE connections by pppoed(8) is possible.
* Manually manipulation of SAD / SPD for ipsec(4) by setkey(8).
* Utilizing gif(4), if_vether(4) and wlan(4) in conjunction with
if_bridge(4) is possible, e. g. in context with rfc-3378.
* Optional if_gre(4) and if_vlan(4) support.