aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: 0a963373e45423a81d4bb43278e1f5747bdec617 (plain)
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
# sources

(ordered chronologically by access time)

- [Kbuild object variable name rationale][kbuild-obj-var]
- [Kbuild kernel module setup guide][kbuild-module-makefile]
- [`struct file_operations`][c-struct-file-operations] documentation, also
    - write(2)
    - read(2)
- (Sadly) [the Linux kernel source][kernel] itself, especially
    - drivers/char/random.c
    - drivers/char/mem.c
- [Linux kernel labs - character device drivers][kernel-labs-chrdev]
- [Core API][core-api]
- [Driver API][driver-api]

[kbuild-obj-var]: https://docs.kernel.org/kbuild/makefiles.html#loadable-module-goals-obj-m
[kbuild-module-makefile]: https://www.kernel.org/doc/html/latest/kbuild/modules.html#creating-a-kbuild-file-for-an-external-module
[c-struct-file-operations]: https://www.kernel.org/doc/html/latest/filesystems/vfs.html#struct-file-operations
[kernel]: https://github.com/torvalds/linux
[kernel-labs-chrdev]: https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
[core-api]: https://docs.kernel.org/core-api/kernel-api.html
[driver-api]: https://www.kernel.org/doc/html/latest/driver-api/infrastructure.html

# tips

- When the kernel documentation references manpages, these actually contain
  useful information. Manpages are not only for commands, but also include
  detailed documentation for the syscall interface and other C APIs.

  Since most of the manpages referenced by the kernel are from section 2 (on
  system calls), you should append the number between brackets to the `man`
  command, i.e. to read 'write(2)' use the command `man 2 write`.
- Use `dmesg` with the `-w` or `-W` option (see man dmesg(1))

# direct ethernet setup

You can use NetworkManager to both share your computer's existing network
connection and start a DHCP server for assigning IP addresses automatically.
This allows you to ssh into the BeagleBone, as well as share your internet
connection over a single direct ethernet connection.

1. Connect the BeagleBone to your computer using an ethernet cable, and make
   sure the BeagleBone is on. The ethernet port's link lights should start
   blinking.
2. Run `nmcli device` on your computer, the shortest device name starting with
   `enp` or `eth` is likely your ethernet port's name:

   ```
   $ nmcli device             
   DEVICE         TYPE      STATE                   CONNECTION 
   enp0s25        ethernet  connected               enp0s25    
   wlan0          wifi      connected               wifi       
   lo             loopback  connected (externally)  lo         
   ```

   (in my case, the adapter is enp0s25)
3. Run `nmcli connection modify ADAPTER ipv4.method shared ipv4.addresses
   192.168.2.2/24` (replace ADAPTER with the ethernet adapter name you found).
4. Run `nmcli device connect ADAPTER`.
5. (Optional) run `nmap -sn 192.168.2.0/24` **as root** to find the IP address
   the BeagleBone got.