Format & Partition USB Drive Command line / Terminal :the simple way:

Linux Systems Guides
  • First and most importantly, we need to locate the correct drive. In a terminal session (command line), type:

    Try to type the commands in, instead of copy/paste, this helps with retention for next time.


    In other words, ‘List Block Devices’

    This command will list all block devices, hard drives, USB drives, scsi devices, RAID devices and their partitions.

    In this case here is what is displayed:

    NAME                        MAJ:MIN RM   SIZE RO TYPE   MOUNTPOINT
    sda                           8:0    0 465.8G  0 disk   
    └─isw_ccheigfjba_Volume0    254:0    0 931.5G  0 dmraid 
      ├─isw_ccheigfjba_Volume01 254:1    0 893.8G  0 dmraid /
      └─isw_ccheigfjba_Volume05 254:2    0  37.7G  0 dmraid 
    sdb                           8:16   0 465.8G  0 disk   
    └─isw_ccheigfjba_Volume0    254:0    0 931.5G  0 dmraid 
      ├─isw_ccheigfjba_Volume01 254:1    0 893.8G  0 dmraid /
      └─isw_ccheigfjba_Volume05 254:2    0  37.7G  0 dmraid 
    sdc                           8:32   1   1.9G  0 disk   
    └─sdc1                        8:33   1   1.1G  0 part 

    We can see ‘sda’ and ‘sdb’ are defined as raid members. Where sdc is a disk, which has one partition ‘sdc1’ ,which is in this case the USB drive we will be working with.

    Unmount the device

    umount /dev/sdc

    The USB device will not always be automatically mounted upon insertion, even if it shows as a block device. Depending on previous configurations, so don’t be concerned after running the command if you are told ‘umount: /dev/sdc: not mounted’

    At this point we are ready to format and partition the device in one command.

    NOTE: Continuing will permanently Destroy and Delete anything on the chosen device.

    Format USB Drive:

    mkfs.msdos -n 'random' -I /dev/sdc

    Where: mkfs.msdos = make file system & partition as msdos

    -n = Name the Volume

    -I = Partitioning within the block device itself

    /dev = Device

    /dev/sdc = the device we are formatting and partitioning

    The output:

    mkfs.fat 3.0.27 (2014-11-12)
    mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows

    If you are greeted with something to the effect of:

    mkfs.msdos: unable to open /dev/sdc: Device or resource busy

    Chances are your USB drive is write protected.

    You may be required to install hdparm:

    sudo apt-get install hdparm

    Then remove the write protection by running:

    sudo hdparm -r0 /dev/sdc


     setting readonly to 0 (off)
     readonly      =  0 (off)

    If your still getting errors and care not to save Any data on the drive, you can write zeros to the device by running:

    sudo dd if=/dev/zero of=/dev/sdc  bs=512  count=1

    Then go ahead and try formatting again.

    After a successful format, the version, and a warning should be self explanatory.

    At this point, the device should have been formatted and partitioned, time depends on how large and complex the partitioning scheme.

    In formatting this particular device, a 2GB USB drive, the time was ~3 seconds, for reference.

    There are many other type of partitions we can use, such as the following, however in this case, I’m going to be transferring an ISO from one (linux) machine to a non networked (windows) machine. Where msdos is highly compatible.

    Examples of file system types: mkfs.msdos; mkfs.ext2; mkfs.ext3; mkfs.ext4; mkfs.vfat and many more depending on the intended application.

    You can re-list all block devices to see your final result. Only this time, we want to verify the file system type, so we add the ‘-f’ flag

    lsblk -f
    NAME                        FSTYPE          LABEL  UUID                                 MOUNTPOINT
    sda                         isw_raid_member                                             
      ├─isw_ccheigfjba_Volume01 ext4                   5ba67ace-a42d-404b-a6dc-eb2a73e8429c /
      └─isw_ccheigfjba_Volume05 swap                   66b5b874-e24c-45df-a669-4b205affa2fc 
    sdb                         isw_raid_member                                             
      ├─isw_ccheigfjba_Volume01 ext4                   5ba67ace-a42d-404b-a6dc-eb2a73e8429c /
      └─isw_ccheigfjba_Volume05 swap                   66b5b874-e24c-45df-a669-4b205affa2fc 
    sdc                         vfat            random 2B9E-2530                            /media/rick/random

    As we can see, now /dev/sdc has been formatted and partitioned vfat, which is essentially the same as FAT32 and allows the use of longer volume names, post WIN95.

    In other words, it’s compatible for basic storage on linux, as well as readable on windows versions supplied in the last ~20 years.


  • rickR

    Re: Set script to executable

    755 - Owner has all permissions, and Group and Other can read and execute 700 - Owner has all permissions 644 - Owner can read and write, and Group and Other can read 600 - Owner can read and write 775 - Owner can read and write, and Group and Other can read 770 - Owner and Group have all, and Other can read and execute 750 - Owner has all permissions, and Group can read and execute 664 - Owner and Group can read and write, and Other can just read 660 - Owner and Group can read and write 640 - Owner can read and write, and Group can read
    read more

  • rickR

    Re: Find or Locate a file or extension command line

    Install locate command linux: Use your sudo command!

    apt install mlocate


    apt-get install mlocate


    yum install mlocate

    Update the database:


    Depending on the size of the complete filesystem this could take a few minutes

    After the database has been populated:

    locate mariadb

    Where mariadb is the word your looking for

    read more

  • rickR

    These commands are if you are in the scripts directory! Changing permissions can be done from anywhere in the structure.

    Such as :

    chmod +x /opt/so-elastic-agent_linux_amd64

    Terminal chmod to executable :

    Permissions prior to chmod : chmod.png

    chmod +x so-elastic-agent_linux_amd64

    Permissions following chmod : chmod-x.png

    Then execute :


    Insure you are acting as the user you just gave permissions to (the file owner) or at least have sudo privileges

    To make the script un-executable:

    chmod -x so-elastic-agent_linux_amd64
    read more

  • rickR
    sudo apt install lsb-release ca-certificates curl -y

    GPG key and repo for php 7.4

    sudo curl -sSLo /usr/share/keyrings/ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/] $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

    Update the system with the new repository in place

    sudo apt update

    Install the dependencies for OwnCloud (LAMP ect) Certbot, or LetsEncrypt is being installed as well, if you are using this installation in a public domain

    sudo apt install apache2 mariadb-server imagemagick certbot python3-certbot-apache smbclient redis-server unzip rsync libapache2-mod-php7.4 php7.4 php7.4-intl php7.4-mysql php7.4-mbstring php7.4-imagick php7.4-igbinary php7.4-gmp php7.4-bcmath php7.4-curl php7.4-gd php7.4-zip php7.4-imap php7.4-ldap php7.4-bz2 php7.4-ssh2 php7.4-common php7.4-json php7.4-xml php7.4-dev php7.4-apcu php7.4-redis libsmbclient-dev php-pear php-phpseclib

    Enable apache2 and then verify it’s status

    sudo systemctl is-enabled apache2 sudo systemctl status apache2

    oc-apache.png Enable MariaDB and verify status

    sudo systemctl is-enabled mariadb sudo systemctl status mariadb

    oc-maria.png Enable Redis and verify status

    sudo systemctl is-enabled redis sudo systemctl status redis


    Configure default php version

    sudo update-alternatives --config php

    oc-php-alternatives.png oc-php-ver.png

    Configure php OwnCloud dependencies

    sudo update-alternatives --set phar /usr/bin/phar7.4 sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4 sudo update-alternatives --set phpize /usr/bin/phpize7.4 sudo update-alternatives --set php-config /usr/bin/php-config7.4

    Upgrade Pear to OwnCloud4 requirements

    sudo mkdir -p /tmp/pear/cache sudo pear upgrade --force --alldeps


    sudo pear clear-cache sudo pear update-channels sudo pear upgrade --force sudo pear upgrade-all

    Verify Pear version

    pear version


    Configure MariaDB

    sudo mariadb-secure-installation


    Log into MariaDB

    sudo mariadb -u root -p

    Create the OwnCloud database:

    This is where many go wrong, we do not use ‘password’ we replace password, with our own password.

    CREATE DATABASE owncloud;

    We just created a database with the name owncloud

    CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'password';

    We just created a database user called owncloud

    GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;

    We just allowed user owncloud, full privileges on database owncloud


    Now verify what we have just done:

    SHOW GRANTS FOR 'owncloud'@'localhost';

    You can see below I named this database ‘oc’ and the ‘oc’ user has privileges on database ‘owncloud’



    wget the OwnCloud source

    cd /var/www wget

    Grab sha256 to verify the download


    BEFORE installing, verify if the download of OwnCloud matches what the OwnCloud team wanted you to have, this is important always.

    sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2

    Out put should say ‘OK’ if everything matches.

    Change ownership of the directory to www-data user.

    sudo chown -R www-data:www-data /var/www/owncloud

    Configure Vhost for OwnCloud

    This will open a new file in 'sites-available and name this file ‘owncloud.conf’

    Change the ServerName and ServerAlias, as well as log file names, to whatever your domain is. There are many ways to do this keep in mind.

    sudo nano /etc/apache2/sites-available/owncloud.conf <VirtualHost *:80> ServerName oc ServerAlias www.oc DocumentRoot /var/www/owncloud ErrorLog ${APACHE_LOG_DIR}/ CustomLog ${APACHE_LOG_DIR}/ combined Alias /owncloud "/var/www/owncloud/" <Directory /var/www/owncloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/owncloud SetEnv HTTP_HOME /var/www/owncloud </Directory> </VirtualHost>

    Enable and verify the owncloud vhost

    sudo a2ensite owncloud.conf sudo apachectl configtest


    Now install OwnCloud

    Change the database name, user, and password to whatever you named the OwnCloud database earlier;

    Change the ‘admin user’ and ‘admin pass’ to whatever you want the new OwnCloud admin account to be.

    sudo -u www-data /var/www/owncloud/occ maintenance:install \ --database "mysql" \ --database-name "owncloud" \ --database-user "owncloud"\ --database-pass "password" \ --admin-user "admin" \ --admin-pass "your new owncloud admin password"

    Edit the OwnCloud config file to add the domain you used earlier in the Apache2 vhost file:

    sudo nano /var/www/owncloud/config/config.php 'trusted_domains' => array ( 0 => 'localhost', 1 => 'whatever your domain is goes here', ),

    Personally I restart the server at this point, which will restart all services. Then visit the domain / IP of your settings and you should see the OwnCloud login page. Use the credentials you setup for the admin user.

    System cron setting:

    sudo crontab -u www-data -e */15 * * * * /usr/bin/php -f /var/www/owncloud/occ system:cron

    Memcache with Redis we installed earlier:

    sudo nano /var/www/owncloud/config/config.php 'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ],

    Go restart the server again and enjoy!

    read more

  • rickR

    Comment out in=>

    /usr/lib/python3/dist-packages/middlewared/plugins/vm/ # elif flags['intel_vmx']: # if vcpus > 1 and flags['unrestricted_guest'] is False: # verrors.add(f'{schema_name}.vcpus', 'Only one Virtual CPU is allowed in this system.') # elif flags['amd_rvi']: # if vcpus > 1 and flags['amd_asids'] is False: # verrors.add( # f'{schema_name}.vcpus', 'Only one virtual CPU is allowed in this system.' # )

    At this point we must comment out each time we update the system.

    read more