|
Size: 9189
Comment:
|
Size: 9300
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 65: | Line 65: |
| Line 67: | Line 66: |
| }}} {{{#!highlight sh |
|
| Line 73: | Line 75: |
| pkg_install-20160410nb1 Package management and administration tools for pkgsrc libarchive-3.2.1nb1 Library to read/create different archive formats pkgin-0.9.4nb2 Apt / yum like tool for managing pkgsrc binary packages https://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/README-all.html |
# pkg_install-20160410nb1 Package management and administration tools for pkgsrc # libarchive-3.2.1nb1 Library to read/create different archive formats # pkgin-0.9.4nb2 Apt / yum like tool for managing pkgsrc binary packages # https://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/README-all.html |
| Line 87: | Line 89: |
| Execute this command to extract and rehash all CA root certificates distributed by the Mozilla Project, so that they can be used by third party applications using OpenSSL. It also creates a single file certificate bundle in PEM format which can be used by applications using GnuTLS. |
# Execute this command to extract and rehash all CA root certificates # distributed by the Mozilla Project, so that they can be used by third # party applications using OpenSSL. It also creates a single file # certificate bundle in PEM format which can be used by applications using # GnuTLS. |
| Line 93: | Line 95: |
| To mark these certificates as trusted for users of gnupg2, do the following (assuming default PKG_SYSCONFBASE and a Bourne shell): # mkdir -p /usr/pkg/etc/gnupg # cd /usr/pkg/etc/gnupg # for c in /etc/openssl/certs/*.pem; do > openssl x509 -in $c -noout -fingerprint|sed 's|^.*=\(.*\)|\1 S|' > done > trustlist.txt |
# To mark these certificates as trusted for users of gnupg2, do # the following (assuming default PKG_SYSCONFBASE and a Bourne shell): # # mkdir -p /usr/pkg/etc/gnupg # # cd /usr/pkg/etc/gnupg # # for c in /etc/openssl/certs/*.pem; do # > openssl x509 -in $c -noout -fingerprint|sed 's|^.*=\(.*\)|\1 S|' # > done > trustlist.txt |
| Line 103: | Line 105: |
| Line 185: | Line 186: |
| ~/.profile {{{ |
=== ~/.profile === {{{#!highlight sh |
| Line 342: | Line 343: |
| * export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -m)/7.0/All * pkg_add bash ~/.profile {{{ |
{{{#!highlight sh export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -m)/7.0/All pkg_add bash }}} === ~/.profile === {{{#!highlight sh |
NetBSD
NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices.
https://www.netbsd.org/docs/guide/en/index.html
Install
VirtualBox installation
Start VirtualBox
New
Name NetBSD 7.0.1
Choose type BSD
version NetBSD 64 bit
RAM 512 MB
Create virtual disk dynamic VDI with Fixed size 8 GB
Create
Start VM
Choose ISO NetBSD-7.0.1-amd64.iso
Start
1 - Install NetBSD
a - installation messages in english
q - keyboard type portuguese
a - install netbsd to hard disk
shall we continue? (b) yes
which disk? a) wd0
a - this is the correct geometry
b - use the entire disk
install netbsd bootcode? a) yes
b - use existing partition sizes
x - partition sizes ok
name harddisk: VBOX HARDDISK
shall we continue? yes
a) use bios console
x) exit
a) full installation
install from: a) cd-rom
Hit enter to continue
a) configure net a) wm0 autoselect autoconfig? yes
hostname: netbsd
domain name:
they are ok? yes
install in /etc? yes
b) timezone Portugal
c) root shell /bin/sh
d) root password ********
e) enable installation x)
f) fetch and unpack x)
g) enable sshd yes
h) enable ntpd yes
i) run ntpdate at boot yes
j) enable mdnsd no
k) enable xdm no
l) enable cgd yes
m) enable lvm no
n) enable raidframe yes
o) add a user vitor add to group wheel, user shell sh
x) finished configuring
Hit enter to continue
release ISO
reboot
login as root 1 startx # it starts OK
2 setxkbmap pt
3 cc --version
4 pkg_info
5 putty vitor@localhost -P 2222
6 pkg_info
7 # pkg_install-20160410nb1 Package management and administration tools for pkgsrc
8 # libarchive-3.2.1nb1 Library to read/create different archive formats
9 # pkgin-0.9.4nb2 Apt / yum like tool for managing pkgsrc binary packages
10 # https://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/README-all.html
11 pkg_add openjdk8-1.8.102
12 PKG_PATH="ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/7.0.1/All/"
13 export PKG_PATH
14 PATH="/usr/pkg/sbin:$PATH"
15 export PATH
16 pkg_add openjdk8-1.8.92nb2
17 cd /usr/pkg/java/openjdk8/bin
18 ./java -version
19 pkg_add python27-2.7.11nb2
20
21 # Execute this command to extract and rehash all CA root certificates
22 # distributed by the Mozilla Project, so that they can be used by third
23 # party applications using OpenSSL. It also creates a single file
24 # certificate bundle in PEM format which can be used by applications using
25 # GnuTLS.
26 # mozilla-rootcerts install
27 # To mark these certificates as trusted for users of gnupg2, do
28 # the following (assuming default PKG_SYSCONFBASE and a Bourne shell):
29 # # mkdir -p /usr/pkg/etc/gnupg
30 # # cd /usr/pkg/etc/gnupg
31 # # for c in /etc/openssl/certs/*.pem; do
32 # > openssl x509 -in $c -noout -fingerprint|sed 's|^.*=\(.*\)|\1 S|'
33 # > done > trustlist.txt
34 python2.7
35 openjdk8-java -version
36 ntpdate pt.pool.ntp.org
https://www.netbsd.org/docs/guide/en/chap-cons.html#chap-cons-wscons-wskbd-keymaps
- 8.1.2.1.1. Hacking wscons to add a keymap
http://julio.meroh.net/2004/07/playing-with-netbsd-keymaps.html
etc/profile
Custom service
Add to /etc/rc.conf
1 beat=YES
/etc/rc.d/beat
/home/vitor/beat.py
1 #!/usr/bin/python
2 import threading
3 import time
4 import os
5 import syslog
6 import datetime
7 import sys
8 import signal
9
10 def termHandler(signal,frame):
11 print('Signal term caught')
12 sys.exit(0)
13
14 if __name__=="__main__":
15 f=open('/var/run/beat.pid','wa')
16 f.write('%d'%(os.getpid()))
17 f.close()
18 signal.signal(signal.SIGTERM,termHandler)
19
20 while True:
21 syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) )
22 time.sleep(5)
In /root/.profile uncomment the following to allow binary packages installations
export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -m)/7.0/All
Change prompt
~/.profile
1 PS1="$(date +'%Y-%m-%dT%H:%M:%S') $(whoami)@${HOST}:${PWD}\$ "
cbeat service
cbeat.c
1 // cc cbeat.c -o cbeat
2
3 #include<stdio.h>
4 #include<syslog.h>
5 #include<unistd.h>
6 #include<signal.h>
7 #include<stdlib.h>
8
9 #define TRUE 1
10
11 void signalHandler(int signal){
12 if(signal == SIGTERM){
13 syslog(LOG_INFO , "Caught SIGTERM signal. Going to exit ...");
14 exit(0);
15 }
16 }
17
18 int main(){
19 int pid = getpid();
20 FILE* handle = fopen("/var/run/cbeat.pid","wb");
21 fprintf(handle, "%d" ,pid);
22 fclose(handle);
23
24 // callback to signalHandler function
25 signal(SIGTERM , signalHandler );
26
27 while(TRUE){
28 syslog(LOG_INFO,"cbeat test");
29 sleep(5);
30 }
31
32 return 0;
33 }
/etc/rc.d/cbeat
Add in /etc/rc.conf
1 cbeat=YES
POSIX threads
POSIX threads in NetBSD with signal handling.
kill -s TERM <PID>
kill -s USR1 <PID>
kill -s USR2 <PID>
1 /*
2 cc pthread.c -o pthread -lpthread ./pthread
3 ./pthread
4 */
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <pthread.h>
8 #include <string.h>
9 #include <signal.h>
10 #include <unistd.h>
11
12 typedef struct data {
13 char msg[128];
14 int count;
15 } threadData;
16
17
18 void signalHandler(int signal){
19 if(signal == SIGTERM){
20 printf("Caught SIGTERM signal. Going to exit ...\n");
21 exit(0);
22 }
23
24 if(signal == SIGUSR1){
25 printf("USR1 caught \n");
26 }
27
28 if(signal == SIGUSR2){
29 printf("USR2 caught \n");
30 }
31 }
32
33 void *threadCallback( void *ptr ) {
34 char *message = (char *) ((threadData *) ptr)->msg;
35 int count = ((threadData *) ptr)->count;
36
37 while(count<10) {
38 printf("%s count %d thread id %u \n", message,count , pthread_self() );
39 sleep(1);
40 count++;
41 }
42 }
43
44 int main() {
45 struct sigaction signalAction;
46 memset (&signalAction, '\0', sizeof(signalAction));
47 signalAction.sa_handler = &signalHandler;
48
49 pthread_t thread1Id;
50 int thread1Ret;
51 threadData thread1Data;
52 strcpy(thread1Data.msg,"Message 1234");
53 thread1Data.count=5;
54
55 pthread_t thread2Id;
56 int thread2Ret;
57 threadData thread2Data;
58 strcpy(thread2Data.msg,"Message 54321");
59 thread2Data.count=3;
60
61 printf("Main thread id %u \n" , pthread_self() );
62
63 thread1Ret = pthread_create( &thread1Id, NULL, threadCallback, (void*) &thread1Data);
64 thread2Ret = pthread_create( &thread2Id, NULL, threadCallback, (void*) &thread2Data);
65
66 if(thread1Ret || thread2Ret) {
67 fprintf(stderr,"Error creating threads ");
68 exit(EXIT_FAILURE);
69 }
70
71 // callback to signalHandler function
72 sigaction(SIGTERM , &signalAction, NULL);
73 sigaction(SIGUSR1 , &signalAction, NULL);
74 sigaction(SIGUSR2 , &signalAction, NULL);
75
76 pthread_join( thread1Id, NULL);
77 pthread_join( thread2Id, NULL);
78 printf("Normal exit\n");
79 exit(EXIT_SUCCESS);
80 }
Bash
~/.profile
C - read and write text
1 #include <stdio.h>
2 #define SIZE 5
3 #define FILENAME "test.txt"
4
5 void clear(char* buffer){
6 for(int i=0;i<SIZE;i++) *(buffer)=0x0;
7 }
8
9 int main(void) {
10 printf("Hello World\n");
11 FILE* f = fopen(FILENAME,"w");
12 char buffer[SIZE];
13
14 for(int i=0;i<3;i++){
15 fwrite("aaaa\n",5,1,f);
16 }
17
18 fclose(f);
19
20 FILE* r = fopen(FILENAME,"r");
21 clear(buffer);
22
23 /*fread(buffer,SIZE,1,r);
24 printf("%s" , buffer);
25 fclose(r);*/
26
27 while( fread(buffer,SIZE,1,r)!= 0){
28 printf("%s" , buffer);
29 clear(buffer);
30 }
31
32 fclose(r);
33
34 return 0;
35 }
