added more structure
This commit is contained in:
124
docs/tech_docs/linux/linux_audio.md
Normal file
124
docs/tech_docs/linux/linux_audio.md
Normal file
@@ -0,0 +1,124 @@
|
||||
To further enrich your ultimate media workstation compilation, especially tailored for Linux-based music production, you might consider including sections on:
|
||||
|
||||
### Advanced Configuration and Optimization Tips for Linux
|
||||
|
||||
- **Real-time Kernel**: Discuss the benefits of using a real-time kernel for lower audio latency and how to install it.
|
||||
- **System Tuning**: Guidelines for tuning the system for audio production, such as adjusting the `swappiness` parameter, managing power settings for performance, and configuring real-time access for audio applications.
|
||||
- **Jack Configuration**: Tips for optimizing Jack Audio Connection Kit settings, like frame/period settings for lower latency without xruns (buffer underflows and overflows).
|
||||
|
||||
### Networking and Collaboration Tools
|
||||
|
||||
- **Network Audio System (NAS)**: Explaining the setup and use of network audio protocols like Dante or AVB on Linux for studio setups that require audio over Ethernet solutions.
|
||||
- **Collaborative Platforms**: Introduction to platforms or tools that facilitate remote collaboration on music projects with other artists, such as using Git for version control of project files.
|
||||
|
||||
### Backup and Version Control
|
||||
|
||||
- **Backup Solutions**: Options for automatic backups, both locally (e.g., using `rsync` or `Timeshift`) and cloud-based solutions tailored for large audio files.
|
||||
- **Version Control for Audio Projects**: How to use version control systems, like Git, with large binary files (using `git-lfs` - Git Large File Storage), to manage and track changes in music projects.
|
||||
|
||||
### Custom Hardware and DIY Projects
|
||||
|
||||
- **Raspberry Pi & Arduino Projects**: Examples of DIY MIDI controllers, effects pedals, or custom audio interfaces using Raspberry Pi or Arduino, including links to tutorials or communities.
|
||||
- **Open Source Hardware**: Discuss open-source hardware options for music production, such as modular synthesizers or audio interfaces that offer unique customization opportunities.
|
||||
|
||||
### Community and Learning Resources
|
||||
|
||||
- **Forums and Online Communities**: List of active Linux audio production forums and communities (e.g., LinuxMusicians, KVR Audio’s Linux forum) for advice, sharing projects, and collaboration.
|
||||
- **Tutorials and Courses**: Resources for learning more about music production on Linux, including YouTube channels, online courses, and blogs dedicated to Linux-based audio production.
|
||||
|
||||
### Environmental and Ergonomic Considerations
|
||||
|
||||
- **Workspace Design**: Tips for setting up an ergonomic and inspiring workspace, including monitor placement, studio chair selection, and acoustic treatment.
|
||||
- **Power Consumption**: Discussion on optimizing power usage for sustainability, including energy-efficient hardware choices and software settings.
|
||||
|
||||
Incorporating these sections can provide a comprehensive view that goes beyond hardware and software selection, covering the setup, optimization, and practical use of a Linux-based music production workstation. This holistic approach not only caters to technical setup but also to the creative workflow, collaboration, and health of the music producer.
|
||||
|
||||
---
|
||||
|
||||
Building the ultimate media workstation on Linux, especially with a focus on music production, involves selecting hardware and software that complement each other. Jack Audio Connection Kit (JACK) plays a pivotal role in this setup by handling audio and MIDI routing between applications in real-time. Here's a suggested setup that balances quality, versatility, and compatibility with Linux:
|
||||
|
||||
### Computer Hardware
|
||||
|
||||
- **Processor (CPU)**: Aim for a high-performance CPU with multiple cores/threads, such as an AMD Ryzen 9 or an Intel Core i9.
|
||||
- **Memory (RAM)**: Music production, especially with multiple plugins and virtual instruments, can be memory-intensive. 32 GB of RAM is a good starting point.
|
||||
- **Storage**: SSDs (Solid State Drives) for the operating system and software for fast boot and load times, and additional SSD or HDD storage for audio files, samples, and libraries.
|
||||
- **Graphics Card**: While not critical for audio work, a stable and supported graphics card can enhance visual workloads and support multiple monitors, such as NVIDIA or AMD Radeon series.
|
||||
|
||||
### Audio Interface
|
||||
|
||||
- **Universal Audio Apollo Twin**: Known for its superior audio quality and built-in UAD processing for plugins. It offers excellent compatibility with Linux through JACK.
|
||||
- **Focusrite Scarlett Series**: Offers a range of options from solo artists to bands, known for great preamps and solid Linux support.
|
||||
- **RME Audio Interfaces**: Known for low latency and reliability, RME interfaces like the Fireface series work well with Linux.
|
||||
|
||||
### MIDI Devices
|
||||
|
||||
For MIDI controllers and keyboards, compatibility with Linux is generally good, as most are class-compliant and don't require specific drivers. Here are top candidates:
|
||||
|
||||
- **Native Instruments Komplete Kontrol S-Series**: Offers great build quality, deep software integration, and comes in various sizes to suit different needs.
|
||||
- **Arturia KeyLab MkII**: Available in 49 and 61-key versions, these controllers are well-built and come with a great selection of controls and integration with Arturia’s software suite.
|
||||
- **Akai Professional MPK Mini MkII**: A compact option great for small studios or mobile setups, offering pads, knobs, and keys.
|
||||
- **Novation Launchkey Series**: Known for its integration with Ableton Live, it's also a great general MIDI controller for other DAWs available on Linux.
|
||||
- **Roli Seaboard**: For those looking into more expressive MIDI control, the Roli Seaboard offers unique touch-sensitive keys for a wide range of expression.
|
||||
|
||||
### Monitors and Headphones
|
||||
|
||||
- **Monitors**: Yamaha HS series, KRK Rokit series, or Adam Audio T series monitors are popular choices offering clear and accurate sound reproduction.
|
||||
- **Headphones**: Audio-Technica ATH-M50x, Beyerdynamic DT 770 Pro, or Sennheiser HD 650 headphones are excellent for mixing and monitoring.
|
||||
|
||||
### Software
|
||||
|
||||
- **DAW**: Ardour or Bitwig Studio are great choices for Linux, offering robust features for recording, mixing, and mastering.
|
||||
- **Plugins and Effects**: Consider adding LADSPA, LV2, and VST plugins through providers like Calf Studio Gear for effects, and instruments from Pianoteq or Native Instruments for high-quality sounds.
|
||||
- **JACK Audio Connection Kit**: For managing audio routing between applications, ensuring low latency and real-time audio processing.
|
||||
|
||||
### Additional Tools
|
||||
|
||||
- **MIDI Interface**: For integrating older MIDI hardware that doesn't support USB MIDI, consider interfaces from iConnectivity or Roland.
|
||||
- **External Storage**: For backups and large sample libraries, external SSDs or NAS solutions are recommended.
|
||||
- **Power Conditioner**: A rack-mounted power conditioner to protect your equipment and manage power distribution.
|
||||
|
||||
This setup provides a comprehensive platform for music production, from composing and recording to mixing and mastering, all while ensuring compatibility and performance under Linux. Remember, the ultimate workstation is highly personal and should be tailored to your specific needs, preferences, and workflow.
|
||||
|
||||
---
|
||||
|
||||
Linux offers a variety of music production tools, ranging from Digital Audio Workstations (DAWs) to synthesizers, samplers, and audio processing plugins. Here's an overview of some popular music producer tools available on Linux, suitable for tasks like composing, recording, mixing, and mastering:
|
||||
|
||||
### Digital Audio Workstations (DAWs)
|
||||
|
||||
1. **Ardour**: Ardour is a powerful and flexible DAW designed for recording, editing, mixing, and mastering audio and MIDI projects. It supports a wide range of audio-for-video post-production formats, plugins, and automation.
|
||||
|
||||
2. **LMMS (Linux MultiMedia Studio)**: LMMS is a free DAW that is great for producing music. It includes a Song-Editor for composing, a Beat+Bassline Editor for beat and bassline creation, and it supports VST plugins.
|
||||
|
||||
3. **Qtractor**: Qtractor is an audio/MIDI multi-track sequencer application written in C++ with the Qt framework. It's designed to be a DAW for personal home studios and has a focus on simplicity and ease of use.
|
||||
|
||||
4. **Tracktion T7**: This DAW, known for its single-screen interface and drag-and-drop functionality, is also available for Linux. It offers unlimited audio and MIDI tracks and a wide range of built-in effects and instruments.
|
||||
|
||||
### Synthesizers and Samplers
|
||||
|
||||
1. **ZynAddSubFX**: An open-source software synthesizer capable of making a countless number of instruments, from some common heard from expensive hardware to interesting sounds that you'll boost to an amazing universe of sounds.
|
||||
|
||||
2. **Hydrogen**: A powerful, easy-to-use drum machine. It's user-friendly, has a strong sequencer, supports pattern-based programming, and is very suitable for creating drum tracks for any kind of music genre.
|
||||
|
||||
3. **LinuxSampler**: An open-source audio sampler that provides high stability, efficiency, and a flexible modularity that aims at superior authenticity of instrument emulation.
|
||||
|
||||
### Audio Processing and Effects
|
||||
|
||||
1. **Guitarix**: A virtual guitar amplifier for Linux running on Jack Audio Connection Kit. It is free software and comes with a variety of effects and simulations.
|
||||
|
||||
2. **Calf Studio Gear**: Offers a range of audio processing plugins specifically designed for professional audio production beneath the Linux operating system. It includes compressors, equalizers, reverbs, and other effects.
|
||||
|
||||
3. **LADSPA/LV2 Plugins**: Linux Audio Developer's Simple Plugin API (LADSPA) and LV2 are standards for audio plugins and virtual instruments. There are hundreds of plugins available under these standards, covering a wide range of effects and instruments.
|
||||
|
||||
### Sound Libraries and Instruments
|
||||
|
||||
1. **Sonic Pi**: Although more of an educational tool, Sonic Pi is a code-based music creation and performance tool that can be used for live coding performances.
|
||||
|
||||
2. **SuperCollider**: Another programming environment for real-time audio synthesis and algorithmic composition, allowing for an exploratory approach to sound design and music production.
|
||||
|
||||
### Audio Editors
|
||||
|
||||
1. **Audacity**: A free, open-source, cross-platform audio software for multi-track editing and recording. It offers features like noise reduction, effects, and support for a wide range of formats.
|
||||
|
||||
2. **Ocenaudio**: A cross-platform, easy-to-use, fast, and functional audio editor. It's ideal for people who need to edit and analyze audio files without complications.
|
||||
|
||||
These tools collectively cover a broad spectrum of music production needs, from the initial composition and sound design to the final mixing and mastering stages. Many of these applications support JACK (Jack Audio Connection Kit), which allows for advanced audio routing between applications and real-time operation, crucial for live performance setups and studio work.
|
||||
51
docs/tech_docs/linux/linux_containers.md
Normal file
51
docs/tech_docs/linux/linux_containers.md
Normal file
@@ -0,0 +1,51 @@
|
||||
Certainly! We can reorganize and refine the general purpose grouping to provide a more functional categorization that highlights the primary use cases of these Linux distributions. Let's focus on the typical environments where each distribution excels, such as server, desktop, development, embedded systems, and specialized distributions for specific tasks like security.
|
||||
|
||||
### General Purpose Grouping
|
||||
|
||||
#### Server-Focused
|
||||
These distributions are optimized for server use, providing stability, scalability, and extensive package support. They are commonly used in data centers and for hosting applications.
|
||||
- **Debian**
|
||||
- **Ubuntu Server**
|
||||
- **CentOS** (Historically, though it's now EOL and replaced by CentOS Stream)
|
||||
- **AlmaLinux**
|
||||
- **Fedora Server**
|
||||
- **Oracle Linux**
|
||||
- **OpenSUSE Leap**
|
||||
- **Amazon Linux** (Optimized for AWS)
|
||||
- **Springdale Linux**
|
||||
- **OpenEuler**
|
||||
|
||||
#### Desktop-Focused
|
||||
These are known for user-friendly interfaces and broad multimedia support, making them ideal for personal computing.
|
||||
- **Ubuntu Desktop**
|
||||
- **Mint** (Known for its user-friendliness and elegance)
|
||||
- **Fedora Workstation** (Known for latest features and great GNOME support)
|
||||
- **OpenSUSE Tumbleweed** (Rolling release for latest software)
|
||||
- **ArchLinux** (Appeals to more technical users who prefer fresh software)
|
||||
|
||||
#### Security and Penetration Testing
|
||||
Designed for security testing, ethical hacking, and forensic tasks, these distributions come with specialized tools and environments.
|
||||
- **Kali Linux**
|
||||
|
||||
#### Lightweight or Minimal
|
||||
Ideal for older hardware, containers, or where minimal resource usage is crucial. They provide the basics without unnecessary extras.
|
||||
- **Alpine Linux** (Popular in container environments due to its minimal footprint)
|
||||
- **ArchLinux** (Minimal base installation)
|
||||
- **BusyBox** (Used in extremely constrained environments like embedded systems)
|
||||
|
||||
#### Development and Customization
|
||||
These distributions appeal to developers and those who prefer to tailor their operating system extensively.
|
||||
- **Gentoo** (Source-based, allows optimization for specific hardware)
|
||||
- **Funtoo** (A variant of Gentoo with enhanced features like advanced networking)
|
||||
- **NixOS** (Unique approach to package management for reproducible builds)
|
||||
- **Void Linux** (Uses runit and offers choice of libc, appealing to enthusiasts and developers)
|
||||
|
||||
#### Specialized or Niche
|
||||
These cater to specific needs or communities, often focusing on particular use cases or user preferences.
|
||||
- **OpenWRT** (Designed specifically for routers and network devices)
|
||||
- **Devuan** (Debian without systemd, for those preferring other init systems)
|
||||
- **Plamo Linux** (A Japanese community distribution)
|
||||
- **Slackware** (Known for its simplicity and adherence to UNIX principles)
|
||||
- **ALT Linux** (Focused on Russian-speaking users and schools)
|
||||
|
||||
This revised categorization should provide a clearer view of where each Linux distribution excels and for what purposes they are typically chosen. This can help users or administrators make more informed decisions based on their specific needs.
|
||||
244
docs/tech_docs/linux/linux_lab_starting.md
Normal file
244
docs/tech_docs/linux/linux_lab_starting.md
Normal file
@@ -0,0 +1,244 @@
|
||||
OpenWRT Container (ID: 100):
|
||||
```bash
|
||||
pct create 100 /var/lib/vz/template/cache/openwrt-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype unmanaged --hostname openwrt-0 --tag network --storage local-lvm --cores 2 --memory 128 --swap 0 --rootfs local-lvm:1,size=1G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
Kali Linux Container (ID: 200):
|
||||
```bash
|
||||
pct create 200 /var/lib/vz/template/cache/kali-default-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype debian --hostname kali-0 --tag tools --storage local-lvm --cores 2 --memory 2048 --swap 512 --rootfs local-lvm:1,size=16G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
Alpine Container (ID: 300):
|
||||
```bash
|
||||
pct create 300 /var/lib/vz/template/cache/alpine-default-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype alpine --hostname alpine-0 --tag docker --storage local-lvm --cores 2 --memory 1024 --swap 256 --rootfs local-lvm:1,size=8G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
|
||||
```bash
|
||||
pct start 100
|
||||
```
|
||||
```bash
|
||||
pct stop 100
|
||||
```
|
||||
```bash
|
||||
pct destroy 100
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Here's the updated response with the additional information on installing packages via the CLI on OpenWrt:
|
||||
|
||||
### Proxmox Container Creation
|
||||
|
||||
```bash
|
||||
opkg install qemu-ga
|
||||
```
|
||||
|
||||
### OpenWRT Firewall Configuration
|
||||
|
||||
The network interface and firewall configuration remains the same as before:
|
||||
|
||||
#### **Define Network Interfaces**:
|
||||
Update `/etc/config/network` to reflect `eth1` as the WAN interface:
|
||||
|
||||
```bash
|
||||
config interface 'wan'
|
||||
option ifname 'eth1'
|
||||
option proto 'dhcp'
|
||||
```
|
||||
|
||||
#### **Update Firewall Settings**:
|
||||
Append rules to `/etc/config/firewall` to allow SSH and HTTPS access:
|
||||
|
||||
```bash
|
||||
config zone
|
||||
option name 'wan'
|
||||
list network 'wan'
|
||||
option input 'REJECT'
|
||||
option output 'ACCEPT'
|
||||
option forward 'REJECT'
|
||||
option masq '1'
|
||||
option mtu_fix '1'
|
||||
|
||||
config rule
|
||||
option name 'Allow-SSH'
|
||||
option src 'wan'
|
||||
option proto 'tcp'
|
||||
option dest_port '22'
|
||||
option target 'ACCEPT'
|
||||
|
||||
config rule
|
||||
option name 'Allow-HTTPS'
|
||||
option src 'wan'
|
||||
option proto 'tcp'
|
||||
option dest_port '443'
|
||||
option target 'ACCEPT'
|
||||
```
|
||||
|
||||
### Installing Packages via CLI
|
||||
|
||||
To install packages via the CLI on OpenWrt, you can use the `opkg` package management tool. Here's how to go about it:
|
||||
|
||||
1. **Update the Package List**: Before installing any new packages, it's a good practice to update the list of packages to ensure you are installing the latest versions available. You can do this by running:
|
||||
|
||||
```
|
||||
opkg update
|
||||
```
|
||||
|
||||
2. **Install a Package**: Once the package list is updated, you can install a package by using the `opkg install` command followed by the package name. For example, if you want to install the QEMU Guest Agent, you would use:
|
||||
|
||||
```
|
||||
opkg install qemu-ga
|
||||
```
|
||||
|
||||
3. **Check Dependencies**: `opkg` automatically handles dependencies for the packages you install. If additional packages are required to fulfill dependencies, `opkg` will download and install them as well.
|
||||
|
||||
4. **Configure Packages**: Some packages may require configuration after installation. OpenWrt might save configuration files in `/etc/config/`, and you might need to edit these files manually or through a web interface (if you have LuCI installed).
|
||||
|
||||
5. **Managing Packages**: Besides installing, you can also remove packages with `opkg remove` and list installed packages with `opkg list-installed`.
|
||||
|
||||
6. **Find Available Packages**: To see if a specific package is available in the OpenWrt repository, you can search for it using:
|
||||
|
||||
```
|
||||
opkg list | grep <package-name>
|
||||
```
|
||||
|
||||
These steps should help you manage packages on your OpenWrt device from the command line. For more detailed information or troubleshooting, you can refer to the OpenWrt documentation or community forums.
|
||||
|
||||
### Applying the Configuration
|
||||
|
||||
After updating the configuration files:
|
||||
|
||||
- **Restart Network Services**:
|
||||
```bash
|
||||
/etc/init.d/network restart
|
||||
```
|
||||
|
||||
- **Reload Firewall Settings**:
|
||||
```bash
|
||||
/etc/init.d/firewall restart
|
||||
```
|
||||
|
||||
This setup reduces the memory and storage footprint of the OpenWRT container while maintaining the necessary network and firewall configurations for SSH and HTTPS access. It also provides guidance on installing and managing packages using the `opkg` tool in OpenWrt.
|
||||
|
||||
Remember to test connectivity, functionality, and package installations thoroughly after applying these changes to ensure the reduced resource allocation meets your requirements and the necessary packages are installed correctly.
|
||||
|
||||
---
|
||||
|
||||
The container creation command you provided is close, but let's make a few adjustments to optimize it for a small footprint Alpine container. Here's the updated command:
|
||||
|
||||
```bash
|
||||
pct create 200 /var/lib/vz/template/cache/alpine-3.17-default_20230502_amd64.tar.xz --unprivileged 1 --arch amd64 --ostype alpine --hostname alpine-0 --storage local-lvm --memory 128 --swap 0 --rootfs local-lvm:2,size=1G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
|
||||
Changes made:
|
||||
- Updated the template file name to `alpine-3.17-default_20230502_amd64.tar.xz` to use a specific Alpine version. Replace this with the actual template file name you have downloaded.
|
||||
- Changed `--ostype` to `alpine` instead of `unmanaged`. This allows Proxmox to apply Alpine-specific configurations.
|
||||
- Reduced the memory to 128MB (`--memory 128`) to minimize the footprint. Adjust this value based on your requirements.
|
||||
- Removed the extra `\\` characters, as they are not needed in this command.
|
||||
|
||||
After creating the container, you can configure the network interfaces and firewall rules similar to the OpenWRT example:
|
||||
|
||||
1. Update `/etc/network/interfaces` to configure `eth1` as the WAN interface:
|
||||
|
||||
```
|
||||
auto eth1
|
||||
iface eth1 inet dhcp
|
||||
```
|
||||
|
||||
2. Configure the firewall rules in `/etc/iptables.rules` to allow SSH and HTTPS access:
|
||||
|
||||
```
|
||||
*filter
|
||||
:INPUT ACCEPT [0:0]
|
||||
:FORWARD ACCEPT [0:0]
|
||||
:OUTPUT ACCEPT [0:0]
|
||||
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
|
||||
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
|
||||
-A INPUT -i eth1 -j REJECT --reject-with icmp-port-unreachable
|
||||
COMMIT
|
||||
```
|
||||
|
||||
3. Apply the network configuration and firewall rules:
|
||||
|
||||
```bash
|
||||
service networking restart
|
||||
iptables-restore < /etc/iptables.rules
|
||||
```
|
||||
|
||||
4. Install and configure any additional packages you need using Alpine's package manager, `apk`. For example, to install the QEMU Guest Agent:
|
||||
|
||||
```bash
|
||||
apk update
|
||||
apk add qemu-guest-agent
|
||||
```
|
||||
|
||||
Remember to thoroughly test the container's functionality and security after applying these configurations to ensure it meets your requirements.
|
||||
|
||||
---
|
||||
|
||||
To create a right-sized Kali Linux container for typical use, you can use the following command:
|
||||
|
||||
```bash
|
||||
pct create 300 /var/lib/vz/template/cache/kali-default-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype debian --hostname kali-0 --storage local-lvm --memory 1024 --swap 512 --rootfs local-lvm:2,size=8G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
|
||||
Explanation of the command:
|
||||
- `pct create 300`: Creates a new container with ID 300.
|
||||
- `/var/lib/vz/template/cache/kali-default-rootfs.tar.xz`: Specifies the path to the Kali Linux template file.
|
||||
- `--unprivileged 1`: Runs the container as an unprivileged user.
|
||||
- `--arch amd64`: Sets the container architecture to 64-bit.
|
||||
- `--ostype debian`: Sets the OS type to Debian, as Kali Linux is based on Debian.
|
||||
- `--hostname kali-0`: Sets the container's hostname to "kali-0".
|
||||
- `--storage local-lvm`: Uses the local LVM storage for the container.
|
||||
- `--memory 1024`: Allocates 1GB of memory to the container.
|
||||
- `--swap 512`: Allocates 512MB of swap space to the container.
|
||||
- `--rootfs local-lvm:2,size=8G`: Creates an 8GB root filesystem for the container on the local LVM storage.
|
||||
- `--net0 name=eth0,bridge=vmbr0,firewall=1`: Configures the first network interface (eth0) to use the vmbr0 bridge and enables the firewall.
|
||||
- `--net1 name=eth1,bridge=vmbr1,firewall=1`: Configures the second network interface (eth1) to use the vmbr1 bridge and enables the firewall.
|
||||
|
||||
After creating the container, you can configure the network interfaces and firewall rules as needed. For example, you can update `/etc/network/interfaces` to configure `eth1` as the WAN interface:
|
||||
|
||||
```
|
||||
auto eth1
|
||||
iface eth1 inet dhcp
|
||||
```
|
||||
|
||||
You can also configure firewall rules using `iptables` or by modifying the `/etc/pve/firewall/300.fw` file to allow incoming traffic on specific ports or services.
|
||||
|
||||
Remember to update and upgrade the Kali Linux packages inside the container and install any additional tools you require for your typical use case.
|
||||
|
||||
Note: The resource allocation (memory, swap, and disk size) provided in this example is a general recommendation. You may need to adjust these values based on your specific requirements and the tasks you intend to perform with the Kali Linux container.
|
||||
|
||||
---
|
||||
|
||||
Here are the adjusted container creation commands with scaled-down resources:
|
||||
|
||||
OpenWRT Container (ID: 100):
|
||||
```bash
|
||||
pct create 100 /var/lib/vz/template/cache/openwrt-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype unmanaged --hostname openwrt-0 --tag network --storage local-lvm --memory 128 --swap 0 --rootfs local-lvm:1,size=1G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
Kali Linux Container (ID: 200):
|
||||
```bash
|
||||
pct create 200 /var/lib/vz/template/cache/kali-default-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype debian --hostname kali-0 --tag tools --storage local-lvm --memory 2048 --swap 512 --rootfs local-lvm:1,size=16G --net0 name=eth0,bridge=vmbr0,firewall=1 --net1 name=eth1,bridge=vmbr1,firewall=1
|
||||
```
|
||||
Alpine Container (ID: 300):
|
||||
```bash
|
||||
pct create 300 /var/lib/vz/template/cache/alpine-default-rootfs.tar.xz --unprivileged 1 --arch amd64 --ostype alpine --hostname alpine-0 --tag docker --storage local-lvm --memory 1024 --swap 256 --rootfs local-lvm:1,size=8G --net0 bridge=vmbr1,name=eth0,ip=dhcp,ip6=dhcp,type=veth,firewall=1
|
||||
```
|
||||
|
||||
```bash
|
||||
pct stop 300
|
||||
```
|
||||
```bash
|
||||
pct destroy 300
|
||||
```
|
||||
|
||||
Changes:
|
||||
- Reduced memory to 512MB
|
||||
- Reduced swap to 256MB
|
||||
- Reduced rootfs size to 4GB
|
||||
Changes:
|
||||
- Reduced memory to 64MB
|
||||
- Reduced rootfs size to 512MB
|
||||
|
||||
Please note that these resource adjustments are based on general recommendations for minimal resource usage. Depending on your specific use case and the applications you plan to run inside the containers, you might need to fine-tune these values further.
|
||||
|
||||
Remember to monitor the performance and resource utilization of your containers after creating them with these scaled-down resources. If you encounter any issues or need more resources, you can always adjust the values accordingly using the `pct resize` command.
|
||||
166
docs/tech_docs/linux/linux_music_production.md
Normal file
166
docs/tech_docs/linux/linux_music_production.md
Normal file
@@ -0,0 +1,166 @@
|
||||
Certainly, let's create a guide focusing on how your current gear integrates into the Linux-based music production setup we've outlined, ensuring you make the most of each piece of equipment.
|
||||
|
||||
### Integration Guide for Your Music Production Gear
|
||||
|
||||
#### Gear Overview
|
||||
- **Shure SM58-LC Microphone**: A dynamic vocal microphone, legendary for its reliability and sound quality.
|
||||
- **Novation Launchkey Mini MK3**: A compact MIDI keyboard with pads, knobs, and keys, designed for intuitive control over virtual instruments and DAW functions.
|
||||
- **PreSonus ATOM**: A pad controller optimized for beat making and performance with tight DAW integration.
|
||||
- **Focusrite Scarlett 2i2 (3rd Gen)**: A 2-in/2-out USB audio interface with high-quality preamps, ideal for recording vocals and instruments.
|
||||
- **beyerdynamic DT 770 Pro 80 Ohm**: Closed-back studio headphones, offering detailed sound reproduction for mixing and critical listening.
|
||||
|
||||
#### Integrating Each Piece of Gear
|
||||
|
||||
##### Shure SM58-LC Microphone
|
||||
- **Usage**: Primarily for recording vocals and live instruments. Connect it to one of the preamps on your Focusrite Scarlett 2i2. It’s particularly useful for capturing clear and powerful vocal takes, thanks to its tailored vocal response and background noise rejection.
|
||||
- **Integration Tip**: For recording in Ardour, ensure the Scarlett 2i2 is selected as your input device. Apply EQ and compression using Calf Studio Gear plugins within Ardour to enhance the recorded vocals further.
|
||||
|
||||
##### Novation Launchkey Mini MK3
|
||||
- **Usage**: For playing and recording MIDI parts, controlling DAW functions, and triggering samples or loops. The pads can be particularly useful for drum programming in conjunction with LMMS or Hydrogen.
|
||||
- **Integration Tip**: Connect via USB and ensure it's recognized by your DAW (LMMS or Ardour). You may need to manually map some controls depending on the software. Use it to play virtual instruments or control software synthesizers like Helm for expressive performances.
|
||||
|
||||
##### PreSonus ATOM
|
||||
- **Usage**: Similar to the Launchkey Mini but focused more on beat making and sample triggering. Offers great tactile feedback and responsiveness for programming drums or triggering loops.
|
||||
- **Integration Tip**: Use ATOM for drum programming in LMMS or triggering samples in Ardour. The integration might require some manual mapping but enhances hands-on control over rhythm production.
|
||||
|
||||
##### Focusrite Scarlett 2i2 (3rd Gen)
|
||||
- **Usage**: The core audio interface for your setup, handling all audio inputs and outputs. Use it to connect your Shure SM58 for recording and the DT 770 Pro for monitoring.
|
||||
- **Integration Tip**: Ensure Linux recognizes the Scarlett 2i2 (most modern distributions will automatically). Select it as your primary audio device in JACK (using `qjackctl` or similar tools) for low-latency audio processing. It’s critical for recording high-quality audio and monitoring your mix accurately.
|
||||
|
||||
##### beyerdynamic DT 770 Pro 80 Ohm
|
||||
- **Usage**: For critical listening, mixing, and mastering. These headphones will provide a clear and detailed soundstage for making precise mixing decisions, especially in environments where studio monitors are not feasible.
|
||||
- **Integration Tip**: Connect them directly to your Scarlett 2i2’s headphone output. When mixing in Ardour, reference your mix on these headphones to make detailed EQ, compression, and level adjustments using Calf Studio Gear.
|
||||
|
||||
### General Tips for Integration
|
||||
|
||||
- **Familiarize With Software**: Spend time understanding how each piece of hardware is recognized and functions within your DAW. This might involve configuring MIDI settings in LMMS or Ardour or setting up audio routing in JACK.
|
||||
- **Optimize Your Workflow**: Arrange your physical setup for ease of use. For example, keep your MIDI controllers within easy reach for quick access to their controls while arranging or mixing.
|
||||
- **Monitor Levels**: Use the Focusrite Scarlett 2i2 to carefully monitor input and output levels during recording and mixing, ensuring optimal audio quality and preventing clipping.
|
||||
- **Custom Mapping**: Explore custom MIDI mapping in your DAW to make the most of the Novation Launchkey Mini MK3 and PreSonus ATOM’s pads, knobs, and keys for hands-on control over your software.
|
||||
|
||||
By integrating your existing gear with the Linux-based DAW setup, you're equipped with a powerful, flexible music production environment. Each piece of gear complements the software tools and expands your creative possibilities, from recording and beat making to detailed mixing and mastering.
|
||||
|
||||
---
|
||||
|
||||
Your Linux-based music production setup is structured to support a broad range of tasks, including remixing, beat making, and vocal manipulation, without the need for live performance tools. This comprehensive guide encapsulates everything you need to know to create a powerful digital audio workstation (DAW) environment that caters specifically to your production interests.
|
||||
|
||||
### Comprehensive Linux-Based Music Production Setup
|
||||
|
||||
#### Core Music Production DAW: Ardour
|
||||
- **Role**: Serves as the central hub for all recording, editing, arranging, and mixing tasks.
|
||||
- **Key Benefits**:
|
||||
- Comprehensive support for audio and MIDI editing.
|
||||
- Extensive plugin compatibility for effects and processing.
|
||||
- Ideal for detailed vocal manipulation and complex project arrangements.
|
||||
|
||||
#### Beat Making & Composition: LMMS
|
||||
- **Role**: Primary platform for crafting beats, melodies, and electronic compositions.
|
||||
- **Key Benefits**:
|
||||
- User-friendly interface for synthesizing sounds and sequencing beats.
|
||||
- Built-in samplers and VST support enhance sound design capabilities.
|
||||
|
||||
#### Vocal and Stem Separation: Spleeter
|
||||
- **Role**: Extracts vocals and instrumental parts from full mixes using machine learning.
|
||||
- **Key Benefits**:
|
||||
- Efficient isolation of vocals for remixing and sampling.
|
||||
- Facilitates creative use of existing tracks by separating them into usable stems.
|
||||
|
||||
#### Effects, Mastering, & Sound Processing: Calf Studio Gear
|
||||
- **Role**: Provides a collection of audio effects and mastering tools to polish and finalize tracks.
|
||||
- **Key Benefits**:
|
||||
- Wide range of effects for dynamic and spatial processing.
|
||||
- Mastering tools available to ensure tracks are balanced and distribution-ready.
|
||||
|
||||
#### Synthesis & Virtual Instruments: Helm
|
||||
- **Role**: Advanced synthesizer for creating custom sounds and textures.
|
||||
- **Key Benefits**:
|
||||
- Versatile sound design tool with a broad spectrum of synthesis capabilities.
|
||||
- Integrates as a plugin within Ardour, offering a seamless production workflow.
|
||||
|
||||
#### Drum Programming: Hydrogen
|
||||
- **Role**: Specialized drum machine for detailed drum pattern creation and editing.
|
||||
- **Key Benefits**:
|
||||
- Intuitive interface for crafting complex rhythms.
|
||||
- Can be synced with Ardour through JACK for a unified production process.
|
||||
|
||||
### Workflow Integration & Efficiency
|
||||
- **JACK Audio Connection Kit**: Crucial for routing audio and MIDI between applications, ensuring a flexible and integrated production workflow.
|
||||
- **Plugin Exploration**: Diversify your sound palette by incorporating additional open-source and commercial LV2 or VST plugins.
|
||||
- **Continuous Learning**: Engage with the community through forums and tutorials, and experiment with new production techniques to refine your skills.
|
||||
|
||||
### Ensuring a Streamlined Setup
|
||||
- To maintain a minimal physical device footprint while maximizing functionality:
|
||||
- Prioritize versatile, high-quality equipment that serves multiple functions.
|
||||
- Consider the potential for future expansions or adjustments based on evolving production needs.
|
||||
- Regularly review and optimize your workflow to ensure that your setup remains efficient and aligned with your creative goals.
|
||||
|
||||
### Conclusion
|
||||
This guide outlines a powerful, Linux-based music production setup tailored to your specific needs for remixing, beat making, and vocal manipulation. By effectively utilizing the described tools and integrating them into a cohesive workflow, you can achieve professional-quality productions that fully express your creative vision.
|
||||
|
||||
---
|
||||
|
||||
Creating a powerful Digital Audio Workstation (DAW) setup on Linux, specifically for beat making, remixing, and vocal extraction, involves leveraging a suite of tools each chosen for their strengths in different aspects of music production. Here's a comprehensive reference guide to building out your DAW with the capabilities of each tool identified:
|
||||
|
||||
### Core DAW for Recording, Editing, and Mixing
|
||||
|
||||
**Ardour**
|
||||
- **Capabilities**:
|
||||
- Multitrack recording and editing of audio and MIDI.
|
||||
- Comprehensive mixing console with automation and plugin support.
|
||||
- Support for a wide range of audio plugins: LV2, VST, LADSPA, and AU.
|
||||
- MIDI sequencing and editing, including support for virtual instruments.
|
||||
- **Usage**: Ardour serves as the central hub for your DAW, handling recording, complex editing, arrangement, and mixing tasks. It's your go-to for integrating various elements of your projects, from instrumental tracks to vocals.
|
||||
|
||||
### Beat Making and Electronic Music Composition
|
||||
|
||||
**LMMS (Linux MultiMedia Studio)**
|
||||
- **Capabilities**:
|
||||
- Beat making with built-in drum machines and samplers.
|
||||
- Synthesis with various synthesizers for creating electronic sounds.
|
||||
- Piano Roll for MIDI editing and composition.
|
||||
- VST and LADSPA plugin support for additional instruments and effects.
|
||||
- Built-in samples and presets.
|
||||
- **Usage**: LMMS is particularly useful for creating beats, synthesizing new sounds, and arranging electronic music compositions. It’s ideal for the initial stages of music production, especially for electronic genres.
|
||||
|
||||
### Vocal and Stem Separation
|
||||
|
||||
**Spleeter by Deezer**
|
||||
- **Capabilities**:
|
||||
- Uses machine learning to separate tracks into stems: vocals, drums, bass, and others.
|
||||
- Can separate audio files into two, four, or five stems.
|
||||
- Operates from the command line for efficient batch processing.
|
||||
- **Usage**: Use Spleeter for extracting vocals from tracks for remixing or sampling purposes. It’s also valuable for creating acapellas and instrumentals for DJ sets or live performances.
|
||||
|
||||
### Effects and Mastering
|
||||
|
||||
**Calf Studio Gear**
|
||||
- **Capabilities**:
|
||||
- A comprehensive collection of audio effects and mastering tools.
|
||||
- Includes EQs, compressors, reverbs, delays, modulation effects, and more.
|
||||
- GUI for easy control and manipulation of effects.
|
||||
- **Usage**: Integrate Calf Studio Gear with Ardour for applying professional-grade effects during mixing. The tools can also be used for mastering tasks to polish the final mix.
|
||||
|
||||
### MIDI and Virtual Instrumentation
|
||||
|
||||
**Qsynth / FluidSynth**
|
||||
- **Capabilities**:
|
||||
- SoundFont synthesizer for playing back MIDI files or live MIDI input.
|
||||
- GUI (Qsynth) for easy management of SoundFonts and settings.
|
||||
- Can be used standalone or integrated with DAWs like Ardour.
|
||||
- **Usage**: Enhance your projects with virtual instruments using Qsynth/FluidSynth, especially useful for genres requiring orchestral or synthesized sounds not readily available from live recording.
|
||||
|
||||
### Integration and Workflow
|
||||
|
||||
- **Ardour as the Hub**: Use Ardour for bringing together elements from LMMS and vocal tracks processed by Spleeter, applying effects via Calf Studio Gear, and incorporating virtual instruments through Qsynth/FluidSynth.
|
||||
- **Spleeter for Preprocessing**: Before mixing and mastering in Ardour, preprocess tracks with Spleeter to isolate vocals or other desired stems.
|
||||
- **LMMS for Creation**: Start your projects in LMMS to lay down beats and synth lines, then export stems or individual tracks for further processing and integration in Ardour.
|
||||
- **Effects and Mastering with Calf**: Utilize Calf Studio Gear within Ardour to apply effects and perform basic mastering, ensuring your project is sonically cohesive and polished.
|
||||
|
||||
### Additional Tools and Resources
|
||||
|
||||
- **JACK Audio Connection Kit**: Essential for routing audio and MIDI between applications in real-time, enhancing the flexibility of your DAW setup.
|
||||
- **Community Support and Tutorials**: Both Ardour and LMMS have active communities with forums, tutorials, and video content available to help you get started and solve any issues you encounter.
|
||||
|
||||
### Conclusion
|
||||
|
||||
This setup provides a robust foundation for a wide range of music production tasks on Linux, from beat making and remixing to vocal extraction and mixing/mastering. By understanding and leveraging the strengths of each tool, you can create a powerful and flexible DAW environment tailored to your specific music production needs.
|
||||
113
docs/tech_docs/linux/lxc.md
Normal file
113
docs/tech_docs/linux/lxc.md
Normal file
@@ -0,0 +1,113 @@
|
||||
Certainly! Here's a concise LXC and cgroups administration reference guide using the 80/20 rule, focusing on the most essential concepts and commands:
|
||||
|
||||
LXC and Cgroups Administration Reference Guide
|
||||
|
||||
1. Installing LXC
|
||||
- Ubuntu/Debian: `sudo apt-get install lxc`
|
||||
- CentOS/RHEL: `sudo yum install lxc`
|
||||
|
||||
2. Configuring LXC
|
||||
- Configuration file: `/etc/lxc/default.conf`
|
||||
- Network configuration: `/etc/lxc/lxc-usernet`
|
||||
|
||||
3. Creating and Managing Containers
|
||||
- Create a container: `sudo lxc-create -n <container-name> -t <template>`
|
||||
- Start a container: `sudo lxc-start -n <container-name>`
|
||||
- Stop a container: `sudo lxc-stop -n <container-name>`
|
||||
- Destroy a container: `sudo lxc-destroy -n <container-name>`
|
||||
- List containers: `sudo lxc-ls`
|
||||
|
||||
4. Accessing Containers
|
||||
- Attach to a container: `sudo lxc-attach -n <container-name>`
|
||||
- Execute a command in a container: `sudo lxc-attach -n <container-name> -- <command>`
|
||||
|
||||
5. Configuring Cgroups
|
||||
- Cgroups v1 mount point: `/sys/fs/cgroup`
|
||||
- Cgroups v2 mount point: `/sys/fs/cgroup/unified`
|
||||
- Enable/disable controllers: `/sys/fs/cgroup/<controller>/cgroup.subtree_control`
|
||||
|
||||
6. Managing Container Resources with Cgroups
|
||||
- CPU limits: `lxc.cgroup.cpu.shares`, `lxc.cgroup.cpu.cfs_quota_us`
|
||||
- Memory limits: `lxc.cgroup.memory.limit_in_bytes`, `lxc.cgroup.memory.memsw.limit_in_bytes`
|
||||
- Block I/O limits: `lxc.cgroup.blkio.weight`, `lxc.cgroup.blkio.throttle.read_bps_device`
|
||||
- Network limits: `lxc.cgroup.net_cls.classid`, `lxc.cgroup.net_prio.ifpriomap`
|
||||
|
||||
7. Monitoring Container Resource Usage
|
||||
- CPU usage: `lxc-cgroup -n <container-name> cpuacct.usage`
|
||||
- Memory usage: `lxc-cgroup -n <container-name> memory.usage_in_bytes`
|
||||
- Block I/O usage: `lxc-cgroup -n <container-name> blkio.throttle.io_service_bytes`
|
||||
|
||||
8. Troubleshooting
|
||||
- Check container status: `sudo lxc-info -n <container-name>`
|
||||
- View container logs: `sudo lxc-info -n <container-name> --log-file=<log-file>`
|
||||
- Inspect container configuration: `sudo lxc-config -n <container-name> show`
|
||||
|
||||
9. Security Best Practices
|
||||
- Run containers as unprivileged users
|
||||
- Use AppArmor or SELinux profiles
|
||||
- Set resource limits to prevent DoS attacks
|
||||
- Keep LXC and the host system updated
|
||||
|
||||
10. Integration with Orchestration Tools
|
||||
- Use container orchestration tools like Kubernetes or Docker Swarm for managing LXC containers at scale
|
||||
- Understand how orchestration tools leverage cgroups for resource management and scheduling
|
||||
|
||||
This reference guide covers the essential aspects of LXC and cgroups administration, providing you with the commands and concepts that you'll use most frequently. Keep in mind that there are more advanced features and configurations available, but mastering these fundamentals will allow you to handle the majority of common administration tasks efficiently.
|
||||
|
||||
---
|
||||
|
||||
# LXC CLI Cheatsheet
|
||||
|
||||
## Container Management
|
||||
- _Usage:_ Useful for day-to-day container management tasks like checking container status, executing commands inside containers, and getting detailed information.
|
||||
- `lxc list -c n,s,4,image.description:image`
|
||||
_Description:_ Lists containers with specific columns like name, state, IPv4 address, and image description.
|
||||
- `lxc info <container-name>`
|
||||
_Description:_ Displays detailed information about a specific container.
|
||||
_Example:_ `lxc info mycontainer`
|
||||
- `lxc exec <container-name> -- <command>`
|
||||
_Description:_ Executes a command inside the specified container.
|
||||
_Example:_ `lxc exec mycontainer -- bash`
|
||||
|
||||
## Image Management
|
||||
- _Usage:_ Important for understanding what images are available and for selecting the right image for container deployment.
|
||||
- `lxc image list`
|
||||
_Description:_ Lists all available images.
|
||||
- `lxc image alias list <repository>: <tag>`
|
||||
_Description:_ Lists all aliases for an image in a repository.
|
||||
_Example:_ `lxc image alias list ubuntu: '20.04'`
|
||||
|
||||
## Networking
|
||||
- _Usage:_ Essential for setting up and troubleshooting container networking, ensuring containers can communicate with each other and the outside world.
|
||||
- `lxc network list`
|
||||
_Description:_ Lists all networks.
|
||||
- `lxc network show <network-name>`
|
||||
_Description:_ Shows detailed information about a specific network.
|
||||
_Example:_ `lxc network show lxdbr0`
|
||||
|
||||
## Advanced Container Operations
|
||||
- _Usage:_ Advanced features that allow for more complex container management, like cloning containers, and managing container states and backups.
|
||||
- `lxc launch <image-name>`
|
||||
_Description:_ Launches a new container from the specified image.
|
||||
_Examples:_ `lxc launch ubuntu:20.04`, `lxc launch images:alpine/3.13`
|
||||
- `lxc copy <source-container> <destination-container>`
|
||||
_Description:_ Copies a container to a new container.
|
||||
- `lxc snapshot <container-name>`
|
||||
_Description:_ Creates a snapshot of a container.
|
||||
- `lxc restore <container-name> <snapshot-name>`
|
||||
_Description:_ Restores a container from a specified snapshot.
|
||||
|
||||
## File Management
|
||||
- _Usage:_ Useful for deploying configuration files or scripts inside containers.
|
||||
- `lxc file push <source-path> <container-name>/<destination-path>`
|
||||
_Description:_ Pushes a file from the host to the container.
|
||||
|
||||
## Troubleshooting and Help
|
||||
- _Usage:_ Crucial for diagnosing and resolving issues with containers and processes.
|
||||
- `lxc --help`
|
||||
_Description:_ Displays help for LXC commands.
|
||||
- `ps -ef | grep <process-name>`
|
||||
_Description:_ Finds processes related to a specific name, useful for troubleshooting.
|
||||
_Example:_ `ps -ef | grep dnsmasq`
|
||||
|
||||
> **Note:** Replace placeholders like `<container-name>`, `<network-name>`, and `<image-name>` with actual names when using the commands.
|
||||
Reference in New Issue
Block a user